Expert Advisor (EA) ต่างจากไฟล์ดาวน์โหลดอื่นๆ บนเว็บไซต์นี้ — อินดิเคเตอร์ทำได้แค่พล็อตกราฟหรือแจ้งเตือน แต่ EA จะส่งคำสั่งเทรดแทนคุณจริงๆ 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
- RiskRewardRatio (ค่าเริ่มต้น 2.0) — ระยะ Take Profit = ระยะ Stop Loss (จากระดับ fractal ที่ถูกทะลุ) × ค่านี้
- RiskPercent (ค่าเริ่มต้น 1.0) — เปอร์เซ็นต์ของยอดเงินในบัญชีที่ยอมเสี่ยงต่อการเทรด ใช้คำนวณขนาด lot เทียบกับระยะ Stop Loss ที่มาจาก fractal จะถูกข้ามหาก
UseFixedLotเปิดใช้งานอยู่ - UseFixedLot (ค่าเริ่มต้น false) — เมื่อเปิดใช้งาน จะเทรดด้วยขนาด lot คงที่แทนการคำนวณจาก
RiskPercent - FixedLotSize (ค่าเริ่มต้น 0.01) — ขนาด lot ที่ใช้เมื่อเปิด
UseFixedLot - MaxSpreadPoints (ค่าเริ่มต้น 30) — ข้ามการเข้าเทรดใหม่หาก spread กว้างกว่าค่านี้ ประเด็นเดียวกับที่กล่าวถึงในSpread และ Slippage
- MagicNumber (ค่าเริ่มต้น 20260730) — ติดแท็กทุกคำสั่งที่ EA ตัวนี้เปิด เพื่อให้ระบบนับและจัดการโพซิชันไม่ไปยุ่งกับเทรดที่เปิดเองด้วยมือหรือของ EA ตัวอื่น
- EnableTrading — สวิตช์เปิด/ปิดหลัก ใช้พักการทำงานของ EA ได้โดยไม่ต้องถอดออกจากกราฟ
สังเกตว่ามีอะไรหายไปเมื่อเทียบกับ 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 ติดตั้งในโฟลเดอร์ที่ต่างจากอินดิเคเตอร์ — เป็นขั้นตอนที่คนพลาดบ่อยที่สุด
- ดาวน์โหลดไฟล์ด้านล่างสำหรับ platform ของคุณ
- เปิด MetaTrader → คลิก
File→Open Data Folder - นำไฟล์ไปวางในโฟลเดอร์
MQL4/Experts(MetaTrader 4) หรือMQL5/Experts(MetaTrader 5) — ไม่ใช่ โฟลเดอร์ Indicators - รีสตาร์ท MetaTrader แล้วลาก EA จากหน้าต่าง Navigator ไปวางบนกราฟ
- เปิดใช้งาน AutoTrading (MT4) หรือ Algo Trading (MT5) บนแถบเครื่องมือ — EA จะไม่ส่งคำสั่งเทรดใดๆ เลยถ้าปิดสวิตช์นี้อยู่ แม้จะติดอยู่บนกราฟแล้วก็ตาม
- ตรวจสอบและปรับ parameter ในหน้าต่างตั้งค่าของ EA ก่อนยืนยัน
ข้อควรระวัง
ทดสอบบนบัญชีเดโมก่อนเสมอ ในสภาวะตลาดที่หลากหลาย ก่อนนำเงินจริงไปเสี่ยง — ผลงานที่ผ่านมา ไม่ว่าจาก backtest หรือบัญชีจริง ไม่เคยรับประกันผลลัพธ์ในอนาคต ไม่มีกลยุทธ์ใด ไม่ว่าจะอัตโนมัติหรือเทรดเอง ที่ชนะทุกครั้ง และ EA ตัวนี้สามารถขาดทุนในบางเทรดได้เช่นกัน EA แบบ breakout อย่างตัวนี้มักทำงานแย่ในตลาดไซด์เวย์หรือแกว่งตัวไร้ทิศทาง ตลาดที่ไม่มีเทรนด์ชัดเจนจะสร้าง fractal เล็กๆ ที่มีคุณค่าต่ำออกมาต่อเนื่อง และการทะลุขึ้นเพียงเล็กน้อยเหนือ up-fractal ที่อ่อนแอ (หรือทะลุลงต่ำกว่า down-fractal ที่อ่อนแอ) อาจกระตุ้นให้เข้าเทรดแล้วราคากลับตัวภายในไม่กี่แท่งเทียน ทำให้เทรดนั้นโดน stop ออกด้วยการขาดทุนอย่างรวดเร็วก่อนที่จะมีการเคลื่อนไหวที่แท้จริงเกิดขึ้น fractal ที่เกิดขึ้นระหว่างการพักตัวแคบๆ อย่างเงียบสงบ ไม่ได้มีคุณภาพเทียบเท่ากับ fractal ที่เกิดขึ้นที่จุดสูงสุดของสวิงหลายแท่งเทียนที่แท้จริง แม้ทั้งสองแบบจะปรากฏเป็นลูกศรที่เหมือนกันทุกประการก็ตาม — ตัว EA เองไม่สามารถแยกความแตกต่างนี้ได้ เพราะมันเทรดทุกระดับ fractal ที่ได้รับการยืนยันในลักษณะเดียวกันหมด ควรพิจารณาใช้ร่วมกับการอ่านเทรนด์กับตลาดไซด์เวย์ก่อนเปิดใช้งานบนบัญชีจริง และจำไว้เสมอถึงความล่าช้าในการยืนยันที่กล่าวไปข้างต้น เพราะ fractal จะล็อกค่าไว้สองแท่งเทียนหลังจากเกิดขึ้นจริง ระดับที่กำลังถูกใช้เทรดจึงเก่ากว่าปัจจุบันเล็กน้อยเสมอในเวลาที่เกิดความพยายาม breakout ไฟล์ทั้งสองเป็น source code — เปิดและตรวจสอบให้ครบถ้วน และเข้าใจว่า parameter แต่ละตัวทำอะไร ก่อนนำไปใช้งาน เนื้อหานี้เป็นการศึกษาทั่วไป ไม่ใช่คำแนะนำการลงทุนส่วนบุคคล
ดาวน์โหลด EA
วิธีติดตั้ง — MetaTrader 4
- ดาวน์โหลดไฟล์
fractals-breakout-ea.mq4ด้านล่าง - เปิด MetaTrader 4 → คลิก
File→Open Data Folder - นำไฟล์ไปวางในโฟลเดอร์
MQL4/Experts - รีสตาร์ท MetaTrader 4 แล้วลาก EA จากหน้าต่าง Navigator ไปวางบนกราฟ
วิธีติดตั้ง — MetaTrader 5
- ดาวน์โหลดไฟล์
fractals-breakout-ea.mq5ด้านล่าง - เปิด MetaTrader 5 → คลิก
File→Open Data Folder - นำไฟล์ไปวางในโฟลเดอร์
MQL5/Experts - รีสตาร์ท MetaTrader 5 แล้วลาก EA จากหน้าต่าง Navigator ไปวางบนกราฟ
ไฟล์ทั้งสองเป็น source code — โปรดเปิดและตรวจสอบโค้ดทั้งหมดก่อนใช้งาน เพื่อความปลอดภัยของคุณเอง