Backtesting EA multi-devises - page 2

 
Dans mon cas, la solution était la méthode IsNewBar() et l'activation de la méthode d'exécution "Every Tick", à moins que mon EA ne fonctionne que sur les prix ouverts...
Documentation on MQL5: Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants
  • www.mql5.com
Standard Constants, Enumerations and Structures / Indicator Constants / Price Constants - Documentation on MQL5
 
trendick:

Ali, l'exemple que j'ai mentionné ci-dessus est l'EA auquel vous faites référence, qui est la source de la fonction IsNewBar() que vous avez mentionnée, et qui l'utilise déjà.

Comment expliquez-vous cela ?

Je parlais de mon EA qui trade sur deux symboles.un symbole reçoit les données avec ontick()

l'autre utilise Isnewbar()

J'ai également essayé d'obtenir les deux cotations en utilisant isnewbar comme l'EA discuté ci-dessus et j'ai eu les mêmes problèmes. Cependant, en obtenant les cotations du symbole original avec ontick(), le problème a été résolu.

Bien sûr, il y a un problème avec le testeur, je viens de montrer comment j'ai réussi à obtenir les résultats souhaités.

 
kgo:
Dans mon cas, la solution était la méthode IsNewBar() et l'activation de la méthode d'exécution "Every Tick", à moins que mon EA ne fonctionne que sur les prix ouverts...

Pouvez-vous élaborer ? peut-être un extrait de code pour démontrer ? Pouvez-vous gérer 3 devises ?
 
trendick:
Pouvez-vous élaborer ? peut-être un extrait de code pour démontrer ? Pouvez-vous gérer 3 devises ?

Ok, je vois ce que vous voulez dire. L'une des paires est utilisée pour déclencher l'ouverture d'une nouvelle barre et pour les autres, vous lisez instantanément les ticks.

 

Kgo, mais cela ne résout toujours pas le problème dans mon cas. Pourriez-vous montrer un extrait de ce que vous faites ?

Merci, trendick

 
Merci TheEconmist ! (Je pensais que vous vous en teniez à l'hypothèse de la marche aléatoire...:-)) : je vérifie cela tout de suite.
 
J'ai fait un nouveau test et mon post précédent est incorrect. La méthode IsNewBar() n'est pas utile. TheEconomist montre un bon exemple de la façon dont OnTick() doit être implémenté pour un EA multi-devises.
 
Pouvez-vous croire que je ne sais même pas où se trouve cette méthode IsNewBar() ? Quelle classe ?
 
TheEconomist:
Pouvez-vous croire que je ne sais même pas où se trouve cette méthode IsNewBar() ? Quelle classe ?

Nous nous référons à la méthode de l'article 105. La voici (seuls le début et la fin sont pertinents) :

Le voici :

/+X================================================================X+
//| IsNewBar() function                                              |
//+X================================================================X+
bool IsNewBar(int Number,string symbol,ENUM_TIMEFRAMES timeframe)
  {
//----+
   static datetime Told[];
   datetime Tnew[1];
//----+ Declare variable to store sizes of variables arrays
   static int Size_=0;

//----+ Change size of variables arrays
   if(Number+1>Size_)
     {
      uint size=Number+1;
      //----
      if(ArrayResize(Told,size)==-1)
        {
         string word="";
         StringConcatenate(word,"IsNewBar( ",Number,
                           " ): Error!!! Unable to change sizes of variables arrays!!!");
         Print(word);
         //----          
         int error=GetLastError();
         ResetLastError();
         if(error>4000)
           {
            StringConcatenate(word,"IsNewBar( ",Number," ): Error code ",error);
            Print(word);
           }
         //----                                                                                                                                                                                                  
         Size_=-2;
         return(false);
        }
     }

   CopyTime(symbol,timeframe,0,1,Tnew);
   if(Tnew[0]!=Told[Number])
     {
      Told[Number]=Tnew[0];
      return(true);
     }
//----+
   return(false);
  }
Raison: