LearnForexHub
EA

EA: CCI Reversal Expert Advisor

เขียนโดย , ผู้ก่อตั้งและบรรณาธิการอัปเดตล่าสุด วิธีที่เราเขียนและตรวจทานบทเรียน

บนเว็บนี้มีไฟล์ให้โหลดหลายแบบ แต่มีเพียง EA เท่านั้นที่ทำงานเองได้ — อินดิเคเตอร์ได้แต่บอกใบ้ ในขณะที่ Expert Advisor ส่งคำสั่งซื้อขายจริง EA ฟรีตัวนี้เทรดด้วยกลยุทธ์แบบ mean-reversion เดียวที่โปร่งใส สร้างขึ้นจาก CCI โดยรอให้ CCI กลับตัวออกจากจุดสุดขั้วที่ +100/-100 แล้วเปิดเทรดพร้อม Stop Loss ที่คำนวณจาก ATR, Take Profit ที่เป็นสัดส่วนคูณของ RR และขนาดโพซิชันที่คำนวณตามความเสี่ยง — ทั้งหมดคำนวณให้อัตโนมัติ ไม่ต้องเฝ้ากราฟด้วยตัวเอง

กลยุทธ์ทำงานอย่างไร

สัญญาณที่ EA ตัวนี้ใช้เทรดเป็นตัวเดียวกับที่สอนไว้ในบทเรียน CCIของเว็บไซต์นี้ คือ CCI วัดว่าราคา "typical price" เบี่ยงเบนออกจากค่าเฉลี่ยเคลื่อนที่ของตัวมันเองไปไกลแค่ไหน โดยไม่มีเพดานหรือพื้นตายตัว ดังนั้นค่า -150 หรือ -220 ถือเป็นค่าปกติได้ในช่วงที่ราคาเคลื่อนไหวแรงๆ ไม่ใช่สัญญาณว่าอินดิเคเตอร์พัง จุดที่สำคัญสำหรับ EA ตัวนี้ไม่ใช่ตอนที่ CCI ไปถึง จุดสุดขั้ว แต่เป็นตอนที่ CCI กลับตัวทะลุผ่าน จุดนั้นออกมา สัญญาณ BUY จะเกิดขึ้นเมื่อ CCI (ค่าเริ่มต้น 14-period คำนวณจาก typical price) กลับตัวขึ้นทะลุ OversoldLevel (ค่าเริ่มต้น -100) หลังจากที่เคยอยู่ที่หรือต่ำกว่าระดับนั้นในแท่งเทียนก่อนหน้า — ไม่ใช่จังหวะที่ CCI เพิ่งลงต่ำกว่า -100 เป็นครั้งแรก แต่เป็นแท่งเทียนที่มันไต่กลับขึ้นเหนือเส้นนั้น ส่วนสัญญาณ SELL ก็สะท้อนกลับกัน คือ CCI กลับตัวลงทะลุ OverboughtLevel (ค่าเริ่มต้น +100) หลังจากเคยอยู่ที่หรือสูงกว่าระดับนั้น การเทรดตรงจุดที่แตะจุดสุดขั้วเลย แทนที่จะรอการกลับตัวออกมา เป็นความผิดพลาด classic ของผู้เริ่มต้นที่ใช้ oscillator แบบวัดจุดสุดขั้วทุกตัว — EA ตัวนี้ถูกออกแบบให้หลีกเลี่ยงความผิดพลาดนี้ในเชิงกลไก เพราะมันประเมินแค่เงื่อนไขการกลับตัวออกมาเท่านั้น และไม่มีทางสั่งเทรดในแท่งเทียนที่เพิ่งเข้า zone สุดขั้วเป็นครั้งแรก

Stop Loss, Take Profit และขนาดโพซิชัน

PriceTake Profit (TP)Stop Loss (SL)BUY+100-1000CCI (unbounded, typically -100 to +100)
Entry conditions: BUY when CCI crosses back above -100 out of the oversold extreme — SELL on the mirrored cross back below +100 — SL and TP are placed automatically from ATR

Stop Loss ของทุกเทรดคำนวณจาก ATR แทนที่จะเป็นระยะ pip คงที่ คือ ระยะ SL = ATR (14-period, ATRPeriod) × ATRMultiplier (ค่าเริ่มต้น 2.0) คู่เงินหรือ session ที่ผันผวนมากจะได้ stop ที่กว้างขึ้นอัตโนมัติ ส่วนช่วงที่นิ่งจะได้ stop ที่แคบลง — stop จะสะท้อนสิ่งที่ตลาดกำลังทำอยู่จริงๆ เสมอ แทนที่จะเป็นตัวเลขคงที่ตายตัวที่แคบเกินไปสำหรับบางคู่เงินและกว้างเกินไปสำหรับคู่เงินอื่น Take Profit จะถูกตั้งเป็น RiskRewardRatio (ค่าเริ่มต้น 2.0) เท่าของระยะ SL เดียวกันนั้น ทำให้ทุกเทรดที่ EA ตัวนี้เปิดมีสัดส่วนความเสี่ยงต่อผลตอบแทนคงที่และรู้ล่วงหน้าได้ ไม่ว่าจะรันบนคู่เงินหรือ timeframe ใดก็ตาม

ขนาดโพซิชันคำนวณด้วยวิธีเดียวกับที่สอนไว้ในพื้นฐานการบริหารความเสี่ยง คือ RiskPercent (ค่าเริ่มต้น 1.0%) ของยอดเงินในบัญชี หารด้วยระยะ Stop Loss และแปลงผ่านมูลค่า tick ของสัญลักษณ์นั้น จะได้ขนาด lot ที่ทำให้เทรดที่ขาดทุนสูญเสียเงินในสัดส่วนใกล้เคียงกันของบัญชี ไม่ว่าระยะ stop ที่คำนวณจาก ATR ในเทรดนั้นๆ จะกว้างหรือแคบแค่ไหนก็ตาม ผลลัพธ์จะถูกปรับให้เข้ากับ lot ขั้นต่ำ lot สูงสุด และ lot step ของ broker ก่อนส่งคำสั่งเทรด เทรดเดอร์ที่ต้องการเทรดด้วยขนาด lot คงที่โดยไม่สนใจยอดเงินในบัญชีหรือความกว้างของ stop สามารถเปิดใช้งาน UseFixedLot เพื่อใช้ค่า FixedLotSize แทนการคำนวณตามความเสี่ยงได้

เงื่อนไขการเข้าเทรด

  • BUY — CCI กลับตัวจากที่อยู่ที่หรือต่ำกว่าระดับ Oversold ขึ้นมาเหนือระดับนั้น (CCI ≤ -100 ในแท่งเทียนก่อนหน้าที่ปิดสมบูรณ์ และ > -100 ในแท่งเทียนปัจจุบัน)
  • SELL — CCI กลับตัวจากที่อยู่ที่หรือสูงกว่าระดับ Overbought ลงมาต่ำกว่าระดับนั้น (CCI ≥ +100 ในแท่งเทียนก่อนหน้าที่ปิดสมบูรณ์ และ < +100 ในแท่งเทียนปัจจุบัน)

นอกเหนือจากตัวสัญญาณเอง ยังมีกลไกความปลอดภัยหลายอย่างที่ทำให้ EA ทำงานได้อย่างเหมาะสมบนบัญชีจริง EA เปิดได้ ครั้งละ 1 โพซิชันเท่านั้น — ก่อนพิจารณาเปิดเทรดใหม่ มันจะนับโพซิชันที่เปิดอยู่ กรองด้วย symbol และ magic number แล้วข้ามสัญญาณไปเลยหากมีโพซิชันเปิดอยู่แล้ว ทุกคำสั่งที่มันเปิดจะถูกแท็กด้วย magic number ของตัวเอง (20260723) จึงไม่มีทางไปยุ่งกับเทรดที่เปิดเองด้วยมือหรือของ EA ตัวอื่นที่ใช้กราฟหรือบัญชีเดียวกัน มันประเมินเงื่อนไขการเข้าเทรด เพียงครั้งเดียวต่อแท่งเทียนใหม่เท่านั้น โดยติดตามเวลาของแท่งเทียนล่าสุดที่ประมวลผลไปแล้ว แทนที่จะตรวจสอบทุก tick ที่เข้ามา ทำให้การกลับตัวครั้งเดียวไม่สามารถสั่งเทรดซ้ำได้หลายครั้งก่อนแท่งเทียนจะปิด และก่อนส่งคำสั่งใดๆ มันจะตรวจสอบ spread ปัจจุบันเทียบกับ MaxSpreadPoints และข้ามการเข้าเทรดไปเลยหากตลาดมีสภาพคล่องต่ำเกินไปในขณะนั้น ประเด็นเดียวกับที่กล่าวถึงในSpread และ Slippage

