Accueil Trading Systématique Publication

Optimisez votre Trading avec l'EA Camel CCI MACD sur MetaTrader 5

Pièce jointe
17841.zip (4.12 KB, Télécharger 0 fois)

Auteur de l'idéeJohn Smith, auteur du code MQL5barabashkakvn.

Cet Expert Advisor (EA) est configuré pour trader la paire USDJPY sur le timeframe H1.

L'EA utilise deux moyennes mobiles, un MACD et un CCI. La fonction OnTradeTransaction est utilisée pour obtenir le moment d'ouverture des positions.

Tous les indicateurs sont récupérés à partir de la barre avec l'index 1.

//--- Configuration des Indicateurs 
   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);

Un contrôle approprié est effectué pour vérifier si une position a déjà été ouverte sur la barre actuelle, ce qui évite de vérifier toutes les positions (car d'autres EAs peuvent être en cours d'exécution sur le même compte de trading).

Le moment d'ouverture des positions est contrôlé dans OnTradeTransaction. Si une fermeture de position est enregistrée, le temps d'ouverture sera réinitialisé :

//+------------------------------------------------------------------+
//| Fonction TradeTransaction                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- obtenir le type de transaction en tant que valeur d'énumération 
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- si la transaction est le résultat de l'ajout de la transaction à l'historique
   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;
           }
        }
     }
  }

Articles connexes

Commentaire (0)