Home Systeemhandel Bericht

Steve Cartwright's Camel CCI MACD: De Beste EA voor MetaTrader 5

Bijlage
17841.zip (4.12 KB, Downloaden 3 keer)

Idee auteurJohn Smith, code auteurbarabashkakvn.

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;
           }
        }
     }
  }

Gerelateerde berichten

Reactie (0)