Trouble de l'erreur il n'y a pas d'opérations commerciales - page 4

 
Alexey Viktorov:

L'ordinateur est un idiot. © M.M. Botvinnik.

Faites donc semblant d'être un idiot et essayez de faire passer l'algorithme du point de vue d'un idiot et avec les paramètres définis par un idiot. C'est dans cette optique que s'inscrit l'autovalidateur. Faites attention au "retour d'information". Le conseiller expert vous informe-t-il des erreurs ?

J'ai finalement compris, peut-être que quelqu'un peut aider, en général, le soviétique a seulement lorsque le MM a été vérifié pour un lot minimum, et si hardcore mis lot = 0,01, eh bien, dans le dépôt validateur s'avère être 1 $ (trouvé cette information dans l'un des sujets), respectivement, il utilise le lot 0,001 (ou ainsi) pour le commerce et parce que j'ai toujours eu dans un endroit a été le lot 0,01, respectivement, il a manqué les moyens et le robot ne traite pas)

 
Roman Gergert:

J'ai finalement compris, peut-être quelqu'un va aider, en général, le conseil d'administration que lorsque le MM a été vérifié pour un lot minimum, et si hardcore lot set = 0,01, eh bien, dans le dépôt validateur s'avère être 1 $ (trouvé cette information dans l'un des sujets), respectivement, il utilise le lot 0,001 (ou si) pour le commerce et parce que j'ai toujours eu dans un endroit un lot de 0,01, respectivement, il a manqué les fonds et le robot ne traite pas)

Je voudrais en reparler. Votre réponse ne m'aide pas. J'ai un calcul de volume et si tout ne rentre pas, le volume minimum est utilisé :

SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN)

Au final, mettez le volume minimum en une seule fois sans aucun calcul. Puis vient le contrôle de la marge... et aucune opération commerciale.

Hier, je suis tombé sur une réponse du forum disant que parfois un seul et même code peut être envoyé après un certain temps et qu'il passera. Le temps a passé, il n'est pas envoyé.

Que faire, il y a 2 semaines, cette fonction de détection de volume a fait défaut et depuis, elle n'a pas changé du tout !!!

 
Evgeniy Scherbina:

Je voudrais en reparler. Votre réponse ne m'aide pas. J'ai un calcul de volume, et si tout ne rentre pas, le volume minimum est utilisé :

Au final, mettez le volume minimum en une seule fois sans aucun calcul. Puis vient le contrôle de la marge... et aucune opération commerciale.

Hier, je suis tombé sur une réponse du forum disant que parfois un seul et même code peut être envoyé après un certain temps et qu'il passera. Le temps est passé, ça n'envoie pas.

Que faire, il y a 2 semaines cette fonction de détection du volume est passée, et depuis elle n'a pas changé du tout ! !!

Je vais être un vieux de la vieille. Avec un tel classement, des chiffres sous l'avatar, et ayant un problème, vous n'avez pas vu le sujet où il a été discuté. Et c'est là que la solution a été trouvée.

Автоматический валидатор - проблемы
Автоматический валидатор - проблемы
  • 2019.04.26
  • www.mql5.com
Пытаюсь обновить версию советника и получаю ошибку. Тот же советник в тестере стратегий. Паралельно пишу советники и для MT4, там все ОК...
 
Alexey Viktorov:

Je vais être un vieux de la vieille. Avec un tel classement, des chiffres sous l'avatar, et ayant un problème, vous n'avez pas vu le sujet où il a été discuté. Et voilà, vous avez trouvé une solution.

Parmi les peuples de Russie, il y a ceux qui prient les dieux païens, et ceux qui répondent...
 
Evgeniy Scherbina:
Parmi les peuples de Russie, il y a ceux qui prient les dieux païens, et ceux qui répondent à l'appel.

J'ai répondu, mais je ne suis pas un dieu païen. Je pense qu'il s'agit d'une solution temporaire au problème, j'espère qu'il sera bientôt réglé.

 
Note - ce commentaire est probablement plus destiné à moi-même la prochaine fois que je chercherai l'erreur "il n'y a pas d'opérations commerciales".
J'ai utilisé ForceStop dans des endroits douteux. En outre, elle apparaîtra dans le rapport comme une division par zéro et l'emplacement exact de cette erreur.
Exemple dans mon cas :
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
int ForceStop=0;
int sstop=0;
bool CheckVolumeValue(double volume,string &description)
  {
  
//--- минимально допустимый объем для торговых операций
   double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   if(volume<min_volume)
     {     
      description=StringFormat("Volume is less than the minimum allowable SYMBOL_VOLUME_MIN=%.2f",min_volume);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }

//--- максимально допустимый объем для торговых операций
   double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   if(volume>max_volume)
     {
      description=StringFormat("Volume is greater than the maximum allowable SYMBOL_VOLUME_MAX=%.2f",max_volume);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }

//--- получим минимальную градацию объема
   double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   int ratio=(int)MathRound(volume/volume_step);
   if(MathAbs(ratio*volume_step-volume)>0.0000001)
     {
      description=StringFormat("The volume is not a multiple of the minimum gradation SYMBOL_VOLUME_STEP=%.2f, Closest correct volume %.2f",
                               volume_step,ratio*volume_step);
      sstop=5/ForceStop; // force stop, zerro divide
      return(false);
     }
   description="Correct value of volume";
   return(true);
  }
 

Bro, ça m'a aidé de déplacer toutes les variables dans l'en-tête du code.

void OnDeinit

{
Alert(GetLastError()) ;

}

Et dans l'init ResetLastError() ;

Je ne sais pas ce qui a marché, mais quelque chose comme ça .

 

Cela m'aide à modifier (éditer) simplement quelques lignes du code.
Ou simplement ajouter des lignes vides, et recompiler à nouveau.

Je pense que c'est une sorte de bug sur le serveur.

 
Taras Slobodyanik:

Ou simplement ajouter des lignes vides, et recompiler à nouveau.

Confirmé, parfois il suffit de recompiler et ça marche.

 
Nauris Zukas:

Confirmé, parfois il suffit de recompiler et ça passe.

Ce n'est pas parce que je l'ai recompilé, c'est parce que le test a commencé à une date différente. Et j'ai remarqué un tel bug, si vous glissez quelque chose qui a déjà été, alors le test ne se produit pas, et donne immédiatement le résultat du test précédent. Ne vous laissez donc pas berner par de telles béquilles. Essayez de rendre ça normal. S'il manque quelque chose ou si les paramètres ne sont pas valides, signalez-le via Print et tout sera corrigé.

Raison: