Erreurs, bugs, questions - page 3028
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
réfléchissez encore.
Tu dois réfléchir, Andrei. C'est dans votre code que les cafards sont là.
Eh bien, je suis si enclin aujourd'hui... Je vais essayer de pousser dans la bonne direction :
Une nouvelle barre s'est ouverte... iBars() a augmenté de un...... Mais le nombre de barres comptées n'a pas changé. Et il ne changera pas tant qu'il n'aura pas recalculé cette nouvelle barre...
Quelle est la prochaine étape ?
cela ne devrait pas fonctionner correctement dans les indicateurs :
si je ne me trompe pas, dans l'aide il y a une décomposition du script pour paginer les données pour tous les TFs et il devrait y avoir un avertissement que les données historiques ne peuvent pas être demandées à l'indicateur de cette façon, parce que l'indicateur fonctionne de manière asynchrone.
et il est recommandé d'utiliser BarsCalculated() une fois après avoir lié le handle
UPD : script pour la pagination de l'historique et explication pourquoi il ne fonctionne pas dans les indicateurs: https://www.mql5.com/ru/docs/series/timeseries_access
Vous êtes sûr de comprendre la signification du code ?
Tu dois réfléchir, Andrei. C'est dans votre code qu'il y a des cafards.
Eh bien, je suis si enclin aujourd'hui... Je vais essayer de pousser dans la bonne direction :
Une nouvelle barre s'est ouverte... iBars() a augmenté de un...... Mais le nombre de barres comptées n'a pas changé. Et il ne changera pas tant qu'il n'aura pas recalculé cette nouvelle barre...
Quelle est la prochaine étape ?
mon bon monsieur, ne m'écrivez pas, vous n'êtes pas dans le coup.
Ou prouvez-le avec un code.
Vous êtes sûr de comprendre la signification du code ?
Avec une forte probabilité - sûr et compris
Vous voulez que l'indicateur synchronise le "TF supérieur" avant d'appeler un autre indicateur.
mon indicateur fonctionne, n'est-ce pas ? - vous pouvez lui ajouter BarsCalculated() - mais comme dans les exemples d'indicateurs de la livraison, par exemple MACD.mql5
HH : il y a beaucoup d'indicateurs multitime dans QB. Si j'ai besoin de me rappeler ce qu'il faut faire et comment le faire, je recherche habituellement les indicateurs de Mladen Rakic et je regarde les siens, le style de codage est particulier (plus exactement le formatage), mais ils sont 100% fonctionnels.
https://www.mql5.com/ru/users/mladen
Chérie, ne m'écris pas, tu n'es pas dans le coup.
Ou prouvez-le avec un code.
Eh bien alors, phew sur vous...
Les développeurs ne répondent pas à de telles inepties, Igor va bientôt se lasser... Et reste à parler tout seul...
Demandez simplement à Drummer de déplacer vos épanchements dans un fil séparé ... pour éviter d'encombrer le fil approprié ...
Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading
Bugs, bugs, questions
Andrey Dik, 2021.05.28 05:16
J'essaie de vérifier la synchronisation des données sur la période demandée (M5) et la disponibilité de l'indicateur sur celle-ci, si elle n'est pas prête, je vais quitter.
Par conséquent, l'indicateur ne fonctionne qu'une fois à l'ouverture de la barre M1, et non à chaque tick :
J'espère que les développeurs écouteront mes supplications.
Igor va bientôt se lasser aussi...
J'ai juste le désir de comprendre
dans MT5 il y a beaucoup de pièges avec la synchronisation, maintenant la question est à ce sujet aussi.
imho, si l'indicateur utilise des constructions sur chaque barre (lignes, pas flèches)
ce cycle est suffisant pour un calcul économique :
s'il s'agit du premier appel, alors prev_calculated sera = 0, lors des appels suivants, les nouvelles barres seront recalculées.
et si les deux indicateurs sont écrits correctement, vous n'avez pas besoin de synchroniser quoi que ce soit en plus, tout fonctionnera, la seule chose qui reste est de comparer CopyBuffer() avec le nombre requis de valeurs de l'indicateur appelé
Je veux juste trouver une solution.
dans MT5 il y a beaucoup de pièges avec la synchronisation, maintenant la question est à propos de cela aussi.
imho, si l'indicateur utilise une construction sur chaque barre (des lignes, pas des flèches)
ce cycle est suffisant pour un calcul économique :
s'il s'agit du premier appel, alors prev_calculated sera = 0, lors des appels suivants, les nouvelles barres seront recalculées.
et si les deux indicateurs sont écrits correctement, vous n'avez pas besoin de synchroniser quoi que ce soit en plus, tout fonctionnera, la seule chose qui reste est de comparer CopyBuffer() avec le nombre requis de valeurs de l'indicateur appelé
C'est ce que je veux dire. Il serait correct d'essayer de synchroniser avant la première exécution, mais de cette façon.............
Je veux juste trouver une solution.
dans MT5 il y a beaucoup de pièges avec la synchronisation, maintenant la question est à propos de cela aussi.
imho, si l'indicateur utilise une construction sur chaque barre (des lignes, pas des flèches)
ce cycle est suffisant pour un calcul économique :
s'il s'agit du premier appel, alors prev_calculated sera = 0, lors des appels suivants, les nouvelles barres seront recalculées.
et si les deux indicateurs sont écrits correctement, vous n'avez pas besoin de synchroniser quoi que ce soit en plus, tout fonctionnera, la seule chose qui reste est de comparer CopyBuffer() avec le nombre requis de valeurs de l'indicateur appelé
si vous voulez comprendre et ne pas vous opposer, vous devriez écrire quelque chose comme le code ci-dessous :
compilez les deux codes et exécutez le second. obtenez quelque chose comme ceci dans les logs lors de l'exécution sur M1 et M3 de l'indicateur senior :
2021.05.28 19:05:01.408 OldTF (EURUSD,M3) 0.000234 sec, 50000 barres calculées, 50000 barres totales
2021.05.28 19:05:03.860 LitTF (EURUSD,M1) 0.007452 sec, 50023 barres calculées, 50023 barres totales
2021.05.28 19:06:00.670 OldTF (EURUSD,M3) 0.000001 sec, calculé 1 barre, total barres 50001
2021.05.28 19:06:02.211 LitTF (EURUSD,M1) 0.008180 sec, 50024 barres calculées, 50024 barres au total
2021.05.28 19:07:00.780 LitTF (EURUSD,M1) 0.000004 sec, calculé 1 barre, total barres 50025
2021.05.28 19:08:01.246 LitTF (EURUSD,M1) 0.000014 sec, réglé 1 barre, total barres 50026
2021.05.28 19:09:00.959 OldTF (EURUSD,M3) 0.00000014 sec, calculé 1 barres, total barres 50002
2021.05.28 19:09:01.775 LitTF (EURUSD,M1) 0.006898 sec, 50027 barres calculées, 50027 barres totales
2021.05.28 19:10:00.830 LitTF (EURUSD,M1) 0.000004 sec, calculé 1 barre, total barres 50028
même à l'œil nu, vous pouvez voir, premièrement, que c'est le moyen le plus rapide de construire des indicateurs rapides et, deuxièmement, que le pré-calcul est mis à zéro.
Dans cet exemple, l'indicateur doit être entièrement recalculé à chaque nouvelle barre M3.
Tu n'es pas obligé de le faire.
Les développeurs ne répondent pas à de telles inepties, Igor va vite se lasser aussi... Et reste à parler tout seul...
Il faut juste demander à drubashka de déplacer vos épanchements dans un fil séparé pour ne pas encombrer le bon....
Regardez le code ci-dessus, mangez votre passeport, saupoudrez des cendres sur votre tête et mettez votre orgueil là où personne ne peut le voir.
cela ne devrait pas fonctionner correctement dans les indicateurs :
si je ne me trompe pas, dans l'aide il y a une décomposition du script pour paginer les données pour tous les TFs et il devrait y avoir un avertissement que les données historiques ne peuvent pas être demandées à l'indicateur de cette façon, parce que l'indicateur fonctionne de manière asynchrone.
et il est recommandé d'utiliser BarsCalculated() une fois après avoir lié le handle
UPD : script pour la pagination de l'historique et explication pourquoi il ne fonctionne pas dans les indicateurs: https://www.mql5.com/ru/docs/series/timeseries_access
Dans cet article, il est seulement écrit qu'il n'est pas souhaitable de demander des données à partir de timeseries (ou de demander SeriesInfoInteger dans une boucle) dans une indica
"Rappelons que l'envoi d'une demande de mise à jour d'une série temporelle avec la même période quel'indicateur appelant la mise à jour est hautement indésirable. Le caractère indésirable de la requête utilisant la même période de symbole que celle de l'indicateur est dû au fait que la mise à jour des données historiques est effectuée dans le même thread, dans lequel l'indicateur travaille. Par conséquent, il y a une forte probabilité de coincement."
Si nous demandons simplement SeriesInfoInteger et, en cas de faux, sortons de OnCalculate, comment le wedge peut-il se produire ?