การเปิดตำแหน่งสวนทางกับตำแหน่งที่ปิดไป โดยใช้ปริมาณการเทรดเท่าเดิม นี่ใช้ได้กับทุกสัญลักษณ์และหมายเลขเวทย์ (Magic Number) ใดๆ
ยกตัวอย่าง เรามีตำแหน่ง AUDUSD BUY ขนาด 0.01 เมื่อปิดตำแหน่งนี้ (เช่น เราปิดมันด้วยตนเอง) EA เทรดสวนทาง จะเปิดตำแหน่งใหม่ AUDUSD ทันที ซึ่งตอนนี้จะเป็น SELL แทน
โค้ดทั้งหมดจะอยู่ในฟังก์ชัน OnTradeTransaction:
//+------------------------------------------------------------------+ //| ฟังก์ชัน TradeTransaction | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- รับประเภทการทำธุรกรรมเป็นค่าที่ระบุตัวตน ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- ถ้าธุรกรรมเป็นผลมาจากการเพิ่มธุรกรรมในประวัติ if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_type =-1; long deal_entry =-1; double deal_volume =0.0; string deal_symbol =""; if(HistoryDealSelect(trans.deal)) { deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); } else return; if(deal_entry==DEAL_ENTRY_OUT) { switch((int)deal_type) { case DEAL_TYPE_BUY: m_trade.Buy(deal_volume,deal_symbol); break; case DEAL_TYPE_SELL: m_trade.Sell(deal_volume,deal_symbol); break; default: break; } } } }
ที่นี่เราจะรอให้ตำแหน่งการปิด (DEAL_ENTRY_OUT) ปรากฏ เมื่อดีลนี้เกิดขึ้น เราจะตรวจสอบตำแหน่งการทำธุรกรรม (ถ้าเราปิด BUY จะเป็นดีล SELL และในทางกลับกัน) จากนั้นเราจะเปิดตำแหน่งใหม่
ความคิดเห็น 0