เทรดสวนทาง - ระบบ EA สำหรับ MetaTrader 5

Mike 2017.11.03 21:25 20 0 0
ไฟล์แนบ

การเปิดตำแหน่งสวนทางกับตำแหน่งที่ปิดไป โดยใช้ปริมาณการเทรดเท่าเดิม นี่ใช้ได้กับทุกสัญลักษณ์และหมายเลขเวทย์ (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