LearnForexHub
EA

EA: A/D Trend Confirmation Expert Advisor

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

Expert Advisor (EA) ต่างจากไฟล์ดาวน์โหลดอื่นๆ บนเว็บไซต์นี้ — อินดิเคเตอร์ทำได้แค่พล็อตเส้นหรือแจ้งเตือน แต่ EA จะส่งคำสั่งเทรดแทนคุณจริงๆ EA ฟรีตัวนี้เทรดด้วยกลยุทธ์ breakout ที่สร้างขึ้นจากการที่ราคาทำจุดสูงสุดหรือต่ำสุดใหม่ในรอบ N แท่งเทียน แต่มันจะไม่สั่งเทรดตาม breakout นั้นเพียงลำพัง — มันจะเข้าเทรดก็ต่อเมื่อ Accumulation/Distribution ยืนยันจุดสูงสุดหรือต่ำสุดใหม่เดียวกันนั้นด้วยตัวมันเองก่อน จากนั้น Stop Loss, Take Profit และขนาดโพซิชันจะถูกจัดการให้อัตโนมัติทั้งหมด ด้วยเครื่องมือชุดเดียวกับที่สอนไว้ในบทเรียนอื่นบนเว็บไซต์นี้ ทั้งแบบอิงความผันผวนและอิงความเสี่ยง

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

สัญญาณเข้าเทรดดิบตรงนี้เป็น breakout แบบง่ายที่สุดเท่าที่จะมีได้ นั่นคือ ราคาปิดของแท่งเทียนที่เพิ่งปิดเป็นราคาปิดสูงสุดในรอบ ConfirmPeriod แท่งที่ผ่านมา (ค่าเริ่มต้น 20) หรือไม่? ถ้าใช่ แปลว่าราคาได้ทะลุขึ้นไปทำจุดสูงสุดใหม่ในระยะสั้น และในทางทฤษฎีนี่คือสัญญาณขาขึ้น — ฝ่ายซื้อได้ดันราคาไปไกลกว่า 20 แท่งเทียนที่ผ่านมา ซึ่งเทรดเดอร์สาย breakout ทั่วไปจะกระโดดเข้าเทรดทันที กรณีตรงข้าม — ราคาปิดของแท่งเทียนที่เพิ่งปิดเป็นราคาปิดต่ำสุดในรอบ ConfirmPeriod แท่งที่ผ่านมา — คือสัญญาณขาลงแบบเดียวกัน

ปัญหาของการเทรดตามสัญญาณนี้เพียงลำพังเป็นสิ่งที่คนเทรด breakout รู้ดี นั่นคือ จุดสูงสุดใหม่ในรอบ N แท่งจำนวนมากเกิดจากการซื้อขายไม่กี่ครั้งที่บางเบา ไม่ใช่แรงซื้อที่แท้จริง และ breakout แบบนั้นมักจะล้มเหลวแล้วย้อนกลับเข้าไปในกรอบราคาเดิมทันที คำตอบของ EA ตัวนี้คือการเรียกร้อง "พยาน" อิสระตัวที่สองก่อนที่จะเชื่อ breakout นั้น ในแท่งเทียนเดียวกันเป๊ะกับที่ราคากำลังทำจุดสูงสุดใหม่ในรอบ N แท่ง EA จะตรวจสอบด้วยว่า A/D — ผลรวมสะสมที่ถ่วงน้ำหนัก volume ของแต่ละแท่งเทียนตามความแข็งแกร่งของราคาปิดที่ลงจอดภายใน range ของแท่งนั้นเอง — กำลังทำจุดสูงสุดใหม่ของตัวมันเองในรอบเวลาย้อนหลังเดียวกันหรือไม่ ราคาและ A/D เป็นการคำนวณคนละแบบที่สร้างจากแท่งเทียนดิบชุดเดียวกัน ดังนั้นเมื่อทั้งสองเห็นตรงกันโดยอิสระว่า "นี่คือจุดสูงสุดในรอบ 20 แท่ง" ความสอดคล้องนั้นมีความหมายมากกว่าที่การนับ volume แบบธรรมดาจะบอกได้ — ไม่ใช่แค่มี volume อยู่เบื้องหลังการเคลื่อนไหว แต่ราคาปิดที่ขับเคลื่อนมันยังลงจอดแข็งแกร่งใกล้จุดสูงสุดของ range ตัวเองตลอดทาง ถ้าราคาทำจุดสูงสุดใหม่แต่ A/D ไม่ยืนยันตาม EA จะถือว่านั่นเป็นสัญญาณเตือนและไม่ทำอะไรเลย — นี่คือแนวคิดหลักที่เนื้อหาส่วนที่เหลือของบทเรียนนี้ต่อยอดขึ้นไป

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