Parameters

  • CCIPeriod (ค่าเริ่มต้น 14) — period ที่ใช้คำนวณ CCI จาก typical price (PRICE_TYPICAL) ค่าน้อยจะตอบสนองเร็วขึ้นและกลับตัวผ่านเส้น ±100 บ่อยขึ้น ค่ามากจะเรียบขึ้นและคัดกรองสัญญาณมากขึ้น
  • OversoldLevel (ค่าเริ่มต้น -100.0) — ระดับ CCI ด้านล่าง สัญญาณ BUY จะเกิดเมื่อ CCI กลับตัวขึ้นทะลุระดับนี้ หลังจากเคยอยู่ที่หรือต่ำกว่า
  • OverboughtLevel (ค่าเริ่มต้น 100.0) — ระดับ CCI ด้านบน สัญญาณ SELL จะเกิดเมื่อ CCI กลับตัวลงทะลุระดับนี้ หลังจากเคยอยู่ที่หรือสูงกว่า

อินพุตอื่น ๆ ทั้งหมดเป็นของ risk engine กลางที่อธิบายไว้ในหน้า EA ทั้งวิธีคำนวณ stop และเป้ากำไร ขนาดโพซิชันจาก RiskPercent และตัวตรวจความปลอดภัยที่คุมทุกคำสั่ง ออร์เดอร์ของ EA ตัวนี้ใช้ magic number 20260723

ทำไมสเกลที่ไม่มีขอบเขตของ CCI เปลี่ยนการเทรดกลับตัว

RSI และ Stochastic ทั้งคู่ถูกจำกัดไว้ที่ 0-100 ซึ่งหมายความว่าค่า "oversold" บนทั้งสองตัวจะสื่อความหมายเดียวกันเสมอ คือ สเกลวิ่งจนหมดพื้นที่แล้ว เมื่อ RSI แตะ 20 มันแทบไม่มีทางลงต่ำไปกว่านี้ได้อีกมาก เพราะการคำนวณจำกัดมันไว้ CCI ไม่มีเพดานหรือพื้นแบบนั้นเลย และนั่นเปลี่ยนความหมายของสัญญาณ oversold บน EA ตัวนี้ไปโดยสิ้นเชิง เมื่อ CCI กลับตัวลงต่ำกว่า -100 นั่นเป็นแค่เส้นตามธรรมเนียมที่เทรดเดอร์ใช้เฝ้าดู ค่าที่แท้จริงเบื้องหลังยังลงต่อไปได้ถึง -150, -250 หรือไกลกว่านั้นโดยไม่มีขีดจำกัดทางคณิตศาสตร์เลย เพราะมันวัด ระยะห่างจากค่าเฉลี่ย ไม่ใช่ ตำแหน่งภายในช่วงที่กำหนดตายตัว การเคลื่อนไหวแบบเทรนด์แรงและต่อเนื่องสามารถผลัก typical price ให้ห่างจากค่าเฉลี่ยเคลื่อนที่ของตัวมันเองมากขึ้นเรื่อยๆ ได้หลายแท่งเทียนติดต่อกัน ซึ่งหมายความว่า CCI อาจอยู่ต่ำกว่า -100 — หรือดิ่งลึกลงไปกว่านั้นอีก — เป็นช่วงยาวโดยไม่เคย "หมดพื้นที่" สำหรับส่งสัญญาณกลับตัวเลย

นี่มีผลในทางปฏิบัติโดยตรงกับ EA ตัวนี้โดยเฉพาะ เพราะการกลับตัวขึ้นทะลุ -100 ถูกนิยามด้วยการเคลื่อนไหวเชิงเปรียบเทียบล้วนๆ (CCI แท่งนี้สูงกว่า -100 ส่วนแท่งก่อนหน้าไม่ใช่) การหยุดพักสั้นๆ หรือการเด้งเล็กน้อยภายในเทรนด์ขาลงที่ยังไม่จบก็สามารถกระตุ้นสัญญาณ BUY ได้ ทั้งที่เทรนด์ใหญ่ยังไม่ได้กลับตัวจริงๆ กลยุทธ์ mean-reversion ที่ใช้ RSI มีการป้องกันตามธรรมชาติในระดับหนึ่งเพราะตัวสเกลเองบีบตัวลงเมื่อเข้าใกล้จุดสุดขั้ว แต่ CCI ที่ออกแบบมาแบบไม่มีขอบเขตไม่มีการป้องกันแบบนั้นเลย นี่คือเหตุผลเชิงกลไกที่ EA แบบ CCI reversal ได้ประโยชน์จากการจับคู่กับตัวกรองความแข็งแกร่งของเทรนด์มากกว่ากลยุทธ์ mean-reversion ตัวอื่นๆ ส่วนใหญ่ — เช่นอ่านค่า ADX หรือตรวจสอบสภาวะเทรนด์กับตลาดไซด์เวย์ก่อนเปิดใช้งาน — เพราะตัวอินดิเคเตอร์เองไม่สามารถแยกแยะได้ว่า "การเคลื่อนไหวสุดขั้วนี้หมดแรงจริงๆ แล้ว" กับ "การเคลื่อนไหวสุดขั้วนี้แค่หยุดพักไม่กี่แท่งเทียนระหว่างทางไปสู่ค่าที่สุดขั้วยิ่งกว่าเดิม"

ข้อควรระวัง

ทดสอบบนบัญชีเดโมก่อนเสมอ ในสภาวะตลาดที่หลากหลาย ก่อนนำเงินจริงไปเสี่ยง — ผลงานที่ผ่านมา ไม่ว่าจาก backtest หรือบัญชีจริง ไม่เคยรับประกันผลลัพธ์ในอนาคต ไม่มีกลยุทธ์ใด ไม่ว่าจะอัตโนมัติหรือเทรดเอง ที่ชนะทุกครั้ง และ EA ตัวนี้สามารถขาดทุนในบางเทรดได้เช่นกัน กลยุทธ์ mean-reversion โดยทั่วไปมักเสียหายหนักในตลาดที่เป็นเทรนด์แรง และ EA ตัวนี้มีความเสี่ยงเฉพาะตัวแบบที่อธิบายไว้ข้างต้น เพราะ CCI ไม่มีพื้น ตลาดที่เป็นเทรนด์แรงสามารถทำจุดต่ำสุดใหม่ทะลุ -100 ซ้ำแล้วซ้ำเล่าได้ ส่งสัญญาณ BUY ที่ดูเหมือนจุดต่ำสุดแต่จริงๆ แล้วเป็นแค่การหยุดพักระหว่างทางที่ราคายังคงร่วงต่อไป — สถานการณ์แบบ classic ที่เรียกว่า "รับมีดที่กำลังร่วง" (catch a falling knife) ควรพิจารณาจับคู่กับตัวกรองความแข็งแกร่งของเทรนด์ของคุณเองก่อนเปิดใช้งานบนบัญชีจริง ไฟล์ทั้งสองเป็น source code — เปิดและตรวจสอบให้ครบถ้วน และเข้าใจว่า parameter แต่ละตัวทำอะไร ก่อนนำไปใช้งาน เช่นเดียวกับทุกบทเรียนบนเว็บนี้ นี่คือเนื้อหาเพื่อการศึกษา ไม่ใช่คำปรึกษาการลงทุนรายบุคคล

ดาวน์โหลด cci-reversal-ea.mq4

สำหรับ MetaTrader 4 — นี่คือ source code (.mq4) เปิดและตรวจสอบให้ครบถ้วนก่อนใช้งาน

ดาวน์โหลดไฟล์

ดาวน์โหลด cci-reversal-ea.mq5

สำหรับ MetaTrader 5 — นี่คือ source code (.mq5) เปิดและตรวจสอบให้ครบถ้วนก่อนใช้งาน

ดาวน์โหลดไฟล์

วิธีติดตั้ง

EA ติดตั้งลงโฟลเดอร์ Experts ไม่ใช่ Indicators — เป็นขั้นตอนที่คนพลาดบ่อยที่สุด

MetaTrader 4

  1. ดาวน์โหลดไฟล์ cci-reversal-ea.mq4 ด้านบน
  2. เปิด MetaTrader 4FileOpen Data Folder
  3. นำไฟล์ไปวางในโฟลเดอร์ MQL4/Experts
  4. รีสตาร์ท MetaTrader 4 จากนั้นลากจากหน้าต่าง Navigator ไปวางบนกราฟ
  5. เปิด AutoTrading (MT4) หรือ Algo Trading (MT5) ใน toolbar — EA จะไม่เปิดออร์เดอร์ใด ๆ ขณะที่ปิดอยู่ แม้จะแนบบนกราฟแล้วก็ตาม
  6. ตรวจสอบและปรับค่า input parameter ใน settings dialog ก่อนยืนยัน

MetaTrader 5

  1. ดาวน์โหลดไฟล์ cci-reversal-ea.mq5 ด้านบน
  2. เปิด MetaTrader 5FileOpen Data Folder
  3. นำไฟล์ไปวางในโฟลเดอร์ MQL5/Experts
  4. รีสตาร์ท MetaTrader 5 จากนั้นลากจากหน้าต่าง Navigator ไปวางบนกราฟ
  5. เปิด AutoTrading (MT4) หรือ Algo Trading (MT5) ใน toolbar — EA จะไม่เปิดออร์เดอร์ใด ๆ ขณะที่ปิดอยู่ แม้จะแนบบนกราฟแล้วก็ตาม
  6. ตรวจสอบและปรับค่า input parameter ใน settings dialog ก่อนยืนยัน

ทั้งสองไฟล์เป็นซอร์สโค้ด เปิดอ่านใน MetaEditor ก่อนนำไปรันกับบัญชีใด ๆ เสมอ