Erreurs, bugs, questions - page 1524
Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Ugh, donc le bug n'est pas de retour - vous pouvez fermer le terminal et être sûr que tous les graphiques sont sauvegardés.
Il s'agissait à l'origine d'un indicateur en boucle. Ce qui n'est absolument pas recommandé. Même à titre d'illustration
Tout indicateur utilise au moins un cycle.
Une boucle sans contrôle IsStopped rend cette boucle potentiellement infinie. Parce qu'il peut y avoir des millions de données de prix dans le tableau, et que chaque itération peut être écrite de manière non optimale.
Un programmeur qui crée délibérément une boucle infinie ne peut pas invoquer un manque d'information dans la documentation ; de plus, la documentation indique explicitement que
В одном потоке с индикаторами также последовательно выполняются остальные действия по данному символу - обработка тиков и синхронизация истории. Это означает, что если в индикаторе выполняется бесконечное действие, все остальные события по его символу никогда не выполнятся.
Le programmeur conscient comprend immédiatement que, dans ce cas, c'est lui qui est responsable de l'efficacité de l'indicateur, et non la documentation. En outre, il y a eu beaucoup de discussions et d'articles sur ce sujet.
Le programmeur consciencieux comprend immédiatement que, dans ce cas, il est responsable de l'efficacité de l'indicateur, et non de la documentation. En outre, de nombreux débats et articles ont été consacrés à ce sujet.
Il est dit que lorsque vous fermez le terminal, le programme est forcé de se terminer après 3 secondes déjà. C'est ainsi que cela fonctionne maintenant et continuera à fonctionner. Ils ne veulent pas ramener l'arrêt forcé lorsqu'on retire le programme du tableau sans terminer le terminal.
Tout ceci est correct, je me repens que je n'avais pas la vérification de IsStopped et que j'ai donc eu des problèmes d'interruption de la construction d'indicateurs complexes uniquement par ma faute. Mais, d'un autre côté, je me suis habitué au fait que le fonctionnement du programme et sa documentation doivent coïncider.
La documentation ne peut pas prendre en compte toutes les nuances. Surtout lorsque nous parlons de secondes, de GHz, de mégaoctets - des valeurs mesurables mais qui dépendent fortement de leur environnement.
Nous essayons de combler les lacunes de la documentation (bien que nous espérions secrètement une présomption de conscience).
Hum, j'ai fait un commentaire sur quadruple - il semble compléter et fermer tout correctement maintenant, mais il avait l'habitude de perdre les graphiques avec les EAs.
Le quatuor a mis en parallèle les processus de clôture de chaque graphique. Ils ont donc pu augmenter le temps d'attente pour chacun d'eux.
Dans le passé, les tableaux étaient mémorisés un par un, et chacun d'entre eux bénéficiait du même temps d'arrêt. Plus il y avait de graphiques et plus il y avait d'EA inhibés sur ceux-ci, plus le processus de clôture était long.
Le quatuor a mis en parallèle les processus de clôture de chaque graphique. Ils ont donc pu augmenter le temps d'attente pour chacun d'eux.
Dans le passé, les tableaux étaient mémorisés un par un, et chacun d'entre eux bénéficiait du même temps d'arrêt. Plus il y avait de tableaux et plus le processus de clôture était long.
Compris grossièrement.
Lent pas lent, beaucoup dépend du matériel et des tâches que l'EA effectue, et vous devez tenir compte du fait que les programmes ne sont souvent pas écrits par des programmeurs professionnels - c'est pourquoi il y a un langage de programmation, je pense.
MT4. Je voudrais encore une fois attirer votre attention sur les particularités de l'initialisation des variables globales du programme.
Les variables globales sont initialisées une fois lorsque vous installez le programme sur un graphique ou que vous recompilez le code.
Si vous voulez changer de cadre temporel, de symbole ou de paramètres d'entrée, les variables globales ne sont pas réinitialisées (par exemple, elles ne sont pas effacées), et conservent les valeurs qu'elles ont obtenues lors du travail avec les cadres temporels, les symboles ou les paramètres d'entrée précédents.
Il s'avère que si vous n'effacez pas toutes les variables globales de manière programmatique, alors lorsque vous modifiez les paramètres du TF, de l'instrument ou de l'entrée, le code fonctionnera avec les valeurs précédentes, c'est-à-dire de manière incorrecte.
Est-ce raisonnable ? Ne serait-il pas préférable de le faire dans le testeur de stratégie ? Les variables globales y sont réinitialisées à chaque changement de TF, d'instrument ou de paramètres d'entrée.
MT4. Une fois de plus, je voudrais attirer votre attention sur les particularités de l'initialisation des variables globales du programme.
Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie
Bugs, bugs, questions
Slawa, 2016.02.24 07:34
File d'attente. L'application ne date que de deux heures.
En général, ces questions doivent être posées sur le forum. Parce que beaucoup peuvent être affectés. Je me permets de vous citer et de vous répondre immédiatement.
C'est un comportement planifié. En fait, il est explicitement décrit dans la documentation
Le chargement et le téléchargement impliquent une réinitialisation complète de tout.
En cinq, comme vous l'avez remarqué à juste titre, la situation est similaire.
C'est vrai, c'était historiquement en quatre, et nous avons changé ce comportement au début lors du passage au nouveau MQL4 (pour qu'il se comporte comme dans les experts, c'est-à-dire comme vous l'attendez). Mais beaucoup de questions se sont posées avec les anciens indicateurs, qui étaient basés sur cette initialisation. Nous avons été obligés de retourner
Dans le cinq, c'était le cas immédiatement à cause de l'architecture. Lorsque vous modifiez les paramètres, l'ancien indicateur avec les anciens paramètres est détruit et un nouvel indicateur avec les paramètres modifiés est créé.