Steve Cartwright: Profi-Trader mit Camel CCI MACD für MetaTrader 5

Mike 2017.03.23 01:33 10 0 0
Anhang

Autor der IdeeJohn Smith, Autor des MQL5-Codesbarabashkakvn.

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;
           }
        }
     }
  }
Liste
Kommentar 0