Erreurs, bugs, questions - page 2856

 
Сергей Таболин:

Igor, la question ne portait pas sur l'erreur dans le code lui-même, mais sur la raison pour laquelle il écrit une erreur pendant l'optimisation, mais pas pendant une seule exécution ?

Je ne suis pas doué pour la télépathie, j'apprends juste.

mais je vais essayer.... En supposant que vous avez écrit le code au niveau approprié, il est possible que pendant l'optimisation vous arriviez à la valeur de la variable d'entrée, ce qui provoque une erreur critique.

.... Une autre façon de le dire est de supposer que vous ne savez pas que l'optimiseur reçoit des tâches par lots, et qu'il y a peut-être une erreur dans l'une des tâches

.... Vous pouvez également supposer que si vous initialisez une variable dans la portée globale (il peut s'agir d'un appel de fonction lors de l'initialisation ou du constructeur d'une classe) et que l'optimiseur l'initialise une fois pour les constantes et les statiques (bien qu'il semble que seulement pour les statiques - j'ai oublié) pour chaque agent, pendant toute la durée de l'optimisation, mais en une seule fois à chaque passage...

... hz

 
Yura Fomin:

Bonjour. J'aiun malentendu :
Comment puis-je utiliser Trade\Trade.mqh pour modifier un ordre existant ?
La commande OrderModify de Trade.mqh me demande de définir 7 paramètres, dont le dernier : l'ordre StopLimit, ce qui me perturbe, car je n'en ai pas du tout besoin... Et il n'est pas requis en exécution standard...

J'ai un ordre Sell Stop, je veux le déplacer vers le haut après le minimum et je ne peux pas le faire avec OrderModify, et je ne comprends pas comment modifier l'ordre SellStop existant en utilisant Trade\Trade.mqh

Je dois utiliser le dilettage et une nouvelle commande.

Comment déplacer correctement le niveau d'arrêt de vente ?

Il existe un exemple dansPending Trailing

Pending Trailing
Pending Trailing
  • www.mql5.com
Советник относится к классу утилит. Работает со всеми отложенными ордерами установленными в терминале. Подтягивает отложенный ордер вслед за ценой. Например отложенные ордера 'Buy stop' и 'Sell limit'...
 
TheXpert:
Il n'y a pas besoin de point-virgule après les accolades, probablement dans aucun langage.
Merci. L'ambiguïté de la syntaxe lorsque les deux ont raison n'est pas bonne.
 
Igor Makanu:

Je ne suis pas doué pour la télépathie, j'apprends juste.

mais je vais essayer.... En supposant que votre code est écrit à un niveau approprié, il est possible que pendant l'optimisation vous arriviez à la valeur de la variable d'entrée qui cause une erreur critique.

.... Une autre façon de le dire est de penser que vous ne savez pas que l'optimiseur reçoit un lot de tâches et qu'il y a peut-être une erreur dans l'une des tâches

.... Vous pouvez également supposer que si vous initialisez une variable dans la portée globale (il peut s'agir d'un appel de fonction lors de l'initialisation ou du constructeur d'une classe) et que l'optimiseur l'initialise une fois pour les constantes et les statiques (bien qu'il semble que seulement pour les statiques - j'ai oublié) pour chaque agent, pendant toute la durée de l'optimisation, mais en une seule fois à chaque passage...

... hz

)))))

Qu'est-ce que la télépathie a à voir avec ça ?

Il y a un tableau, il est initialisé et utilisé sans problème. Tout fonctionne. Mais sur le chemin de la sortie, il y a un désordre...

void OnDeinit(const int reason)
{
   //Print(ArraySize(netMLP));
   //Print(ArraySize(indicators)+1);
   for(int i = ArraySize(indicators); i >= 0; i--) delete netMLP[i];

Tout a été vérifié. Mais la différence entre la façon dont l'analyseur se comporte en mode optimisation et en exécution simple est évidente. La question est de savoir pourquoi. S'il y a quelque chose qui ne va pas quelque part, d'une manière ou d'une autre, ça doit être faux dans les deux sens. N'est-ce pas ?

 
Сергей Таболин:

)))))

Qu'est-ce que la télépathie a à voir avec ça ?

Il existe un tableau, il est initialisé et utilisé sans problème. Tout fonctionne. Mais d'un autre côté, à la sortie, une telle catastrophe se produit...

Tout a été vérifié. Mais la différence entre la façon dont l'analyseur se comporte en mode optimisation et en exécution simple est évidente. La question est de savoir pourquoi. S'il y a quelque chose qui ne va pas quelque part, d'une manière ou d'une autre, ça doit être faux dans les deux sens. N'est-ce pas ?

Écrivez-le par décence :

for(int i = ArraySize(netMLP); i >= 0; i--) delete netMLP[i];

Il n'y a donc aucune garantie que les dimensions soient les mêmes. Ce que sont les tableaux, personne ne le sait.

 
Stanislav Korotky:

Écrivez-le pour le bien du décorum :

Il n'y a donc aucune garantie que les dimensions soient les mêmes. Personne ne sait ce que sont les tableaux.

Je le sais)))

Je l'ai remplacé. L'erreur que j'ai spécifiée a disparu )))) Mais l'autre continue d'apparaître :

2020.09.24 22:48:38.470 Core 3  pass 11877 tested with error "OnInit returned non-zero code 1" in 0:00:00.000

Je le répète : il n'y avait rien de tel dans la version précédente.

J'ai plusieurs contrôles avec return(INIT_FAILED) ;

Mais elles sont toutes précédées d'empreintes. Mais il n'y a pas d'empreintes. (((

 
Сергей Таболин:

seulement écrire dans le fichier :

- activation/désactivation de l'optimisation des signes

- numéro d'agent

- et toutes les variables utilisées dans OnDeanit()

sans cela vous ne trouverez pas de bug - l'optimiseur fonctionne sans problèmes, je l'utilise tout le temps

 
Сергей Таболин:

Je le fais)))

Remplacé. L'erreur que j'ai mentionnée a disparu )))) Mais un autre continue d'apparaître :

Je répète qu'il n'y avait rien de tel dans la version précédente.

Double-cliquez sur le passage d'optimisation correspondant et obtenez un journal d'exécution unique avec tous les détails, pourquoi l'initialisation a échoué - ligne et colonne dans la source.

 
Igor Makanu:

seulement écrire dans le fichier :

- activation/désactivation de l'optimisation des signes

- numéro d'agent

- et toutes les variables utilisées dans OnDeanit()

Sans cela, vous ne trouverez pas le bug - l'optimiseur fonctionne sans aucun problème, je l'utilise tout le temps.

Ok, je vais me reconnecter en écrivant tout dans le fichier. Il y aura peut-être une raison... qui n'était pas là avant...

 
Сергей Таболин:

)))))

Qu'est-ce que la télépathie a à voir avec ça ?

Il existe un tableau, il est initialisé et utilisé sans problème. Tout fonctionne. Mais d'un autre côté, à la sortie, une telle catastrophe se produit...

Tout a été vérifié. Mais la différence entre la façon dont l'analyseur se comporte en mode optimisation et en exécution simple est évidente. La question est de savoir pourquoi. S'il y a quelque chose qui ne va pas quelque part, d'une manière ou d'une autre, ça doit être faux dans les deux sens. N'est-ce pas ?

 for(int i = ArraySize(indicators); i >= 0; i--) delete netMLP[i];

Vous êtes sûr à 100% que tout est vérifié ?

Je le vois sortir de la limite du réseau.

Raison: