[EA制作・検証] วิธีค้นหาความเหนือกว่า
สวัสดีครับ นี่คือ 2pay
เพื่อให้ข้อมูลล่าสุด ผมได้เสร็จสิ้นอาวุธลับ (Indicator) แล้ว จึงจะขอนำเสนออาวุธลับนี้และวิธีการสกัดจุดที่มีความได้เปรียบ
การเทรดโดยมีความได้เปรียบในการเดิมพันมีความสำคัญมาก
สมมติ RR1:1 และมีอัตราการแพ้ 49% ชนะ 51% แม้จะมีความต่างนิดหน่อยแต่การมีอัตราชนะสูงกว่าจะทำให้ทรัพย์สินเติบโต
เมื่อสะสมกำไรเล็กๆ ซ้ำๆ ตามกฎจำนวนมาก จะสามารถอธิบายได้ทางคณิตศาสตร์ว่าเพิ่มขึ้นตามกฎนี้
หนึ่งในแนวทางในการค้นหาจุดที่มีความได้เปรียบคือ “ตรวจสอบว่าเวลาต่างๆ มีความได้เปรียบหรือไม่”
วิธีทำค่อนข้างเรียบง่าย เมื่อทำ backtest แล้วแต่ละแท่งใหม่จะปิดสถานะเดิมและเปิดสถานะใหม่อีกครั้ง
กำหนดระยะเวลาการถือครองให้เป็นหนึ่งแท่งเทียน และหากสเกลคือ H1 จะทำการปิดสถานะและเปิดใหม่ทุกชั่วโมงตรงเวลา 00 นาที
และเมื่อการทดสอบเสร็จในแต่ละช่วงเวลา รายชั่วโมง รายนาที รายสัปดาห์ รายเดือน จำนวนวันซื้อขาย วันโกโตะ วันต้นเดือน-ปลายเดือน วันหยุด และเหตุการณ์ต่างๆ จะถูกสรุปเป็นกลุ่มๆ แล้วแสดงผลสำหรับ Buy และ Sell ตามลำดับ
แม้จะมีความรู้สึกว่าเรียกผลลัพธ์ได้รวดเร็วหากใช้ pythonAPI แต่ผมกำลังศึกษาและยังไม่สามารถใช้งานได้ดี จึงคิดจะทำเป็นอินดิเคเตอร์ด้วย MQL
อธิบายการทำงานของอินดิเคเตอร์แบบคร่าวๆ ว่า
① อ่านข้อมูลดาต้า 4 ธาตุระยะยาวจากอดีตถึงปัจจุบัน
② เมื่อถึงเวลาที่ระบุให้เข้าเทรด แล้วเมื่อครบระยะเวลาการถือครองที่กำหนดให้ปิดสถานะ (= backtest จำลอง)
③ หลังจากปิดเพียงแท่งเดียวให้เปลี่ยนเวลาเข้าเทรดและระยะเวลาถือครองแล้วทำซ้ำข้อ ②
④ ทำไฮต์แมปผลลัพธ์เพื่อให้เห็นการกระจายเชิงภาพชัดเจน
ปรับเงื่อนไขข้อ ③ให้อัตโนมัติ และทำการทดสอบแบบครอบคลุมโดยให้เวลาทั้งหมด 0-23 ชั่วโมง × ระยะเวลาการถือครอง 1 ชั่วโมง
เนื่องจากบาร์เป็น M1 ขั้นต่ำ หากนับตามวันจะมีรูปแบบรวมสูงสุด 1440 นาที × 1440 นาที = 2,073,600 วิธีที่สามารถตรวจสอบได้
หากช่วงทดสอบประมาณ 15 ปี การทดสอบแต่ละรอบประมาณ 10 วินาที จึงคาดว่าจะมีการทดสอบประมาณ 2 ล้านครั้ง ใช้เวลาประมาณ 240 วัน
ด้วยเงื่อนไขภายในที่เปลี่ยนแปลงและสกุลเงินที่เปลี่ยนไป จำเป็นต้องหมุนรอบ 30 นาที (48×48=2,304 วิธี) เพื่อดูการกระจายแบบกว้าง จากนั้นจึงตรวจสอบจุดที่ดีเป็นพิเศษอย่างละเอียด
ถ้าเราลดลงประมาณนี้ สามารถตรวจสอบข้อมูลคู่เงินได้ครบถ้วนภายใน 3 วัน ด้วยการเปลี่ยนวันที่และเงื่อนไขดัชนีต่างๆ
นอกจากนี้ยังสามารถเปลี่ยนสเปรดตามเวลา และตรวจสอบผลต่างของประสิทธิภาพเมื่อมี SL หรือไม่มี SL พร้อมกัน เพื่อค้นหาแนวโน้มที่แตกต่างกัน
ในภายหลังจะทำ EA และรันกับ backtest ปกติ เพื่อให้ความแตกต่างกับข้อมูล Tick จริงน้อยลง จึงจะทำการตรวจสอบล่วงหน้าอย่างเข้มงวด
ด้านล่างคือผลจากการรันอินดิเคเตอร์
จุดกลุ่มที่เรียงกันบนกราฟมีลักษณะเป็นวัตถุปุ่มแต่ละอัน ซึ่งเมื่อคลิกจะสามารถดูคะแนนโดยละเอียดได้
แกนแนวตั้งคือเวลาการเข้าเทรด (ชั่วโมง) และแกนแนวตั้งคือระยะเวลาการถือครอง (ชั่วโมง) โดยได้มาจากช่วงทุกๆ 30 นาที (ช่วง 0 โมงถ้าสเปรดกว้างจะถูกตัดออก)
สีของกราฟถูกระบายตามค่า PF สีเทาคือจุดแบ่งกำไรขาดทุน (=1.0) สีแดงยิ่งเข้มแสดงถึงการขาดทุนมาก สีเขียวยิ่งเข้มแสดงถึงกำไรสูง และสีน้ำเงินยิ่งเข้มแสดงถึงกำไรเมื่อวาง SL มาก
สีเขียวกับสีน้ำเงินผสมกัน เมื่อทั้งสองให้ผลลัพธ์ที่ดีจะกลายเป็นสีฟ้าอ่อน
เงื่อนไขด้านล่างเป็น "วันจันทร์เท่านั้น" ซึ่งไม่พบความได้เปรียบที่เด่นชัดมากนัก อย่างไรก็ตามมีความเป็นไปได้ที่หากถือครองประมาณ 30 นาทีตั้งแต่ 23:00 จะได้ผลกำไรบ้าง
มุมบนขวามีเส้นทแยงสีแดงซึ่งเป็นข่าวรบกวนที่เกิดขึ้นช่วงข้ามพิกัด 0 โมง
เช่นเดียวกันให้ลองเปรียบเทียบเฉพาะ “วันพฤหัสบดีเท่านั้น”
เมื่อเทียบกับวันจันทร์ พบว่าพื้นที่สีน้ำฟ้าเด่นชัดกว้างขึ้น
ด้านขวาของเส้นทแยงสีแดง (ช่วง 0 โมง) มีผลลัพธ์ที่ดีกว่ากระจายอยู่ด้านล่าง นั่นหมายถึงวันศุกร์ชนะมากกว่า
ตัวตนของเรื่องนี้คือวันโกโนะ (โกโตะ) ซึ่งจากข้อบังคับล่วงหน้าชี้ให้เห็นว่าความได้เปรียบรวมอยู่มากในวันศุกร์
ยิ่งพื้นที่ที่มีความได้เปรียบสูง (สีฟ้าน้ำเงิน) กว้างเท่าไหร่ แสดงว่าเงินทุนและนักลงทุนจำนวนมากให้ความสนใจมากขึ้น
ความได้เปรียบเล็กๆ ในวันจันทร์เวลา 23:00 อาจเป็นไปได้ว่าเป็นการกระทำของ hedge funds หรือผู้ลงทุนรายบุคคลที่ทำการจัดตำแหน่ง ปิดความเสี่ยง หรือเปิดการเทรดคู่
ขึ้นอยู่กับขนาดของความได้เปรียบในช่วงนั้น จำเป็นต้องปรับขีดจำกัดจำนวนหุ้นที่ทำการเปิด
นอกจากการสร้างฮีตแมพแล้ว ยังมีฟังก์ชันบันทึกผลลัพธ์ที่ดีลงในล็อกด้วย
เพียงติดตั้งอินดิเคเตอร์แล้วปล่อยไว้ ผลลัพธ์ที่ดีจะรวบรวมเป็นจำนวนร้อยหรือพันในระดับสูงมาก
จากสิ่งนี้ เราสามารถคัดเลือกเฉพาะสิ่งที่มีนัยสำคัญทางสถิติ (ไม่ใช่แบบสุ่ม) หรือเลือกสิ่งที่สอดคล้องกับการกระจายความเสี่ยงของพอร์ตโฟลิโอ หรือที่สอดคล้องกับตารางเวลาการเทรด (ช่วงเวลาที่เงินไม่ได้ถูกใช้งาน)
พูดง่ายๆ คือ คุณสามารถเลือกสิ่งที่มีประสิทธิภาพจริงและเหมาะกับตัวคุณ เพื่อประกอบการใช้งานได้อย่างอิสระ
แม้จะมีประสิทธิภาพสูงแต่ความถี่การเทรดน้อย หากคุณรวม 10–20 ชิ้นก็จะได้พอร์ตโฟลิโอที่สมเหตุสมผล
// ---
คราวนี้ผมมุ่งเน้นที่วิธีค้นหาความได้เปรียบเป็นหัวข้อ
โมเดลนี้ยังเรียบง่ายเกินไป แต่กองทุนเชิง quantitative กำลังใช้งานขั้นตอนแบบนี้ในการวิเคราะห์ข้อมูลขนาดใหญ่
ในอุตสาหกรรมมักใช้เรียนรู้ของเครื่อง (machine learning) เพื่อวิเคราะห์และปรับน้ำหนักของฤดูกาลและปัจจัยสิ่งแวดล้อมเข้ากับพอร์ตโฟลิโอ กระบวนการทั้งหมดนี้ถูกทำให้เป็นอัตโนมัติบ้างแล้ว
แน่นอนว่าไม่สามารถไปถึงระดับนั้นได้ทั้งหมด แต่คิดว่า การเข้าใกล้วิธีการของมืออาชีพจะนำไปสู่ความสำเร็จ
ขอบคุณที่อ่านจนถึงบรรทัดสุดท้าย
// ---
ของแถม
เป็นฟิลเตอร์ที่จำกัดเฉพาะวันที่ประกาศ GDP ของสหรัฐ
เมื่อเปรียบเทียบกับฟิลเตอร์วัน จะเห็นชัดว่าได้เปรียบมากกว่า (พื้นที่สีน้ำฟ้าคือ PF2.0 ขึ้นไป)
ค่าตัวบ่งชี้ถูกเผยแพร่โดยองค์กรที่ต่างกัน และนักลงทุนที่ตอบสนองก็เปลี่ยนไปตามนั้น
หากไม่สรุปเป็นกลุ่มแต่ให้ทีละรายการประกาศอย่างชัดเจน จะทำให้เสียงรบกวนของตลาดลดลง และฤดูกาลจะปรากฏชัดขึ้น
นักลงทุนหลากหลายประเภทจะทำการซื้อขายตามจังหวะของแต่ละรอบ ความทับซ้อนของจังหวะเวลาและการไม่ทับซ้อนกันจะทำให้ตลาดกลายเป็นสุ่ม
นักลงทุนภาครัฐและผู้ที่ต้องการซื้อจริงจะดำเนินการตามปฏิทินที่ไม่เป็นระเบียบ ดังนั้นการวิเคราะห์เชิงฟูเรียร์แบบง่ายๆ จึงไม่แสดงความได้เปรียบชัดเจน
// ---
ของแถม 2
เป็นฟิลเตอร์ที่จำกัดเฉพาะช่วงปลายเดือน
ช่วงเวลาญี่ปุ่นมีแนวโน้มขาย ในขณะที่ช่วงเวลายุโรปมีแนวโน้มซื้อ
อยากดูความผันผวนของเส้นกราฟทรงทางการเงิน จึงจะทำ EA สร้าง backtest ตามนี้
อินดิเคเตอร์ได้ทำการสรุปถึงช่วงเวลาอันที่เหลือไว้เป็นฟอร์เวิร์ดช่วงสมัครใช้งาน
ช่วง 2015–2021 มีช่วงที่ตกลง แต่โดยรวมยังคงเติบโต
ในขั้นตอนการวิเคราะห์นี้ สิ่งสำคัญคือมีความแนวโน้มที่ชัดเจนว่าอยู่ในทิศทางเดียว
สรุปคือช่วงเวลานี้มีแนวโน้มสูงขึ้น ดังนั้นจึงไม่ควรเปิดตำแหน่งขาย และเมื่อราคาพุ่งลงให้ซื้อ อินดิเคเตอร์ GC ส่งสัญญาณให้ซื้อ จะเข้ากันได้ดี