ในบรรดาไฟล์ที่แจกบนเว็บนี้ EA คือประเภทเดียวที่ลงมือเองได้ — อินดิเคเตอร์บรรยายตลาด แต่ Expert Advisor เทรดตลาดจริง ๆ EA ฟรีตัวนี้เทรดด้วยกลยุทธ์ breakout ที่สร้างขึ้นจาก Fractals ทั้งหมด โดยติดตามจุดสวิงสูง (swing high) และสวิงต่ำ (swing low) ที่เพิ่งได้รับการยืนยันล่าสุดบนกราฟ เข้าเทรดเมื่อราคาปิดทะลุจุดใดจุดหนึ่ง คำนวณ Stop Loss, Take Profit และขนาดโพซิชันให้อัตโนมัติ และจัดการทีละ 1 โพซิชันเท่านั้น มีจุดหนึ่งที่ทำให้ EA ตัวนี้ต่างจาก EA ตัวอื่นบนเว็บไซต์นี้อย่างชัดเจน คือ Stop Loss ของมันไม่ได้คำนวณจาก ATR เลย — แต่ใช้ระดับ Fractal ที่ถูกทะลุนั้นเองแทน ด้วยเหตุผลที่จะอธิบายด้านล่าง
กลยุทธ์ทำงานอย่างไร
Fractal คือจุดสวิงสูงหรือสวิงต่ำในระดับพื้นที่ (local) ที่ได้รับการยืนยันแล้ว — เป็นรูปแบบ 5 แท่งเทียน ที่แท่งกลางมีจุดสูงสุด (หรือต่ำสุด) สูงกว่า (หรือต่ำกว่า) แท่งเทียนสองแท่งทั้งสองฝั่ง ตรงตามที่บทเรียน Fractalsของเว็บไซต์นี้อธิบายไว้ EA ตัวนี้ตรวจจับรูปแบบเดียวกันนี้ทุกครั้งที่แท่งเทียนปิดสมบูรณ์ และเก็บค่าไว้ในหน่วยความจำสองค่า คือ ราคาของ up-fractal ที่เพิ่งได้รับการยืนยันล่าสุด และราคาของ down-fractal ที่เพิ่งได้รับการยืนยันล่าสุด ทุกครั้งที่มี fractal ใหม่ได้รับการยืนยัน ค่าที่เก็บไว้จะถูกเขียนทับ ส่วนในช่วงระหว่างการยืนยันแต่ละครั้ง EA จะยึดค่าล่าสุดที่เคยเห็นไว้ต่อไป
ตรรกะการเข้าเทรดเป็น breakout ตรงไปตรงมาเทียบกับสองค่าที่เก็บไว้นั้น สัญญาณ BUY จะเกิดขึ้นเมื่อราคาปิดของแท่งเทียนที่เพิ่งปิดสมบูรณ์ล่าสุดทะลุขึ้นเหนือราคา up-fractal ที่เก็บไว้ — ราคาที่ทะลุขึ้นเหนือจุดสวิงสูงที่ได้รับการยืนยันแล้ว ส่วนสัญญาณ SELL เกิดจากเงื่อนไขตรงข้าม คือ ราคาปิดของแท่งเทียนที่ปิดสมบูรณ์ทะลุลงต่ำกว่าราคา down-fractal ที่เก็บไว้ ซึ่งเป็นการทะลุลงต่ำกว่าจุดสวิงต่ำที่รู้จักแล้ว สิ่งสำคัญคือ EA ตัวนี้สืบทอดความล่าช้าในการยืนยัน (confirmation lag) แบบเดียวกับที่ตัวอินดิเคเตอร์ Fractals มีอยู่ในตัวเอง เพราะ fractal จะได้รับการยืนยันไม่ได้จนกว่าจะผ่านไปสองแท่งเทียนหลังจากจุดสวิงที่เป็นตัวเลือกนั้น ระดับที่ EA กำลังใช้เทรดจึงถูกล็อกไว้ตั้งแต่สองสามแท่งเทียนก่อนที่จะเกิดความพยายาม breakout เสมอ ไม่เคยเป็นแบบเรียลไทม์ โค้ดสะท้อนเรื่องนี้ตรงๆ ทั้ง MT4 และ MT5 อ่านค่า iFractals(...) ที่ shift 2 ซึ่งเป็นความล่าช้าเดียวกับที่อินดิเคเตอร์แจ้งเตือน Fractals ของเว็บไซต์นี้ใช้ ทำให้ระดับที่เก็บไว้เป็นจุดสวิงที่ได้รับการยืนยันจริงเสมอ ไม่ใช่การเดาจุดที่ยังก่อตัวไม่เสร็จ
Stop Loss, Take Profit และขนาดโพซิชัน
นี่คือหัวข้อที่สำคัญที่สุดสำหรับการเข้าใจ EA ตัวนี้โดยเฉพาะ EA ตัวอื่นส่วนใหญ่บนเว็บไซต์นี้คำนวณ Stop Loss จาก ATR ซึ่งเป็น stop ที่ปรับตามความผันผวน กว้างขึ้นในคู่เงินที่ผันผวนมาก และแคบลงในช่วงที่นิ่ง EA ตัวนี้ไม่ได้ทำแบบนั้น และไม่ใช่เพราะพลาดไป Fractal เป็นระดับที่จับต้องได้และผูกติดกับราคาจริงอยู่แล้ว สร้างขึ้นจากโครงสร้างของตลาดเอง — มันคือราคาที่แน่นอนซึ่งจุดสวิงสูงหรือสวิงต่ำได้เกิดขึ้นจริง ยืนยันด้วยแท่งเทียนจริง 5 แท่ง ไม่ใช่ตัวเลขประมาณการทางสถิติว่าราคามักเคลื่อนไหวไปไกลแค่ไหน การเอา ATR มาซ้อนทับบนระบบที่ใช้ Fractal อยู่แล้วจะเป็นเพียงความเห็นที่สองที่แยกออกจากกันเกี่ยวกับระยะ stop ที่ fractal ได้กำหนดไว้โดยตรงอยู่แล้ว
ดังนั้นเมื่อ EA เปิด BUY จาก breakout ที่ได้รับการยืนยันแล้ว Stop Loss จะถูกวางไว้ตรงระดับ up-fractal ที่ถูกทะลุพอดี — จุดสวิงสูงที่ราคาเพิ่งปิดทะลุขึ้นไป ซึ่งตอนนี้ถูกตีความใหม่เป็นแนวรับใหม่ใต้เทรดนั้น ตรรกะแบบเดียวกันใช้กับ SELL คือ Stop Loss จะอยู่ที่ระดับ down-fractal ที่ถูกทะลุ จุดสวิงต่ำที่ราคาเพิ่งปิดทะลุลงไป ซึ่งตอนนี้ถูกมองเป็นแนวต้านใหม่เหนือเทรดนั้น ส่วน Take Profit จะถูกตั้งเป็นสัดส่วนคูณของระยะ Stop Loss นั้น — RiskRewardRatio ค่าเริ่มต้น 2.0 — หมายความว่าเมื่อตั้งค่า 2.0 เป้าหมายกำไรจะอยู่ไกลจากจุดเข้าเป็นสองเท่าของระยะ stop ทำให้ทุกเทรดมีสัดส่วนความเสี่ยงต่อผลตอบแทนคงที่และรู้ล่วงหน้าได้ ไม่ว่าระยะ stop ที่คำนวณจาก fractal ในเทรดนั้นๆ จะกว้างหรือแคบแค่ไหนก็ตาม
ขนาดโพซิชันคำนวณด้วยวิธีเดียวกับ EA ตัวอื่นทุกตัวบนเว็บไซต์นี้ คือ RiskPercent ของยอดเงินในบัญชี (ค่าเริ่มต้น 1.0%) หารด้วยระยะ Stop Loss แปลงผ่านมูลค่า tick ของสัญลักษณ์นั้น และปรับให้เข้ากับ lot step ของ broker — ด้วยวิธีเดียวกับตัวอย่างการคำนวณในพื้นฐานการบริหารความเสี่ยง stop ที่กว้างขึ้นจาก fractal จะได้ขนาด lot เล็กลง และ stop ที่แคบลงจะได้ขนาด lot ใหญ่ขึ้น ทำให้ความเสี่ยงเป็นเงินดอลลาร์ต่อเทรดคงที่แม้ระยะ stop จะแตกต่างกันไปในแต่ละ breakout ขึ้นอยู่กับว่าจุดสวิงที่ถูกทะลุอยู่ห่างจากราคาเข้าเทรดแค่ไหน มี input UseFixedLot พร้อมค่า FixedLotSize ให้เลือกใช้เป็นทางเลือกสำหรับเทรดเดอร์ที่ต้องการเทรดด้วยขนาด lot คงที่แทนที่จะคำนวณตามความเสี่ยง นอกจากนี้ยังมีการตรวจสอบความปลอดภัยในตัว หากระยะ Stop Loss ที่คำนวณได้ออกมาเป็นศูนย์หรือติดลบ EA จะข้ามเทรดนั้นไปเลย แทนที่จะเปิดโพซิชันโดยไม่มี stop ที่มีความหมาย
เงื่อนไขการเข้าเทรด
- BUY — ราคาปิดของแท่งเทียนที่เพิ่งปิดสมบูรณ์ล่าสุด ทะลุจากระดับต่ำกว่าหรือเท่ากับ ขึ้นไปเหนือระดับ up-fractal ที่เก็บไว้ โดย Stop Loss จะถูกวางไว้ที่ระดับ up-fractal นั้น
- SELL — ราคาปิดของแท่งเทียนที่เพิ่งปิดสมบูรณ์ล่าสุด ทะลุจากระดับสูงกว่าหรือเท่ากับ ลงไปต่ำกว่าระดับ down-fractal ที่เก็บไว้ โดย Stop Loss จะถูกวางไว้ที่ระดับ down-fractal นั้น
EA จะประเมินเงื่อนไขเหล่านี้เพียงครั้งเดียวต่อแท่งเทียนใหม่เท่านั้น (ติดตามจากเวลาเปิดของแท่งเทียนปัจจุบัน) ไม่ใช่ทุก tick ดังนั้น breakout หนึ่งครั้งจะไม่สั่งเทรดซ้ำหลายครั้งภายในแท่งเทียนเดียวกัน EA เปิดได้ครั้งละ 1 โพซิชันเท่านั้น นับและกรองด้วย magic number ของตัวเอง (MagicNumber ค่าเริ่มต้น 20260730) จึงไม่มีทางสับสนระหว่างโพซิชันที่ตัวเองเปิดกับโพซิชันที่คุณเปิดเองด้วยมือ หรือของ EA ตัวอื่นในบัญชีเดียวกัน ก่อนเปิดเทรดทุกครั้ง EA ยังตรวจสอบ spread ปัจจุบันเทียบกับ MaxSpreadPoints และข้ามการเข้าเทรดไปเลยหากตลาดมีสภาพคล่องต่ำเกินไปในขณะนั้น สุดท้าย การตรวจสอบ stop ที่ผิดปกติที่กล่าวไปข้างต้น หมายความว่าเทรดจะถูกส่งออกไปก็ต่อเมื่อระยะ Stop Loss ที่คำนวณได้เป็นตัวเลขบวกจริงๆ เท่านั้น — สัญญาณที่เกิดขึ้นในทางเทคนิคแต่คำนวณระยะ stop ได้เป็นศูนย์หรือติดลบจะถูกทิ้งไป ไม่ถูกส่งไปยัง broker
Parameters
อินพุตอื่น ๆ ทั้งหมดเป็นของ risk engine กลางที่อธิบายไว้ในหน้า EA ทั้งวิธีคำนวณ stop และเป้ากำไร ขนาดโพซิชันจาก RiskPercent และตัวตรวจความปลอดภัยที่คุมทุกคำสั่ง ออร์เดอร์ของ EA ตัวนี้ใช้ magic number 20260730
สังเกตว่ามีอะไรหายไปเมื่อเทียบกับ EA ตัวอื่นส่วนใหญ่บนเว็บไซต์นี้ — ไม่มี ATRPeriod และไม่มี ATRMultiplier เลย และไม่มี period สำหรับการตรวจจับ fractal เองด้วย เพราะ (ตามที่บทเรียน Fractalsอธิบายไว้) รูปแบบนี้ถูกกำหนดตายตัวที่ 5 แท่งเทียนโดยนิยาม ไม่สามารถปรับแต่งได้ นี่ไม่ใช่การตัดทอนให้ง่ายขึ้นหรือความผิดพลาด แต่เป็นผลโดยตรงจากการออกแบบที่อธิบายไว้ในหัวข้อถัดไป
ทำไม EA ตัวนี้ใช้ระดับ Fractal ที่ถูกทะลุแทน ATR
EA ตัวอื่นส่วนใหญ่บนเว็บไซต์นี้ — รวมถึง ea-trend-following — คำนวณ Stop Loss เป็น ATRMultiplier × ATR ซึ่งเป็นระยะคงที่ที่คำนวณใหม่ตอนเปิดเทรดแต่ละครั้ง มาจากสถิติความผันผวนล้วนๆ โดยไม่อ้างอิงถึงระดับราคาจริงที่อยู่ใกล้เคียงเลย EA ตัวนี้ทำงานต่างออกไปโดยตั้งใจ เช่นเดียวกับ Parabolic SAR Trend EA และ Ichimoku Breakout EA และเหตุผลนี้ควรอธิบายให้ชัดเจน
ATR ตอบคำถามเดียว คือ เมื่อพิจารณาความผันผวนล่าสุด stop ควรอยู่ห่างแค่ไหน มันไม่มีความเห็นใดๆ เลยว่าแนวรับหรือแนวต้านที่แท้จริงอยู่ตรงไหนบนกราฟ — มันเป็นระยะที่ได้มาจากค่าเฉลี่ยทางสถิติล้วนๆ ไม่รับรู้โครงสร้างที่แท้จริงของตลาด ส่วน Fractal ตอบคำถามที่แตกต่างออกไปโดยสิ้นเชิง และในกรณีนี้เกี่ยวข้องมากกว่า คือ ตลาดเองกลับตัวจริงๆ ที่ตรงไหนครั้งล่าสุด up-fractal ที่ถูกทะลุในเทรด BUY ไม่ใช่การประมาณการ — มันคือราคาที่แท้จริงซึ่งแท่งเทียนจริง 5 แท่งได้พิสูจน์แล้วว่ามีจุดสวิงสูงอยู่ตรงนั้น การวาง Stop Loss ไว้ที่ระดับนั้นพอดี หมายความว่า stop อยู่ตรงจุดที่แนวคิดของเทรดนั้นจะถูกพิสูจน์ว่าผิดพอดี หากราคาร่วงกลับลงมาทะลุระดับที่เพิ่งทะลุขึ้นไป breakout นั้นก็ล้มเหลวแล้ว และระดับที่ควรทำหน้าที่เป็นแนวรับใหม่ก็ไม่สามารถยืนได้ ซึ่งเป็นจังหวะที่ควรออกจากเทรดพอดี ไม่ว่าระยะที่คำนวณจาก ATR จะบอกอะไรก็ตาม
การรัน ATR ควบคู่ไปกับ stop ที่อิงจาก fractal ในกรณีนี้จะไม่ทำให้ stop ดีขึ้นอย่างมีนัยสำคัญ — มันจะเป็นเพียงความเห็นที่สองที่แยกออกจากกันเกี่ยวกับระยะ stop ที่ fractal ได้กำหนดไว้โดยตรงอยู่แล้ว โดยใช้โครงสร้างราคาเดียวกับที่สร้างสัญญาณเข้าเทรดตั้งแต่แรก ไม่มีอะไรให้ ATR เพิ่มเติมได้เลย เพราะ fractal นั้นจับต้องได้และผูกติดกับราคาจริง ในขณะที่ ATR เป็นนามธรรมและได้มาจากค่าเฉลี่ย การประนีประนอมทั้งสองความเห็นเข้าด้วยกันทุกครั้งที่ไม่ตรงกันจะเพิ่มความซับซ้อนโดยไม่ได้เพิ่มการป้องกันความเสี่ยงเลย นี่คือเหตุผลที่ EA ตัวนี้ใช้ระดับ fractal ซ้ำแทนที่จะไปหาการคำนวณที่สองแยกต่างหาก
ข้อควรระวัง
ก่อนเสี่ยงเงินจริง ทดลองบนบัญชีเดโมให้ครอบคลุมตลาดหลายแบบเสียก่อน — สถิติย้อนหลังไม่เคยรับประกันสิ่งที่จะเกิดขึ้นต่อไป และ EA ตัวนี้ย่อมมีเทรดที่ขาดทุนปะปนอยู่แน่นอน EA แบบ breakout อย่างตัวนี้มักทำงานแย่ในตลาดไซด์เวย์หรือแกว่งตัวไร้ทิศทาง ตลาดที่ไม่มีเทรนด์ชัดเจนจะสร้าง fractal เล็กๆ ที่มีคุณค่าต่ำออกมาต่อเนื่อง และการทะลุขึ้นเพียงเล็กน้อยเหนือ up-fractal ที่อ่อนแอ (หรือทะลุลงต่ำกว่า down-fractal ที่อ่อนแอ) อาจกระตุ้นให้เข้าเทรดแล้วราคากลับตัวภายในไม่กี่แท่งเทียน ทำให้เทรดนั้นโดน stop ออกด้วยการขาดทุนอย่างรวดเร็วก่อนที่จะมีการเคลื่อนไหวที่แท้จริงเกิดขึ้น fractal ที่เกิดขึ้นระหว่างการพักตัวแคบๆ อย่างเงียบสงบ ไม่ได้มีคุณภาพเทียบเท่ากับ fractal ที่เกิดขึ้นที่จุดสูงสุดของสวิงหลายแท่งเทียนที่แท้จริง แม้ทั้งสองแบบจะปรากฏเป็นลูกศรที่เหมือนกันทุกประการก็ตาม — ตัว EA เองไม่สามารถแยกความแตกต่างนี้ได้ เพราะมันเทรดทุกระดับ fractal ที่ได้รับการยืนยันในลักษณะเดียวกันหมด ควรพิจารณาใช้ร่วมกับการอ่านเทรนด์กับตลาดไซด์เวย์ก่อนเปิดใช้งานบนบัญชีจริง และจำไว้เสมอถึงความล่าช้าในการยืนยันที่กล่าวไปข้างต้น เพราะ fractal จะล็อกค่าไว้สองแท่งเทียนหลังจากเกิดขึ้นจริง ระดับที่กำลังถูกใช้เทรดจึงเก่ากว่าปัจจุบันเล็กน้อยเสมอในเวลาที่เกิดความพยายาม breakout เพราะทุกไฟล์เป็นโอเพนซอร์ส คุณอ่านโค้ดเองได้ ถ้ายังบอกไม่ได้ว่าพารามิเตอร์ตัวไหนทำอะไร นั่นคือสัญญาณว่ายังไม่ควรใช้ โปรดถือว่าบทเรียนนี้เป็นสื่อการเรียนรู้ทั่วไป ไม่ใช่คำแนะนำการลงทุนเฉพาะบุคคล