Autor der Idee – John Smith, Autor des MQL5-Codes – barabashkakvn.
Der Expert Advisor ist so konfiguriert, dass er USDJPY im H1-Zeitrahmen handelt.
Dieser EA nutzt zwei gleitende Durchschnitte, einen MACD und einen CCI. Die Funktion OnTradeTransaction wird verwendet, um die Eröffnungszeit der Position zu erhalten.
Alle Indikatorwerte stammen von der Kerze mit dem Index 1.
//--- Indikator 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);
Es wird eine geeignete Kontrolle durchgeführt: Ob bereits eine Position auf der aktuellen Kerze eröffnet wurde, sodass nicht alle Positionen überprüft werden müssen (da auch andere Expert Advisors auf demselben Handelskonto aktiv sein können).
Die Eröffnungszeit der Position wird in OnTradeTransaction gesteuert. Wenn der Abschluss einer Position erfasst wurde, wird die Eröffnungszeit zurückgesetzt:
//+------------------------------------------------------------------+ //| TradeTransaction-Funktion | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- Transaktionstyp als Enumerationswert erhalten ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- wenn die Transaktion das Ergebnis der Hinzufügung der Transaktion in die Historie ist 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; } } } }
Kommentar 0