PriceTake Profit (TP)Stop Loss (SL)BUYAccumulation/Distribution (cumulative, unbounded)A/D confirms
Entry conditions: BUY when price prints a new N-bar high at the same time A/D also prints a new N-bar high — the mirrored new-low confirmation triggers SELL — SL and TP are placed automatically from ATR

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

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

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

  • BUY — ราคาปิดของแท่งเทียนที่เพิ่งปิดเป็นราคาปิดสูงสุดในรอบ ConfirmPeriod แท่งที่ผ่านมา และ ค่า A/D ที่แท่งเทียนเดียวกันนั้นก็เป็นค่า A/D สูงสุดในรอบเวลาย้อนหลัง ConfirmPeriod แท่งเดียวกันด้วย
  • SELL — ราคาปิดของแท่งเทียนที่เพิ่งปิดเป็นราคาปิดต่ำสุดในรอบ ConfirmPeriod แท่งที่ผ่านมา และ ค่า A/D ที่แท่งเทียนเดียวกันนั้นก็เป็นค่า A/D ต่ำสุดในรอบเวลาย้อนหลังเดียวกัน — เป็นรูปแบบที่ตรงข้ามกัน

หากราคาทำจุดสูงสุดหรือต่ำสุดใหม่ในรอบ N แท่ง แต่ A/D ไม่ยืนยันตามที่แท่งเทียนเดียวกันนั้น EA จะไม่ทำอะไรเลย — breakout ของราคาถูก "รับรู้" ไว้ในระบบแต่ไม่ถูกนำไปใช้สั่งเทรด เพราะความแข็งแกร่งของราคาปิดที่ถ่วงน้ำหนักด้วย volume ยังไม่ได้ยืนยัน นอกเหนือจากเงื่อนไขการยืนยันสองชั้นแล้ว มีกลไกความปลอดภัย 3 อย่างที่ควบคุมทุกเทรดที่ EA ตัวนี้จะเปิดได้ ได้แก่ มันประเมินเงื่อนไขการเข้าเทรดเพียงครั้งเดียวต่อแท่งเทียนใหม่เท่านั้น (ติดตามจากเวลาเปิดของแท่งเทียน) ดังนั้นแท่งเทียนที่ผ่านเงื่อนไขเพียงแท่งเดียวจะไม่สามารถสั่งเทรดซ้ำหลายครั้งภายในแท่งเทียนเดียวกันได้ มันเปิดได้ครั้งละ 1 โพซิชันเท่านั้น โดยตรวจสอบจากการนับเทรดที่เปิดอยู่ซึ่งกรองเฉพาะคู่เงินและ magic number ของตัว EA เองก่อนพิจารณาเข้าเทรดใหม่ทุกครั้ง และมันตรวจสอบ spread ปัจจุบันเทียบกับ MaxSpreadPoints (ค่าเริ่มต้น 30) ก่อนส่งคำสั่ง โดยข้ามการเข้าเทรดไปเลยหาก spread กว้างเกินกว่าจะเทรดที่ราคาที่สมเหตุสมผลได้ ทุกออเดอร์ถูกแท็กด้วย MagicNumber (ค่าเริ่มต้น 20260803) ดังนั้นระบบนับโพซิชันของ EA — รวมถึงระบบจัดการใดๆ ในอนาคต — จะไม่มีวันไปยุ่งกับเทรดที่คุณเปิดเองด้วยมือ หรือเทรดที่เปิดโดย EA ตัวอื่นบนบัญชีเดียวกัน

Parameters

  • ConfirmPeriod (ค่าเริ่มต้น 20) — รอบเวลาย้อนหลัง หน่วยเป็นแท่งเทียน ที่ใช้ทั้งสำหรับตรวจสอบจุดสูงสุด/ต่ำสุดของราคาและของ A/D รอบที่สั้นกว่า (เช่น 10) จะตอบสนองต่อ breakout ที่เล็กกว่าและถี่กว่า ส่วนรอบที่ยาวกว่า (เช่น 40-50) จะรอการเคลื่อนไหวของราคาที่มีนัยสำคัญมากกว่าก่อนพิจารณาเข้าเทรด แลกกับสัญญาณที่น้อยลง
  • AppliedVolume (เฉพาะ MT5, ค่าเริ่มต้น VOLUME_TICK) — ฐาน volume ที่ใช้คำนวณ A/D iAD() ของ MQL4 ใช้ tick volume โดยตรงเสมอ ไม่มี input ให้เลือก

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

ทำไมต้องให้ A/D ยืนยัน Breakout

