พารามิเตอร์ของที่ปรึกษาผู้เชี่ยวชาญ (Inputs)
EA ตัวนี้มีพารามิเตอร์หลายตัวที่ผู้ใช้งานสามารถปรับแต่งได้เพื่อควบคุมพฤติกรรมของมัน:
พารามิเตอร์ทั่วไป
| พารามิเตอร์ | ประเภท | คำอธิบาย |
| MagicNumber | int | หมายเลขเฉพาะสำหรับการเทรดของ EA นี้ |
| InitialLot | double | ขนาดล็อตเริ่มต้นสำหรับการเทรดแรกในชุด |
| AllowBuy | bool | หมายธงเพื่ออนุญาตให้ EA เปิดการเทรดซื้อ (ทั้งการเทรดเริ่มต้นและ Martingale) |
| AllowSell | bool | หมายธงเพื่ออนุญาตให้ EA เปิดการเทรดขาย (ทั้งการเทรดเริ่มต้นและ Martingale) |
| TakeProfit | int | กำไรที่ตั้งไว้ในจุด/pips ที่ใช้ในขณะตั้งคำสั่งรอด (ไม่รวมถึงการดำเนินการในตลาด) |
| FindHighLowBackBars | int | จำนวนแท่งก่อนหน้าที่ให้มองย้อนกลับไปเพื่อกำหนดจุดสูงสุดและต่ำสุดสำหรับการตั้งคำสั่งรอดเริ่มต้น |
| ResetAfterBars | int | จำนวนแท่งหลังจากที่คำสั่งรอดเริ่มต้นจะถูกลบและประเมินใหม่ (ถ้าไม่มีตำแหน่งเปิดอยู่) |
กลยุทธ์ Martingale
| พารามิเตอร์ | ประเภท | คำอธิบาย |
| ReverseMartingale | bool | ถ้าเป็นจริง การเทรด Martingale ถัดไปจะอยู่ในทิศทาง ตรงข้าม กับการเทรดล่าสุดในชุด (นี่คือวิธีการป้องกัน แต่โค้ดจะ เปิด ในทิศทางเดียวกันถ้าเป็นเท็จ) |
| LotMultiplier | double | ปัจจัยที่ใช้ในการคูณขนาดล็อตสำหรับการเทรดถัดไปในชุดที่ขาดทุน (เช่น 2.0 แปลว่าคูณล็อตเป็นสองเท่า) |
| SecureProfitMartingaleTarget | double | กำไรที่ ลอยตัวรวม (ในสกุลเงินบัญชี) ที่ซึ่งทั้งชุดการเทรดที่เปิดอยู่จะถูกปิด |
| DistanceMartingalePips | int | ระยะทาง (ใน pips) ที่ราคาต้องเคลื่อนไหวในทิศทางตรงกันข้ามจากราคาที่เปิดการเทรดล่าสุดก่อนที่จะเปิดการเทรด Martingale ใหม่ |
| MaxTradesInSeries | int | จำนวนการเทรดสูงสุดที่อนุญาตในชุด Martingale เดียว |
กลยุทธ์ตามเวลา
| พารามิเตอร์ | ประเภท | คำอธิบาย |
| AllowMonday... AllowFriday | bool | ธงเพื่อเปิดหรือปิดการเทรดในวันเฉพาะของสัปดาห์ |
| ForbiddenDates | string | รายการวันที่ที่ห้ามเทรด (รูปแบบ YYYY.MM.DD) ที่การเทรดถูกห้าม |
ภาพรวมของฟังก์ชันหลัก
OnInit() (การเริ่มต้น)
ตั้ง MagicNumber ของ EA, โหมดมาร์จิ้น และการเบี่ยงเบน มัน รีเซ็ตสถานะ Martingale (s_currentLot, s_totalTradesInSeries, ฯลฯ) ให้กลับไปที่ค่าเริ่มต้น เตรียมพร้อมสำหรับการเริ่มต้นใหม่
OnDeinit() (การยกเลิกการเริ่มต้น)
ฟังก์ชันง่ายๆ สำหรับการทำความสะอาด พิมพ์ข้อความเมื่อ EA ถูกหยุดหรือถูกลบ
IsTradingDateAllowed() และ IsTradingDayAllowed() (ตัวกรองการเทรด)
ฟังก์ชันเหล่านี้ตรวจสอบวันและวันที่ปัจจุบันกับข้อมูลที่ผู้ใช้กำหนด (AllowMonday ถึง AllowFriday และ ForbiddenDates) เพื่อตรวจสอบว่าการเทรดได้รับอนุญาตหรือไม่
OpenTradeLogic(ENUM_ORDER_TYPE type, string tradeComment) (การดำเนินการในตลาด)
ฟังก์ชันนี้จัดการการเปิดตำแหน่งตลาดใหม่ (ซื้อหรือขาย)
ตรวจสอบและปรับขนาดล็อตให้ตรงตามความต้องการของโบรกเกอร์
ตรวจสอบ มาร์จิ้นที่เพียงพอ โดยใช้ CheckMargin()
ดำเนินการเทรด โดยไม่มีการตั้ง Take Profit หรือ Stop Loss (tp_calculated คือ 0)
อัปเดตตัวแปรสถานะ Martingale ทั่วไป: s_currentLot, s_lastOpenPrice, s_seriesType และ s_totalTradesInSeries
CloseAllPositions()
วนผ่านตำแหน่งที่เปิดอยู่ทั้งหมดและปิดตำแหน่งใดๆ ที่เปิดโดย EA นี้ (ตรงกับ MagicNumber)
PendingOrders(ENUM_ORDER_TYPE type, double price, double lotSize, string comment) (การตั้งคำสั่งรอด)
ฟังก์ชันนี้ตั้ง Buy Limit หรือ Sell Limit:
ตรวจสอบขนาดล็อตและตรวจสอบมาร์จิ้นที่เพียงพอ
ตรวจสอบราคาที่เข้าตามระยะขั้นต่ำของโบรกเกอร์ (SYMBOL_TRADE_STOPS_LEVEL)
คำนวณ Take Profit ที่ตั้งไว้ (tp) ตามข้อมูล TakeProfit
ส่งคำขอการเทรด หมายเหตุ: ฟังก์ชัน UpdateHighLowAndOrders เรียก ตัวนี้เพื่อวางคำสั่ง Buy Limit และ Sell Limit เริ่มต้น
UpdateHighLowAndOrders() (ตรรกะการเข้าตั้งต้น)
นี่คือ กลไกการเข้าตั้งต้น เมื่อไม่มีตำแหน่งเปิด:
มองย้อนกลับ FindHighLowBackBars เพื่อหาจุด สูงสุด และ ต่ำสุด
คำนวณราคาSellLimit (Highest High + 1 tick) และราคาBuyLimit (Lowest Low - 1 tick)
ตรวจสอบว่าคำสั่ง Buy Limit และ Sell Limit ที่มี MagicNumber ของ EA นั้นมีอยู่แล้วหรือไม่
วางคำสั่ง Sell Limit เริ่มต้นที่สูงกว่าจุดสูงสุดล่าสุด และคำสั่ง Buy Limit ที่ต่ำกว่าจุดต่ำสุดล่าสุด โดยแต่ละคำสั่งใช้ InitialLot
OnTick() (ตรรกะหลัก)
ส่วนหลักของตรรกะการทำงานของ EA:
การตรวจสอบเวลา: ป้องกันการคำนวณซ้ำซ้อนใน tick เดียวกัน
การตรวจสอบตัวกรอง: ถ้าการเทรดไม่ได้รับอนุญาตตามวัน/วันที่ จะลบคำสั่งรอดทั้งหมด
การตรวจสอบเป้าหมายกำไร (การออกจากชุด): ถ้า eaHasOpenPositions เป็นจริง และ totalFloatingProfit เป็น ≥ SecureProfitMartingaleTarget จะเรียก CloseAllPositions() และ รีเซ็ตตัวแปรสถานะ Martingale ทั้งหมด เพื่อเริ่มชุดใหม่
การวางคำสั่งเริ่มต้น: ถ้า !eaHasOpenPositions และการเทรดได้รับอนุญาต จะ รีเซ็ตสถานะ Martingale และตรวจสอบว่ามีแท่งใหม่เกิดขึ้นหรือไม่
ถ้ามีแท่งใหม่เกิดขึ้น จะตรวจสอบว่า barsCount เป็น ≥ ResetAfterBars หรือไม่ ถ้าใช่ จะลบคำสั่งรอดและเรียก UpdateHighLowAndOrders() เพื่อวางคำสั่งเริ่มต้นใหม่ ถ้าไม่ใช่ก็เพียงเรียก UpdateHighLowAndOrders()
ตรรกะขั้นตอน Martingale: ถ้า eaHasOpenPositions เป็นจริง และ s_totalTradesInSeries น้อยกว่า MaxTradesInSeries:
ตรวจสอบว่า totalFloatingProfit เป็น ลบ และราคาขยับไปในทิศทางตรงกันข้ามจากการเทรดล่าสุดอย่างน้อย DistanceMartingalePips
ถ้าทั้งสองเงื่อนไขเป็นจริง คำนวณ nextLot โดยการคูณ s_currentLot ด้วย LotMultiplier
กำหนดทิศทาง orderToOpen (ในทิศทางเดียวกับชุดหรือในทิศทางตรงกันข้าม ตาม ReverseMartingale)
เรียก OpenTradeLogic() เพื่อเปิดตำแหน่งใหม่ที่คูณแล้วต่อไปในชุด Martingale
สรุปกลยุทธ์
EA "Babi Ngepet" ใช้กลยุทธ์ Martingale ที่เสี่ยงแต่มีโอกาสสูงในการสร้างผลตอบแทนร่วมกับการเข้าตั้งต้นแบบ breakout/range-reversal:
การเข้าตั้งต้น: EA จะวางคำสั่ง Buy Limit (ต่ำกว่าจุดต่ำล่าสุด) และ Sell Limit (สูงกว่าจุดสูงสุดล่าสุด) ซึ่งแสดงถึงการสมมุติฐานเริ่มต้นว่าอยู่ใน พฤติกรรมเรียงขอบ—มันจะเข้าซื้อเมื่อราคาลดลงถึงจุดต่ำ และขายเมื่อราคาขึ้นถึงจุดสูง
การจัดการการเทรด: หากการเทรดเริ่มต้นใด ๆ ถูกกระตุ้นและตำแหน่งเคลื่อนที่ไปในทิศทางขาดทุนรวม (กำไรลอยตัวลบ) และราคายังคงเคลื่อนที่ไปในทิศทางตรงกันข้ามกับตำแหน่งเปิดโดยระยะที่กำหนด EA จะเปิด ตำแหน่งใหม่ ในทิศทางเดียวกันด้วย ขนาดล็อตใหญ่กว่า (Martingale)
กลยุทธ์การออก: ชุดของการเทรดจะเพิ่มขนาดล็อตจนกว่ากำไรลอยตัวรวมของการเทรดทั้งหมดในชุดจะถึง SecureProfitMartingaleTarget ซึ่งในจุดนั้นจะปิดตำแหน่งทั้งหมด และ EA จะรีเซ็ตเพื่อเริ่มชุดใหม่
คำเตือน: กลยุทธ์ Martingale มีความเสี่ยงสูงและมีโอกาสขาดทุนสูงเนื่องจากขนาดล็อตจะเพิ่มขึ้นหลังจากแต่ละขั้นตอนที่ขาดทุน
연관 포스트
- กลยุทธ์การเทรดด้วย Indicator 2 MA สำหรับ MetaTrader 5
- ปิดคำสั่งตามช่วงเวลาที่กำหนด - ผู้ช่วยการเทรดสำหรับ MetaTrader 4
- วิธีการใช้งาน onTrade Event Handler ใน MQL4 สำหรับ MetaTrader 4
- เครื่องมืออ่านข่าวสำหรับ MT4 & MT5: แนะนำผู้ช่วยการเทรดที่คุณไม่ควรพลาด
- AK-47 Scalper EA: เครื่องมือทำกำไรสำหรับ MetaTrader 4