Mengoptimalkan Trading dengan EA Steve Cartwright: Camel CCI MACD di MetaTrader 5

Mike 2017.03.23 01:33 11 0 0
Lampiran

Penulis ideJohn Smith, penulis kode MQL5barabashkakvn.

Expert Advisor (EA) ini dirancang khusus untuk trading pasangan mata uang USDJPY pada timeframe H1.

EA ini menggabungkan dua Moving Averages, satu indikator MACD, dan satu indikator CCI. Fungsi OnTradeTransaction digunakan untuk mendapatkan waktu pembukaan posisi.

Semua nilai indikator diambil dari bar dengan indeks 1.

//--- Pengaturan 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);

Kontrol yang tepat dilakukan untuk memastikan apakah posisi sudah dibuka pada bar saat ini, sehingga tidak perlu memeriksa semua posisi (karena EA lain mungkin juga berjalan di akun trading yang sama).

Waktu pembukaan posisi dikontrol dalam OnTradeTransaction. Jika penutupan posisi dicatat, waktu pembukaan akan direset:

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