Erreurs, bugs, questions - page 2934

 
Евгений Баженов:

Bonjour, je suis en train de tester mon robot, après avoir terminé les tests j'ai vu beaucoup de champs avec des requêtes dans le Log, que signifient ces piles de messages et que puis-je ajouter au code pour les empêcher d'apparaître ? Merci, bonne année !

Je suppose que la session de négociation du symbole est plus petite que la session de cotation. Les cotations sont ensuite publiées dans le Tester, mais il est interdit de négocier sur ces cotations pendant ces périodes.

 
x572intraday:

Ce qui est fou, c'est quehttps://www.mql5.com/ru/docs/series/timeseries_access mentionne Sleep() dans l'article sur le chargement de l'historique dans le code, mais l'aide pour Sleep() dit : "La fonction Sleep() ne peut pas être appelée depuis des indicateurs personnalisés, parce que les indicateurs sont exécutés dans le thread de l'interface et il ne faut pas le ralentir". Il s'avère que j'ai besoin de charger l'historique dans un indicateur.

L'idiotie de qui ?

Lorsque l'on demande des données à l'indicateur (et non à l'EA), ces mêmes données sont reçues sans délai. Vitaly l'a dit correctement.

Demander la période symbole requise dans OnInit pour initier la création de l'historique requis.

 
Slava:

L'idiotie de qui ?

Lorsque l'on demande les données d'un indicateur (et non d'un Expert Advisor), ces données sont données telles quelles, sans aucun délai. Vitaly a dit correctement.

Demander la période symbole requise dans OnInit pour initier la création de l'historique requis.

1. Si je comprends bien, vous suggérez de faire la demande une fois au début de l'indicateur . Ici,https://www.mql5.com/ru/docs/runtime/event_fire, l'événement Init est entouré d'un grand nombre de conditions :"Cet événement est également généré après un changement de symbole et/ou de période graphique, après une recompilation du programme dans MetaEditor, après un changement des paramètres d'entrée d'un EA ou d'un indicateur personnalisé. Le conseiller expert est également initialisé après le changement de compte."Mais l'utilisateur n'a pas à générer ces événements, il peut s'asseoir confortablement sur le seul TF actuel et regarder l'indicateur, de sorte que la réinitialisation et le rechargement de l'historique plus d'une fois n'auront pas lieu. Cependant, l'absence d'historique ne se produit pas nécessairement au début du travail, l'erreur apparaît soudainement et de manière répétée à des moments aléatoires au cours du travail (de plus, au cours du travail à long terme de l'indicateur, elle peut ne pas apparaître du tout ; souvent, il n'y a pas d'erreur au début du travail). Alors la partie manquante de l'historique devrait être téléchargée non seulement dans OnInit, mais aussi dansOnCalculate, afin d'éviter l'erreur récurrente ?

Ou par"initier la construction du bon historique", vouliez-vous dire qu'il suffit de le faire une fois dansOnInit et qu'ensuite vous n'aurez plus besoin de le faire à nouveau ? Mais d'une part, une erreur se produit même lorsque tout l'historique de l'instrument est chargé et que toutes les échéances sont réglées, parce que l'indicateur est multi-temps et ryllime ; d'autre part, dans les mêmes conditions, une erreur peut ne pas se produire.

2. Que signifie "absence de partie de l'histoire" ? Lorsque vous exécutez le terminal pour la première fois après l'installation, il télécharge l'historique manquant - littéralement celui de gauche, plus tôt dans le temps. Mais il copie le CopyTime(_Symbol,tf,0,1,Arr), c'est-à-dire qu'il copie la dernière barre à droite, pas la barre d'historique. Le nouveau bar pourrait-il avoir un lien avec l'histoire et son absence ?

3. J'admets que mes explications vagues peuvent ne pas suffire à comprendre le problème ; je ne veux pas être envoyé àhttps://www.mql5.com/ru/forum/133408, donc je suis prêt à partager le code avec des commentaires avec les développeurs et d'autres personnes qui voudraient le déboguer ensemble, car je veux rendre l'indicateur disponible gratuitement via CodeBase. Au fait, si c'est le cas, est-il acceptable de publier un code libre non diffusé ?

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
События клиентского терминала - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday:

1. Si je comprends bien, vous proposez de faire une demande une fois au début du travail de l'indicateur, à OnInit. Ici, https://www.mql5.com/ru/docs/runtime/event_fire L 'événement Init est entouré d'un grand nombre de conditions d'accompagnement :"Cet événement est également généré après un changement de symbole et/ou de période graphique, après une recompilation du programme dans MetaEditor, après un changement des paramètres d'entrée d'un EA ou d'un indicateur personnalisé. Le conseiller expert est également initialisé après le changement de compte."Mais l'utilisateur n'a pas à générer ces événements, il peut s'asseoir confortablement sur le seul TF actuel et regarder l'indicateur, de sorte que la réinitialisation et le rechargement de l'historique plus d'une fois n'auront pas lieu. Cependant, l'absence d'historique ne se produit pas nécessairement au début du travail, l'erreur apparaît soudainement et de manière répétée à des moments aléatoires au cours du travail (de plus, au cours du travail à long terme de l'indicateur, elle peut ne pas apparaître du tout ; souvent, il n'y a pas d'erreur au début du travail). Alors la partie manquante de l'historique devrait être téléchargée non seulement dans OnInit, mais aussi dansOnCalculate, afin d'éviter l'erreur récurrente ?

Ou par"initier la construction du bon historique", vouliez-vous dire qu'il suffit de le faire une fois dansOnInit et qu'ensuite vous n'aurez plus besoin de le faire à nouveau ? Mais d'une part, une erreur se produit même lorsque tout l'historique du symbole est chargé et que toutes les échéances sont remplies, parce que l'indicateur est multi-temps et rylltime ; d'autre part, dans les mêmes conditions, une erreur peut ne pas se produire.

2. Que signifie la notion même de "manquer un morceau d'histoire" ? Lorsque vous exécutez le terminal pour la première fois après l'installation, il télécharge l'historique manquant - littéralement celui de gauche, plus tôt dans le temps. Mais il copie le CopyTime(_Symbol,tf,0,1,Arr), c'est-à-dire qu'il copie la dernière barre à droite, pas la barre d'historique. Le nouveau bar pourrait-il, d'une manière ou d'une autre, être lié à l'histoire et à son absence ?
Dans les indicateurs, personne ne vous garantira la sortie des données demandées si elles ne sont pas prêtes.

Les scripts et les conseillers experts ont une garantie suffisante.

Par conséquent, dans les indicateurs, il faut attendre le cycle de disponibilité des données.

Pour augmenter la probabilité d'obtenir les bonnes données, faites de fausses demandes de données dans l'indicateur. Cela provoquera le chargement des données en arrière-plan.
 
Renat Fatkhullin:
Dans les indicateurs, personne ne garantit que les données demandées seront émises si elles ne sont pas prêtes.

Il me semble, du haut de mon clocher, que les données demandées sont prêtes, car il s'agit de la dernière barre disponible pour le moment. Comment peut-il ne pas être prêt ? S'il apparaît sur la carte, il est prêt.

 
Renat Fatkhullin:
Dans les indicateurs, personne ne vous garantira la libération des données demandées si elles ne sont pas prêtes.

Les scripts et les experts offrent une garantie suffisante.

Les indicateurs attendent donc cycle après cycle la disponibilité des données.

Cool... Même dans la nouvelle année dans le poste. Bonne année. ! !!!!!!

 
x572intraday:

Il me semble, du haut de mon clocher, que les données demandées sont prêtes, car il s'agit de la dernière barre disponible pour le moment. Comment peut-il ne pas être prêt ? S'il apparaît sur la carte, il est prêt.

Lisez attentivement ma réponse.
 
Renat Fatkhullin:
Lisez attentivement ma réponse.

Nous devons définir la notion de disponibilité des données. Si je vois une barre dans le terminal, est-ce qu'elle est déjà disponible ou y a-t-il d'autres options ? Et oui, Renat, qu'en est-il du point 3 de mon précédent post ?

 
x572intraday:

Nous devons définir la notion de disponibilité des données. Si je vois une barre dans le terminal, est-ce qu'elle est déjà disponible ou y a-t-il d'autres options ? Et oui, Renat, qu'en est-il du point 3 de mon précédent post ?

Si vous obtenez une réponse de type "fonction", cela signifie que les données ne sont pas disponibles.

Si vous avez des preuves du contraire, vous devez les fournir de manière totalement cohérente et techniquement reproductible.
 
x572intraday:

Il me semble, du haut de mon clocher, que les données demandées sont prêtes, car il s'agit de la dernière barre disponible pour le moment. Comment peut-il ne pas être prêt ? S'il apparaît sur le graphique, c'est qu'il est prêt.

Non, il pourrait s'agir de données provenant de différents endroits ou il n'y a pas de logique.