Idee auteur — John Smith, code auteur — barabashkakvn.
Deze Expert Advisor (EA) is geconfigureerd om USDJPY te verhandelen op de H1 tijdsperiode.
De EA maakt gebruik van twee Moving Averages, één MACD en één CCI. De functie OnTradeTransaction wordt gebruikt om de openingstijd van een positie te ontvangen.
Alle indicatorwaarden worden gehaald van de bar met index 1.
//--- Indicator Setup 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);
Er wordt gecontroleerd of er al een positie is geopend op de huidige bar, zodat we niet alle posities hoeven te controleren (omdat er mogelijk andere EAs op hetzelfde handelsaccount draaien).
De openingstijd van de positie wordt gecontroleerd in OnTradeTransaction. Als er een sluiting van een positie is geregistreerd, wordt de open tijd gereset:
//+------------------------------------------------------------------+ //| TradeTransaction functie | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- krijg transactie type als enumeratie waarde ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- als transactie een resultaat is van toevoeging van de transactie in de geschiedenis 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; } } } }