Erreur de validation lors de la mise sur le marché du robot de trading. - page 4

 

Bonjour !

Aujourd'hui, le validateur a commencé à donner un message :

Vérifié avec trois examinateurs, 10 secondes et ça échoue. Quel peut être le problème, peut-être avez-vous quelque chose avec le logiciel !

P.S. J'ai mis pour les contrôles dans OnTick() la première ligne du print :

Impossible d'avoir un rapport de testeur vierge ! !! Mes journaux sont pleins :


 
Andrey Kaunov:

Aujourd'hui, le validateur a commencé à émettre un message :

C'était, c'est passé. Erreur du validateur.

 
Andrey Kaunov:

Bonjour !

Le validateur a commencé à émettre un message aujourd'hui :

Merci pour votre message. Corrigé.

 

Oui, le validateur est en place et fonctionne. Mais maintenant, il y a une autre chose étrange. Le validateur utilisé pour donner ce résultat

En même temps, sur mon testeur, tout va bien. J'ai mis une béquille pour vérifier le code (division par zéro) :


Et j'ai eu :

Il s'avère que, lors du test, le validateur laisse encore sur la fonction d'ouverture des ordres. On ne sait absolument pas pourquoi il donne :aucune opération commerciale

 
Andrey Kaunov:

Oui, le validateur est en place et fonctionne. Mais maintenant, il y a une autre chose étrange. Le validateur utilisé pour donner ce résultat

En même temps, sur mon testeur, tout va bien. J'ai mis une béquille pour vérifier le code (division par zéro) :


Et j'ai eu :

Il s'avère que, lors du test, le validateur laisse encore sur la fonction d'ouverture des ordres. Je ne comprends pas pourquoi l'analyseurne génèreaucune opération de trading.

Très probablement, une erreur se produit lors de l'envoi d'une commande et le journal contient quelque chose comme GetLastError. Ce serait formidable si une fonction du type Throw(code) était ajoutée à MQL qui conduirait à un arrêt comme la division par zéro mais renverrait le code et ensuite nous pourrions écrire Throw(GetLastError()) pour obtenir un indice dans le journal. Il existe, par ailleurs, la fonction TerminalClose(retcode) - vous pouvez essayer de l'utiliser, mais je soupçonne qu'elle est simplement désactivée dans autotester.

 

Je suis tout à fait d'accord.

Idéalement, bien sûr, le validateur enverrait des journaux de test plutôt qu'un simple rapport de trois lignes. Il y aurait alors une chance de comprendre ce qui ne va pas au lieu de montrer du doigt le ciel.

Réfléchissez-y.

 
Andrey Kaunov:

Je suis tout à fait d'accord.

Idéalement, bien sûr, le validateur enverrait des journaux de test plutôt qu'un simple rapport de trois lignes. Il y aurait alors une chance de comprendre ce qui ne va pas au lieu de montrer du doigt le ciel.

Réfléchissez-y.

Il y aura plutôt des moyens de contourner (cacher) une erreur particulière plutôt que de rédiger correctement la logique des fonctions commerciales. Il ne devrait pas y avoir d'erreurs de validation si les paramètres d'entrée "idiots" sont correctement pris en compte et traités, ou si les conditions de transaction sont calculées de manière incorrecte pour la transaction.

 

Il n'y a pas d'erreur ici, je ne comprends pas du tout ce qui se passe. J'ai mis une béquille (division par zéro) avant la fonction commerciale :

Ça marche :

Je l'enlève, ça me donne la même chose.

Pas d'opérations commerciales.

Je ne comprends pas ce qui empêche le validateur d'OrderSend(). Après tout, si elle lui parvient, il doit y avoir des erreurs de facturation (bien que je les aie toutes corrigées) 130, 131, 134, ..., mais pas"aucune opération commerciale". Tout ce que j'ai à faire maintenant est d'insérer dans OnInit() un ordre en attente quelque part loin de lui, je ne sais pas comment me battre avec lui.

 
Andrey Kaunov:

Il n'y a pas d'erreur ici, je ne comprends pas du tout ce qui se passe. J'ai mis une béquille (division par zéro) avant la fonction commerciale :

Ça marche :

Je l'enlève, ça me donne la même chose.

Pas d'opérations commerciales.

Je ne comprends pas ce qui empêche le validateur d'OrderSend(). Après tout, si elle lui parvient, il doit y avoir des erreurs de facturation (bien que je les aie toutes corrigées) 130, 131, 134, ..., mais pas"aucune opération commerciale". Tout ce que j'ai à faire maintenant est d'insérer dans OnInit() un ordre en attente quelque part loin de lui, je ne sais pas comment me battre avec lui.

Bon après-midi. Essayez d'ajouter la fonction dont j'ai parlé ici plus tôt.
 
C'est probablement juste elle.
Raison: