ผู้เสนอแนวคิด: Vladimir Gribachev.
โค้ด MQL5 โดย: Vladimir Karputov.
นี่คือ EA ที่ไม่ใช้ตัวบ่งชี้ที่กำหนดเอง โดยเปิดตำแหน่งแบบสุ่ม EA นี้สามารถแสดงสถิติปัจจุบันในสองภาษา:

Trailing จะปรับ Stop Loss ของตำแหน่งที่เปิดอยู่ หากเกิดการขาดทุน ขนาดล็อตจะเพิ่มขึ้นตามอัตรา Martingale วิธีการตรวจสอบการขาดทุน: ใน OnTradeTransaction เราจะจับเหตุการณ์การทำธุรกรรม DEAL_REASON_SL ซึ่งเป็นสัญญาณของ Stop Loss ที่ถูกเรียกใช้:
//+------------------------------------------------------------------+ //| ฟังก์ชัน TradeTransaction | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- รับประเภทการทำธุรกรรมในรูปแบบ enumeration ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- หากการทำธุรกรรมเกิดจากการเพิ่มธุรกรรมในประวัติ if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_ticket =0; long deal_order =0; long deal_time =0; long deal_time_msc =0; long deal_type =-1; long deal_entry =-1; long deal_magic =0; long deal_reason =-1; long deal_position_id =0; double deal_volume =0.0; double deal_price =0.0; double deal_commission =0.0; double deal_swap =0.0; double deal_profit =0.0; string deal_symbol =""; string deal_comment =""; string deal_external_id =""; if(HistoryDealSelect(trans.deal)) { deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET); deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER); deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC); deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON); deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE); deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION); deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP); deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT); deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID); } else return; if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { PrevBars=0; if(deal_reason==DEAL_REASON_SL && deal_commission+deal_swap+deal_profit<0.0) last_lots_sl=deal_volume; else last_lots_sl=0.0; } } }
พารามิเตอร์การตั้งค่า
- Stop Loss - การตั้งค่า Stop Loss;
- Take Profit - การตั้งค่า Take Profit;
- Trailing Stop - การตั้งค่า Trailing;
- Trailing Step - ขั้นตอนการ Trailing;
- Lots - ขนาดล็อตที่ตั้งค่าแบบแมนวล (ถ้า Lots มากกว่า 0 ต้องตั้งค่า Risk เป็น 0);
- Risk - ขนาดล็อตจะถูกคำนวณโดยอัตโนมัติ (ถ้า Risk มากกว่า 0 ต้องตั้งค่า Lots เป็น 0);
- Martingale - อัตราการเพิ่มล็อต เมื่อตำแหน่งก่อนหน้านี้ถูกปิดด้วย Stop Loss และกำไรที่ได้รับเป็นลบ;
- Max lots - ขนาดตำแหน่งสูงสุด; ถ้าขนาดนี้ถูกเกิน จะทำให้ EA หยุดทำงานอย่างผิดปกติ;
- หมายเลข Magic - รหัสประจำตัวเฉพาะสำหรับ EA.
การทดสอบถูกหยุด (EA ถูกถอดออกจากกราฟโดยบังคับ) เนื่องจากล็อตอ้างอิงเกินค่าพารามิเตอร์ Max lots:

โพสต์ที่เกี่ยวข้อง
- สร้าง EA บน MQL5 Wizard ด้วยสัญญาณการซื้อขายจากแท่งเทียน 3 Black Crows/3 White Soldiers + Stochastic
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณซื้อขายจาก Morning/Evening Stars + MFI
- MQL5 Wizard: ระบบเทรดสัญญาณจาก Hammer/Hanging Man + MFI บน MetaTrader 5
- สร้าง Expert Advisor ด้วย MQL5 Wizard สำหรับสัญญาณการเทรด Bullish Harami/Bearish Harami และ RSI
- สร้าง Expert Advisor ด้วย MQL5 Wizard: สัญญาณการเทรดจากรูปแบบราคาที่กลับตัว