Penulis ide — John Smith, penulis kode MQL5 — barabashkakvn.
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; } } } }
Komentar 0