เมื่อทดสอบ EA ที่สร้างขึ้นในปี 2019 ที่ชื่อ "PF1.85" ด้วยข้อมูล 16 ปี ซ้ำอีกครั้ง แม้จะไม่มีต้นทุน แต่ก็ไม่สามารถชนะได้สำหรับทั้ง 4 คู่
0.72〜1.00 PF ที่ต้นทุน 0 สำหรับ 4 คู่ | 24 วิธี ชุดค่าใช้จ่ายในการเปิด/ปิดกำไร ขาดทุน ทั้งหมด PF1 ต่ำกว่า | t=0.58〜1.07 การปรับปรุงที่ได้ผลเพียงอย่างเดียว ไม่สามารถแยกแยะจากความบังเอิญ |
ฉันคือผู้สร้างอินดิเคเตอร์ MT4/MT5 และขายผ่าน GogoJungle ภายใน lab.aiueo
ในปี 2019 ฉันสร้าง EA (โปรแกรมอัตโนมัติในการซื้อขาย) หนึ่งตัว มันเป็นการเทรดแบบสายบริเวณ Bolinger Band
ในโฟลเดอร์ยังมีรูปภาพผลลัพธ์การทดสอบของช่วงนั้นอยู่ มีการซื้อขาย 1,560 ครั้งใน USD/JPY PF (กำไรสะสม ÷ ขาดทุนสะสม) 1.85 และ max drawdown 7%
ถ้าฉันในตอนนี้ ฉันจะสงสัยตัวเลขนี้ก่อน เมื่อเดือนสิงหาคม EA ตัวนี้ถูกรันซ้ำด้วยข้อมูลประมาณ 16 ปีครึ่ง เป็นผลลัพธ์ในวันนี้
จะเขียนสรุปไว้ก่อน
EA ในยุคนั้น
กฎง่ายๆ
- เมื่อราคาปิดอยู่นอก Bollinger Band (ระยะ 8, ±2σ) ให้เข้าในทิศตรงข้าม
- เงื่อนไขการเข้า มี 2 อย่าง
- ช่วงความกว้างของแท่งก่อนหน้ากว้างกว่า 8 แท่งก่อนหน้าสุด
- มีจุดจุดหางกลับในทิศทางกลับกันที่มากพอ
- จุดหยุดขาดทุน 20pips, ส่วนกำไร 50pips
- อีกหนึ่งการปิดการเทรด: ระบุว่าคู่ไหนของแถบBand ตอนนี้อยู่ด้วยหมายเลข 0–5 แล้วถ moved one step ในด้านไม่ดี จะปิด
นี่คือภาพผลการทดสอบในสมัยนั้น
รูปภาพถูกเรียงลำดับด้วย Drawdown จากน้อยไป USD/JPY อยู่ในแถวบนสุด ส่วนล่างมีสกุลเงินที่ PF ต่ำกว่า 1 ปรากฏอยู่ด้วย ภาพไม่ได้แสดงช่วงการทดสอบหรือวิธีการทดสอบ
เงื่อนไขที่รันใหม่
เขียนกฎเดิมด้วย Python แล้วรันด้วยข้อมูลราคาที่อยู่ใน MT4 ของ Ti〇n FX
- คู่สกุลเงิน: USD/JPY, EUR/USD, GBP/USD, USD/CHF
- Timeframe และช่วงเวลา: 4 ชั่วโมง, ธันวาคม 2009 – กรกฎาคม 2026 (ประมาณ 16 ปีครึ่ง)
- วิธีเข้า: ตัดสินใจเมื่อแท่งแต่ละแท่งปิด และเข้าในราคานเปิดแท่งถัดไป
- การหยุดขาดทุน/กำไร: ตรวจดูว่าสูงสุด-ต่ำสุดในแท่งนั้นๆ เคยแตะหรือไม่ ถ้าแตะทั้งสองด้านในแท่งเดียวกันให้ถือว่าหยุดขาดทุนมาก่อน (เข้มงวด)
- ต้นทุน: ลบสเปรด (0/0.5/1/2 pips)
มีส่วนหนึ่งที่เปลี่ยนจาก EA ดั้งเดิม คือ เงื่อนไขของจุดหาง
EA ดั้งเดิมกำหนดความยาวหางไว้ที่ “0.0004” สำหรับ EUR/USD จะเท่ากับ 4 pips แต่สำหรับ USD/JPY ก็อยู่ที่ 0.04 pips ซึ่งแทบไม่มีผลต่อเงื่อนไข จากนั้นจึงปรับให้ทั้ง 4 คู่มีค่าเท่ากันที่ 4 pips
ทั้งนี้ USD/JPY ที่ยังคง 0.0004 ก็ได้ PF 0.86 เมื่อสเปรดเป็น 0 ดังนั้นผลสรุปจึงไม่เปลี่ยนแปลง
ผลลัพธ์: เมื่อทำให้ต้นทุนเป็น 0 ก็ยังไม่ชนะ
| คู่สกุลเงิน | จำนวนการเทรด | อัตราชนะ | PF (สเปรด 0) | PF (สเปรด 1 pips) |
|---|---|---|---|---|
| USD/JPY | 406 ครั้ง | 31.5% | 0.83 | 0.74 |
| EUR/USD | 719 ครั้ง | 28.8% | 0.82 | 0.76 |
| GBP/USD | 670 ครั้ง | 30.7% | 1.00 | 0.92 |
| USD/CHF | 416 ครั้ง | 29.3% | 0.72 | 0.66 |
การซื้อขายและอัตราชนะเป็นค่าที่ได้เมื่อสเปรดเป็น 0
ค่า 1.00 ของ GBP/USD ในช่วง 16 ปีครึ่งรวมทั้งหมดคือ −13.7 pips โดยรวมเป็นศูนย์นิดหน่อย
การดูส่วนประกอบของการปิดการเทรดชัดเจน ทำให้เห็นเหตุผล ใน USD/JPY (สเปรด 1 pips) มีการหยุดขาดทุน 260 ครั้ง และกำไร 66 ครั้ง ก่อนที่กำไร 50 pips จะถึง จุดหยุดขาดทุน 20 pips ถูกแตะ
เงื่อนไข 2 ข้อและการปิดการค้าบน Band ก็ไม่ดีเหมือนเดิม
เงื่อนไขการเข้า
ถ้าตัดสองเงื่อนไขออกไป การซื้อขายจะเพิ่มขึ้นมากกว่า 2 เท่า PF ใน 3 คู่จาก 4 คู่จะดีขึ้นหากละเงื่อนไขออก
เงื่อนไขคือการลดจำนวนเทรดลงเท่านั้น
การปิดการค้าบนสาย Band
ถ้าตัดการปิดบน Band ออกไป แล้วให้หยุดขาดทุนกับกำไรเท่านั้น อัตราชนะ USD/JPY จะลดลงจาก 29.8% เป็น 22.1% แต่ PF แทบไม่เปลี่ยน หรือแย่ลง บางคู่จะ PF สูงกว่าถ้าตัดออก
ポイント
ถ้าปรับการหยุดขาดทุนกับกำไร 24 แบบก็แพ้ทั้งหมด
ปรับชุดค่าระหว่างการหยุดขาดทุนกับกำไรเป็น 6 แบบ (20/50, 20/20, 30/30, 50/20, 40/100, 20/100) แล้วรันกับ 4 คู่ ผล PF ทุกคู่ยังต่ำกว่า 1
หากเปลี่ยนให้หยุดขาดทุน 50 และกำไร 20 อัตราชนะจะขึ้นถึง 57–65% แต่ PF ยังอยู่ระหว่าง 0.65–0.84
หากปรับการตั้งค่าเท่าไรก็ยังไม่ชนะ ปัญหาคือการออกแบบและการสร้าง
สิ่งที่ได้ผลเพียงอย่างเดียว: จำกัด เฉพาะทิศทางเดียวกับแนวโน้ม
มีวิธีที่ทำให้ดีขึ้นชัดเจนเพียงวิธีเดียว
เมื่อราคาใน TF 4 ชั่วโมงเหนือค่าเฉลี่ยเคลื่อนที่ (50, 100, 200) ให้ซื้อเฉพาะทิศทางขึ้น; เมื่ออยู่ด้านล่าง ให้ขายเท่านั้น จำกัดการกลับแนวเป็นการซื้อในการย่อรอและขายในการรีบกลับ
| คู่สกุลเงิน | ก่อนจำกัด | 50 บล | 100 บล | 200 บล |
|---|---|---|---|---|
| USD/JPY | 0.74 | 0.90 | 1.02 | 1.12 |
| EUR/USD | 0.76 | 0.83 | 0.85 | 0.82 |
| GBP/USD | 0.92 | 1.18 | 1.14 | 1.08 |
| USD/CHF | 0.66 | 0.85 | 0.74 | 0.70 |
ตัวเลขคือ PF และสเปรดคือ 1 pips
ทุก 4 คู่ดีขึ้นกว่าก่อนจำกัด USD/JPY (200 บล) และ GBP/USD (50 บล) PF เกิน 1
แต่ทำไมถึงไม่พัฒนาเป็นสินค้า
สองคู่ที่ PF เกิน 1 ได้ถูกตรวจอย่างละเอียด
- จำนวนเทรดน้อย: 16 ปีครึ่ง USD/JPY 145 ครั้ง, GBP/USD 205 ครั้ง ประมาณ 9–12 ครั้งต่อปี
- กำไรต่อครั้งน้อย: เฉลี่ย +1.40 pips และ +2.35 pips ค่าของการเติมในช่วงเวลาสเปรดกว้างขึ้นหรือราคาสั่งซื้อไม่ตรงพอจะหายไป
- แยกความบังเอิญไม่ได้: ค่า t ของความเปลี่ยนแปลงกำไร/ขาดทุนต่อรอบคือ 0.58 และ 1.07 ซึ่งไม่ถึง 2 ที่บอกว่าไม่ใช่ความบังเอิญ
- ความยาวที่ดีที่สุดต่างกันตามคู่: USD/JPY 200 บล, GBP/USD 50 บล; EUR/USD และ USD/CHF ไม่สามารถ PF ถึง 1 ได้ในความยาวใดๆ คงเห็นได้ชัดหลังจากเลือกความยาวที่ดีที่สุด
ในภาพรวม แนวทางถูกต้อง แต่ด้วยตัวเองไม่พอที่จะพัฒนาเป็นสินค้า
ทำไมในสมัยนั้น PF1.85 ถึงดูดี
เงื่อนไขทดสอบในสมัยนั้นไม่มีบันทึก ดังนั้นจึงเป็นการประมาณได้สองอย่าง
หนึ่งคือ วิธีการทดสอบ ใน MT4 และ MT5 tester สามารถเลือกความละเอียดการจำลองการเคลื่อนที่ของราคาภายในแท่งได้ หากใช้วิธีหยาบ บางกรณีการหยุดขาดทุนกับกำไรภายในแท่งอาจต่างจากความเป็นจริง
อีกหนึ่งคือ “การคัดกรอง” ใน EA EA นี้ไม่ได้ตรวจทุกครั้งที่ราคาขยับ แต่ทุกๆ 500 ครั้ง การจำลองการเคลื่อนไรของราคาขึ้นอยู่กับวิธีทดสอบ จึงส่งผลต่อเวลาเข้าออก
ถึง EA เดียวกัน แต่ตัวเลขขึ้นกับวิธีทดสอบ
ยังมีภาพการปรับปรุงเดือนเมษายน 2019 ที่เหลืออยู่ โดยอันดับ 1 เทรด 17 ครั้ง PF 3.03
ใน 17 ครั้งนี้ ไม่ใช่ความบังเอิญ และถึงอย่างนั้นการตั้งค่าที่ EA มีในตอนนั้นคือค่าเดียวกับตารางนี้
ตอนนี้ ฉันจะทำอะไรเป็นอย่างแรก
- รันด้วยสเปรด 0 หากยังแพ้ แสดงว่าไม่มีกำไรจากการปรับไปข้างหน้าก่อน
- ตรวจสอบว่าจุดสูงสุด-ต่ำสุดในแท่งทำให้หยุดขาดทุนหรือไม่
- ไม่เชื่อผลลัพธ์ที่ได้จากจำนวนครั้งน้อย
- อย่ามองแค่บรรทัดที่ดีที่สุด ใช้ดูบรรทัดที่แย่ด้วยในตารางเดียวกัน
- การเลือกค่าที่ดีที่สุดภายหลังควรนำมาพิจารณาอย่างระมัดระวัง
บทความนี้เป็นบันทึกการตรวจสอบ EA ที่ฉันสร้างขึ้นในอดีต ไม่ได้แนะนำวิธีการซื้อขายใดๆ และตัวเลขที่ปรากฏไม่ใช่การรับประกันผลในอนาคต การตรวจสอบใช้วิธีการเดียวกันที่สร้างด้วย Python และอาจไม่ตรงกับผลลัพธ์ของ MT4 Strategy Tester การตัดสินใจในการลงทุนควรทำด้วยความรับผิดชอบของคุณเอง
ขอบคุณที่อ่านจนจบ