MetaTrader 4 Build 529 beta publié avec un nouveau compilateur - page 126

 
Wahoo:


La signification physique est de vérifier que le symbole dont le nom est entré sous forme de chaîne dans les paramètres d'entrée de l'EA est disponible pour la négociation. Le code identique dans MT5 fonctionne.

Le code que je vous ai donné est juste un exemple. C'est un peu différent, mais le sens ne change pas.

P.S. Qu'en est-il de l'erreur 138 dans le testeur ?

Code :

Résultat :

Vérifiez :

if (OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) {
   Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+digits);
   }
Qu'est-ce qui vous empêche de regarder la cause ?
 
Renat:
Cela signifie que les résultats du passage étaient inutiles et rejetés.


Merci pour la traduction. J'avais du mal avec la traduction, je n'arrivais pas à comprendre...

Mais l'ancienne version prend environ 3 heures à optimiser et trouve environ 2000 paramètres d'EA rentables. La nouvelle construction optimise normalement pendant une demi-minute ou même moins au début, trouve des paramètres rentables, puis s'interrompt brusquement et termine l'optimisation.

Je répète, j'ai écrit sur cet étrange comportement d'optimisation il y a environ un mois. Il semble avoir été corrigé. Maintenant, j'ai le même problème.

 
artmedia70:

Vérifiez :

Qu'est-ce qui vous empêche de voir la cause ?


Il n'y a rien sur le chemin.

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0) 
        {
         Print("ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
        }
     }
  }

 
Question à Metacquotes : Pourquoi changer le type de iVolume de double à ulong??? Pourquoi était-il nécessaire de changer le type d'un seul indicateur technique ??? Pourquoi ne pouvait-on pas laisser les choses en l'état ?
 
Wahoo:


Il n'y a rien dans le chemin.


Bref, voilà. SymbolInfoTick semble être encore un peu tordu (il semble copier le VRAI dernier prix, pas celui de l'historique) :

void OnTick()
  {
   if(OrdersTotal()==0)
     {
      string SYMBOL=Symbol();
      int digits=(int)SymbolInfoInteger(SYMBOL,SYMBOL_DIGITS);
      MqlTick lasttick={0};
      if(!SymbolInfoTick(SYMBOL,lasttick))
         return;
      double ask=lasttick.ask;
      double bid=lasttick.bid;

      if(OrderSend(SYMBOL,OP_BUY,0.1,NormalizeDouble(ask,digits),1000,0,0,"Test",0,0,CLR_NONE)<0)
        {
         Print(SYMBOL+" ask = "+DoubleToStr(ask,Digits)+", bid = "+DoubleToStr(bid,Digits)+", digits = "+(string)digits);
         if(OrderSend(Symbol(),OP_BUY,0.1,NormalizeDouble(Ask,Digits),100,0,0,"Test",0,0,CLR_NONE)>0)
            Print("Opened using Ask ="+DoubleToStr(Ask,Digits));
        }

      //=== Final Check
      SymbolInfoTick(SYMBOL,lasttick);
      Print("Ask: "+(string)Ask+"  lastick.ask: "+(string)lasttick.ask);

     }
  }

Résultat :

 
Le volume a dû être modifié pour des raisons de compatibilité avec MT5. Les barres internes dans MT4 sont maintenant les mêmes que dans 5.
 
Renat:
J'ai dû modifier le volume pour des raisons de compatibilité avec MT5. Maintenant les barres internes dans MT4 sont les mêmes que dans 5.

Cela ne peut pas être la raison de la forte divergence entre les résultats des tests sur votre compte de démonstration et, par exemple, sur le compte Alpari où mon client effectue ses tests.

Auparavant, même avec des différences de cotations, les performances d'un même EA sur différents comptes n'étaient pas aussi différentes. En mode visuel, nous pouvons constater que dans un test, la position est clairement positive ou négative, mais que dans un autre test, la situation est tout à fait opposée.

 
Vous devez examiner en détail les divergences avec tous les registres. Vous ne pouvez pas tirer de conclusions à partir d'une vue générale, ce qui signifie que vous avez besoin de détails.
 
Renat:
Vous devez examiner en détail les divergences avec tous les registres. On ne peut pas tirer de conclusions à partir d'une vue générale. Il faut des détails.
Je vois. Je le détaillerai plus tard. Pour l'instant, la principale préoccupation est de mettre au point l'algorithme.
 
MT 560, ME 881. Encore une fois, il s'agit de la réapparition d'anciens bogues, apparemment déjà fermés par vous lors des mises à jour, décrites dans ServiceDesk.
Raison: