Pengarang idea — John Smith, pengarang kod MQL5 — barabashkakvn.
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; } } }
Komen 0