หน้าแรก การเทรดด้วยระบบ โพสต์

เข้าใจการเทรดด้วย Expert Advisor Camel CCI MACD สำหรับ MetaTrader 5

ไฟล์แนบ
17841.zip (4.12 KB, ดาวน์โหลด 0 ครั้ง)

ผู้เขียนแนวคิดJohn Smith, ผู้เขียนโค้ด MQL5barabashkakvn.

Expert Advisor นี้ถูกตั้งค่าให้เทรดคู่เงิน USDJPY ในกรอบเวลา H1 ครับ

EA นี้ใช้ Moving Average สองตัว, MACD หนึ่งตัว และ CCI หนึ่งตัว โดยใช้ฟังก์ชัน OnTradeTransaction เพื่อรับเวลาที่เปิดตำแหน่ง

ค่าต่างๆ ของอินดิเคเตอร์จะถูกใช้จากแท่งที่มีดัชนี 1.

//--- การตั้งค่าอินดิเคเตอร์ 
   CAMELHIGHP1=iMAGet(handle_iMA_PRICE_HIGH,1);
   CAMELLOWP1=iMAGet(handle_iMA_PRICE_LOW,1);
//
   MACDSP1=iMACDGet(SIGNAL_LINE,1);
   MACDSP2=iMACDGet(SIGNAL_LINE,2);
//
   MACDHP1=iMACDGet(MAIN_LINE,1);
   MACDHP2=iMACDGet(MAIN_LINE,2);
//
   CCIP1=iCCIGet(1);

มีการควบคุมการเปิดตำแหน่งอย่างเหมาะสมเพื่อเช็คว่ามีการเปิดตำแหน่งอยู่แล้วในแท่งปัจจุบันหรือไม่ ซึ่งไม่ต้องเช็คทุกตำแหน่ง (เพราะอาจมี EA อื่นๆ ทำงานอยู่ในบัญชีเทรดเดียวกัน)

เวลาที่เปิดตำแหน่งจะถูกควบคุมในฟังก์ชัน 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_entry        =0;
      long     deal_time         =0;
      string   deal_symbol       ="";
      long     deal_magic        =0;
      if(HistoryDealSelect(trans.deal))
        {
         deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
         deal_time=HistoryDealGetInteger(trans.deal,DEAL_TIME);
         deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
         deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
        }
      else
         return;
      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
        {
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            m_last_close_time=(datetime)deal_time;
           }
         else if(deal_entry!=DEAL_ENTRY_OUT)
           {
            m_last_close_time=0;
           }
    }
  }

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)