Strategi Trading USDJPY dengan EA Camel CCI MACD di MetaTrader 5

Mike 2017.03.23 01:33 31 0 0
Lampiran

Pengarang ideaJohn Smith, pengarang kod MQL5barabashkakvn.

EA ini telah disediakan untuk berdagang pasangan matawang USDJPY pada jangka masa H1.

EA ini menggunakan dua Moving Average, satu MACD, dan satu CCI. Fungsi OnTradeTransaction digunakan untuk mendapatkan masa pembukaan posisi.

Semua nilai indikator diambil daripada bar dengan indeks 1.

//--- Penyediaan Indikator 
   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);

Pengesahan yang sesuai dilakukan untuk memastikan sama ada posisi telah dibuka pada bar semasa, jadi tidak perlu memeriksa semua posisi (kerana EA lain mungkin sedang berjalan pada akaun dagangan yang sama).

Masa pembukaan posisi dikawal dalam OnTradeTransaction. Jika penutupan posisi direkodkan, masa pembukaan akan diset semula:

//+------------------------------------------------------------------+
//| Fungsi TradeTransaction                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- dapatkan jenis transaksi sebagai nilai enumerasi 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- jika transaksi adalah hasil penambahan transaksi dalam sejarah
   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;
           }
    }
  }
Senarai
Komen 0