Erreurs, bugs, questions - page 3132

 
Yury Lemeshev #:

Il n'y a pas d'erreur dans le code, le code a été réécrit pour éliminer l'erreur, et l'erreur n'apparaît pas régulièrement, c'est complètement chaotique.

Les miracles n'arrivent pas dans ce monde... Voici l'un des télépathes qui n'a pas encore fait de bêtises et qui parle aussi d'une erreur.

 
Yury Lemeshev #:

Il y a un problème, il apparaît de manière aléatoire et occasionnelle.

Apparaît lorsque l'on travaille dans le testeur avec plusieurs devises.

Dans chaque cycle, je demande les prix réels des symboles. Si, pour une raison quelconque, le testeur ne reçoit pas de cotations pour un symbole particulier, il utilise les cotations obtenues précédemment pour un autre symbole.

Je dois ouvrir une position si le prix est supérieur au prix spécifié. Je dois ouvrir une position si j'ai reçu des données erronées d'un autre symbole.

Le symbole EURCAD s'ouvre si le prix est supérieur à 1,45117. 1.74425>1.45117 ? Oui, il est plus élevé mais c'est le prix d'un autre symbole.

Nous avons détecté 7 commandes erronées sur 500.

La réponse est dans la question elle-même. Le robot peut utiliser des citations non pertinentes ou des données erronées provenant d'un autre symbole. Je ne sais pas quelle est l'idée exacte. Mais quelque chose est manifestement faux dans le code...

 
Mihail Matkovskij #:

La réponse est dans la question elle-même. Le robot peut utiliser des citations non pertinentes ou des données incorrectes provenant d'un autre symbole. Je ne sais pas quelle est l'idée, bien sûr. Mais quelque chose est manifestement faux dans le code.

Il y a un problème dans le code. Il y a des lacunes dans la logique. Le clignotement des jambages en général est difficile à prévoir et à éviter.

 
2021.12.31 22:14:19.911 2019.01.24 18:50:09 -2117- EURGBP 0.86993
2021.12.31 22:14:19.912 2019.01.24 18:50:10 -2117- EURGBP 0.86994
2021.12.31 22:14:19.912 2019.01.24 18:50:10-2117- EURGBP 1.5969
2021.12.31 22:14:19.912 2019.01.24 18:50:10 achat instantané 0,01 EURGBP à 0,86993 (0,86985 / 0,86993 / 0,86985)
2021.12.31 22:14:19.912 2019.01.24 18:50:10 deal #13 buy 0.01 EURGBP at 0.86993 done (based on order #13)
2021.12.31 22:14:19.912 2019.01.24 18:50:10 affaire conclue [#13 achat 0.01 EURGBP à 0.86993]
2021.12.31 22:14:19.912 2019.01.24 18:50:10 ordre exécuté acheter 0,01 à 0,86993 [#13 acheter 0,01 EURGBP à 0,86993].

Chaque cycle est correct, mais à ce moment-là, les données d'un autre symbole sont substituées. 1.5969>0.88506 oui, la position s'ouvre. Ce n'est pas un bug de code. C'est un bug dans le testeur.

euSY01b=0;euSY01a=0;
   if(SymbolInfoDouble(euSY01,SYMBOL_BID,euSY01b)==true && SymbolInfoDouble(euSY01,SYMBOL_ASK,euSY01a)==true && euSY01b>0 && euSY01a>0)
      {
      GlobalVariableSet("["+MAGICs+"] "+euSY01+" LAST BID",euSY01b);GlobalVariableSet("["+MAGICs+"] "+euSY01+" LAST ASK",euSY01a);
      }
 
Valeriy Yastremskiy #:

Dans le code, c'est comme ça. Il y a des lacunes dans la logique. Les articulations vacillantes en général sont difficiles à prévoir et à éviter.

Que pensez-vous de la logique sans le code ?

 
Yury Lemeshev #:
2021.12.31 22:14:19.911 2019.01.24 18:50:09 -2117- EURGBP 0.86993
2021.12.31 22:14:19.912 2019.01.24 18:50:10 -2117- EURGBP 0.86994
2021.12.31 22:14:19.912 2019.01.24 18:50:10-2117- EURGBP 1.5969
2021.12.31 22:14:19.912 2019.01.24 18:50:10 achat instantané 0,01 EURGBP à 0,86993 (0,86985 / 0,86993 / 0,86985)
2021.12.31 22:14:19.912 2019.01.24 18:50:10 deal #13 buy 0.01 EURGBP at 0.86993 done (based on order #13)
2021.12.31 22:14:19.912 2019.01.24 18:50:10 affaire conclue [#13 achat 0.01 EURGBP à 0.86993]
2021.12.31 22:14:19.912 2019.01.24 18:50:10 ordre exécuté acheter 0,01 à 0,86993 [#13 acheter 0,01 EURGBP à 0,86993].

Chaque cycle est correct, mais les données d'un autre symbole sont substituées dans le moment. 1.5969>0.88506 oui, la position s'ouvre. Ce n'est pas un bug de code. C'est un bug dans le testeur.

Ensuite, vérifiez le timing du symbole avant d'entrer dans la recherche du signal.

 
Mihail Matkovskij #:

Que pensez-vous de la logique sans code ?

Définition/localisation du problème - algorithme de solution ou logique de solution - code. Malheureusement, cela n'est souvent pas compris ici en mode "un pour tous". Le codage commence avant que le problème ne soit clairement formulé, pas même l'algorithme de solution. Bien entendu, la logique selon laquelle toute requête est toujours exécutée est non seulement incorrecte pour le testeur, mais aussi dans la réalité. Par conséquent, nous devons prendre les bonnes mesures pour éviter les conséquences toxiques des événements vacillants))). Joyeuses fêtes !!!!

 
Valeriy Yastremskiy #:

Joyeuses fêtes !!!!

Merci. Pareil pour vous !

Pour répondre à l'essentiel de la question, j'ai écrit ci-dessus ce qui doit être fait. Et alors la logique fonctionnera.

 
Mihail Matkovskij #:

ensuite, vérifiez la synchronisation du symbole avant d'entrer dans la recherche du signal.

   if(SymbolIsSynchronized(euSY01)==true && SymbolInfoDouble(euSY01,SYMBOL_BID,euSY01b)==true && SymbolInfoDouble(euSY01,SYMBOL_ASK,euSY01a)==true && euSY01b>0 && euSY01a>0)

Si vous le faites, et qu'il y a 7 lignes de ce type dans le code pour 7 paires, alors la vue d'ensemble du marché n'aura que des cotations pour une seule devise.


 
Yury Lemeshev #:

Soyez cohérent. Si vous vérifiez

SymbolIsSynchronized(euSY01)==true

puis vérifier et

(euSY01b>0)==true

:)