นี่คือแนวคิดหลักในการออกแบบที่ EA ตัวนี้ทั้งหมดถูกสร้างขึ้นมารอบๆ มัน จึงควรอธิบายให้ชัดว่าทำไมมันถึงมีอยู่ แทนที่จะมองข้ามเป็นแค่รายละเอียดเล็กๆ breakout ของราคา — การทำจุดสูงสุดหรือต่ำสุดใหม่ในรอบ N แท่ง — บอกได้แค่ว่าราคาปิดล่าสุดสุดโต่งกว่าทุกอย่างในรอบเวลาย้อนหลังนั้น มันไม่ได้บอกเลยว่าราคานั้นไปถึงจุดนั้นได้ อย่างไร ตลาดที่ซื้อขายบางเบาสามารถทำจุดสูงสุดใหม่ได้จากคำสั่งซื้อขนาดใหญ่เพียงคำสั่งเดียว การไล่ล่า stop หรือการเคลื่อนไหวของราคาแบบสภาพคล่องต่ำในช่วงสั้นๆ แล้วก็ย้อนกลับเข้าไปในกรอบราคาเดิมทันทีในอีกหนึ่งหรือสองแท่งเทียนถัดมา เมื่อความไม่สมดุลนั้นคลี่คลายลง รูปแบบนี้ — มักเรียกกันว่า false breakout — เป็นหนึ่งในวิธีที่พบบ่อยที่สุดที่กลยุทธ์ breakout แบบไร้เดียงสาจะขาดทุน มันซื้อที่จุดสูงสุดของการพุ่งขึ้นที่ไม่มีแรงซื้อจริงอยู่เบื้องหลัง และการย้อนกลับที่ตามมาก็ชน stop เกือบจะทันที

A/D แก้ปัญหานี้ได้เพราะมันวัดสิ่งที่ breakout ของราคาเพียงอย่างเดียวทำไม่ได้ นั่นคือ ราคาปิดที่อยู่เบื้องหลังการเคลื่อนไหวนั้นลงจอดแข็งแกร่งภายใน range ของตัวเองจริงหรือไม่ ไม่ใช่แค่มีจำนวนมากกว่าราคาปิดขาลงแบบที่การนับ volume แบบธรรมดาจะนับ เพราะ A/D จะขึ้นก็ต่อเมื่อราคาปิดลงจอดใกล้จุดสูงสุดของ range อย่างสม่ำเสมอด้วย volume จริง การที่ A/D ทำจุดสูงสุดใหม่ได้จริงจึงต้องอาศัยแรงซื้อที่ต่อเนื่องและมีคุณภาพสูงสะสมมาตลอดทั้งรอบเวลาย้อนหลัง ไม่ใช่แค่การซื้อขายก้อนใหญ่หนึ่งครั้งในแท่งเทียนที่เกิด breakout เท่านั้น และไม่ใช่แค่ราคาปิดขาขึ้นอ่อนแรงต่อเนื่องกันที่ตัวชี้วัด volume แบบหยาบกว่าจะยังนับว่าเป็นขาขึ้น การกำหนดให้ A/D ต้องทำจุดสูงสุดใหม่ของตัวมันเองในแท่งเทียนเดียวกันเป๊ะกับจุดสูงสุดของราคา จึงเปรียบเสมือนการขอให้การคำนวณสองอย่างที่ไม่เกี่ยวข้องกัน แต่สร้างจากข้อมูลดิบชุดเดียวกันด้วยวิธีต่างกัน มาเห็นตรงกันก่อนที่ EA จะเชื่อการเคลื่อนไหวนั้น วิธีนี้จะกรอง breakout ที่บางเบาและไม่น่าเชื่อถือส่วนใหญ่ ซึ่งเป็นต้นเหตุของ false breakout ส่วนใหญ่ออกไป และปล่อยให้ผ่านเฉพาะ breakout ที่มาพร้อมกับแรงซื้อขายที่แท้จริง ต่อเนื่อง และปิดแข็งแกร่ง ข้อแลกเปลี่ยนคือ EA ตัวนี้บางครั้งจะพลาด breakout ที่เกิดเร็ว ซึ่งกลับกลายเป็นของจริงในภายหลัง — การยืนยันด้วย A/D โดยธรรมชาติของมันจะรับรู้ได้แค่แรงซื้อขายที่สะสมไปแล้วเท่านั้น ไม่ใช่การเคลื่อนไหวที่กำลังจะเกิดขึ้น และควรย้ำข้อควรระวังที่สำคัญเฉพาะกับตลาด forex ด้วยว่า "volume" ที่ A/D ใช้บน feed ของ broker forex ส่วนใหญ่คือ tick volume (จำนวนครั้งที่ราคาเปลี่ยนแปลงต่อแท่งเทียน) ไม่ใช่ volume การซื้อขายจริงแบบที่ได้จากตราสารที่จดทะเบียนในตลาดหลักทรัพย์ ดังนั้น A/D ในที่นี้จึงเป็นตัวแทนของแรงซื้อขาย ไม่ใช่การวัดที่แม่นยำ ไม่มีตัวกรองการยืนยันตัวไหน ไม่ว่าจะอิง volume หรืออย่างอื่น ที่รับประกันได้ว่า breakout ที่ยืนยันแล้วจะดำเนินต่อไป มันทำได้แค่เพิ่มโอกาสว่าสัญญาณนั้นสะท้อนแรงซื้อขายจริงมากกว่าจะเป็นแค่ noise ซึ่งเป็นแนวคิดเดียวกับการให้ ADX ยืนยันการตัดกันของทิศทางก่อนสั่งเทรด เพียงแต่นำมาใช้กับ breakout แทนที่จะเป็นการตัดกันของเส้น

ข้อควรระวัง

ทดสอบบนบัญชีเดโมก่อนเสมอ ในสภาวะตลาดที่หลากหลายและหลายคู่เงิน ก่อนนำเงินจริงไปเสี่ยง — ผลการทดสอบย้อนหลัง (backtest) หรือผลงานที่ดีบนบัญชีเดโม ไม่เคยรับประกันผลลัพธ์ในอนาคต EA ตัวนี้สามารถขาดทุนในบางเทรดได้ ตัวกรองการยืนยันด้วย A/D ช่วยลดจำนวน false breakout ที่มันนำไปใช้สั่งเทรด แต่ไม่สามารถกำจัดมันได้ทั้งหมด และมันไม่ได้ช่วยป้องกัน breakout ที่มีแรงหนุนจริงๆ จนถึงจุดที่กลับตัวย้อนกลับในภายหลังอยู่ดี อย่าลืมด้วยว่า A/D บน feed ของ forex สร้างจาก tick volume ไม่ใช่ volume การซื้อขายจริง ดังนั้น "การยืนยัน" ในที่นี้หมายถึงตัวแทนของแรงซื้อขายที่สอดคล้องกับราคา ไม่ใช่การรับประกันจาก order flow ที่ตรวจสอบได้จริงจากตลาดหลักทรัพย์ ควรพิจารณาใช้ร่วมกับการอ่านคุณภาพเทรนด์ด้วยวิธีอื่น (โครงสร้างราคา การตรวจทิศทางใน timeframe ที่ใหญ่กว่า หรือ เทรนด์กับตลาดไซด์เวย์) แทนที่จะเทรดตามสัญญาณนี้เพียงลำพัง ไฟล์ทั้ง MT4 และ MT5 ด้านล่างเป็น source code — เปิดและอ่านให้ครบถ้วน และเข้าใจว่า parameter แต่ละตัวทำอะไรอย่างละเอียด ก่อนนำ EA นี้ไปติดกับบัญชีจริง เนื้อหานี้เป็นการศึกษาทั่วไป ไม่ใช่คำแนะนำการลงทุนส่วนบุคคล

ดาวน์โหลด ad-trend-confirmation-ea.mq4

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

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

ดาวน์โหลด ad-trend-confirmation-ea.mq5

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

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

วิธีติดตั้ง

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

MetaTrader 4

  1. ดาวน์โหลดไฟล์ ad-trend-confirmation-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. ดาวน์โหลดไฟล์ ad-trend-confirmation-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 ก่อนนำไปรันกับบัญชีใด ๆ เสมอ

บทเรียนที่เกี่ยวข้อง

อินดิเคเตอร์

Accumulation/Distribution (A/D): Volume ที่ถ่วงน้ำหนักด้วยความแข็งแกร่งของราคาปิด

การคำนวณ Close Location Value ของ A/D ต่างจาก OBV อย่างไร ทำไม divergence ถึงเป็นจุดที่มันแสดงคุณค่าได้ดีที่สุด และสองอินดิเคเตอร์ volume flow นี้เทียบกันอย่างไร

ดาวน์โหลดได้ · MetaTrader 4 / MetaTrader 5
อินดิเคเตอร์

อินดิเคเตอร์: ATR คืออะไร? ตั้ง Stop Loss ให้เข้ากับความผันผวน

วัดว่าราคาเคลื่อนไหวจริงมากแค่ไหน แล้วนำไปใช้กำหนด Stop Loss และขนาดโพซิชัน พร้อมไฟล์ MT4/MT5

ดาวน์โหลดได้ · MetaTrader 4 / MetaTrader 5
พื้นฐาน

พื้นฐานการบริหารความเสี่ยง: ขนาดล็อต, Stop Loss, Risk:Reward

หลักการบริหารความเสี่ยงที่ช่วยให้อยู่รอดในตลาดได้ในระยะยาว ก่อนไปศึกษาเรื่องอินดิเคเตอร์