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
Essayez de transférer vers C - l'erreur se trouvera d'elle-même. Et en général - avec de tels projets, c'est la seule façon d'écrire, si vous ne voulez pas avoir de problèmes à l'avenir. Malheureusement, je l'ai moi-même compris trop tard et je dois maintenant le réécrire :).
Nous avons un indicateur fonctionnant sur TF M15, dans le code l'indicateur demande la série temporelle MqlRates de TF M1.
L'indicateur ne démarre pas tout de suite car les données M1 ne sont pas prêtes et il n'est pas possible de les charger lors du premier passage.
En conséquence, nous avons une fausse passe et l'indicateur n'accède plus aux données, pensant qu'elles sont déjà calculées et qu'il n'est pas nécessaire de les recalculer.
Maintenant, j'exécute l'indicateur de deux façons :
D'où la question : comment automatiser la vérification et le chargement corrects des données requises pour un autre TF ?
D'où la question : comment automatiser la vérification et le chargement des données requises à partir de l'autre TF ?
Dans une situation similaire, je contrôle le processus d'initialisation dans OnCalculate. S'il y a une erreur pendant l'initialisation, alors je renvoie prev_calculated=0 et je continue jusqu'à ce que tout soit calculé correctement.
L'idée est bonne, bien que rien ne puisse être affecté à prev_calculated, la variable est déclarée comme const, mais je comprends que vous pouvez avoir une autre variable similaire.
Il reste une question : s'il n'y a pas de données, que dois-je faire ?
Je comprends que la demande de données elle-même ne conduit pas à un téléchargement ou à une télétransmission à partir de la base de données locale, et c'est exactement le problème.
L'idée est bonne, bien que vous ne puissiez rien assigner à prev_calculated, la variable est déclarée comme const, mais je vous ai compris, vous pouvez avoir une autre variable similaire.
Il ne s'agit pas de l'affectation, mais du nombre retourné par OnCalculated. Si vos données ne sont pas prêtes, vous retournerez 0 de OnCalculated.
Regardez les exemples de BarsCalculated. C'est ainsi que vous devez vérifier.
Une question demeure : en l'absence de données, que faire ?
Si vous voulez, vous pouvez attendre et calculer les tampons par timer.
Si vos données ne sont pas prêtes, vous retournerez 0 de OnCalculated.
Si vous ne les avez pas et qu'ils n'apparaissent pas, il n'y a pas grand-chose à faire.Regardez les exemples de BarsCalculated.
Si vous le souhaitez, vous pouvez appeler les tampons d'attente et de calcul par minuterie.
Cela ne sert à rien, il suffit de décharger l'indicateur et de le redémarrer, dans ce cas les données sont déjà là pour une raison quelconque.
Ou encore, ouvrez un graphique avec le TF M1 requis, les données du graphique M15 adjacent sur demande M1 sont alors immédiatement prêtes.
Cela ne sert à rien, il suffit de décharger l'indicateur et de le redémarrer, dans ce cas les données sont déjà là pour une raison quelconque.
Ou bien, ouvrez un graphique avec la TF requise, et les données du graphique adjacent sont prêtes immédiatement.
Aujourd'hui, j'ai passé une demi-journée avec des indices. Il y avait des multi-devises/multi-temps.
Le problème du non-affichage est qu'on tente de prendre une valeur d'une barre qui n'existe tout simplement pas dans cette TF.
Il faut donc vérifier avant de prendre une barre - SeriesInfoInteger.Pas de déchargement nécessaire. Vous ne pouvez pas décharger la partie calcul de toute façon (je viens d'aborder le sujet aujourd'hui).
J'ai travaillé avec les indices pendant une demi-journée aujourd'hui. Il y avait des multi-devises/multi-temps.
Le problème avec le non-affichage est qu'il essaie de prendre la valeur d'une barre qui n'existe tout simplement pas dans ce TF.
Il faut donc vérifier avant de prendre une barre - SeriesInfoInteger.Pas de déchargement nécessaire. Vous ne pouvez pas décharger la partie calcul de toute façon (je viens d'évoquer un sujet à ce sujet aujourd'hui).
Mimeo, j'ai un vérificateur, je trouve la première date sur TF M1 et le calcul des barres M15 commence à partir de cette date. TF est défini comme PERIOD_M1
1. l'idée est bonne, bien que rien ne puisse être assigné à prev_calculated, la variable est déclarée comme const, mais je comprends que vous pouvez avoir une autre variable similaire.
2. une question demeure, et s'il n'y a pas de données, que devons-nous faire ?
3. je comprends que la demande de données elle-même ne provoque pas le téléchargement ou le chargement des données à partir de la base de données locale, et c'est exactement le problème.
Je comprends que la demande de données elle-même n'entraîne pas le téléchargement ou l'envoi de données depuis la base de données locale, et c'est exactement le problème.
Extrait de l'aide de CopyXXXX :
Lorsqu'un conseiller expert ou un script demande des données, il lance le téléchargement depuis le serveur, si le terminal ne dispose pas de ces données localement, ou il commence à construire les séries temporelles requises, si les données peuvent être construites à partir de l'historique local, mais qu'elles ne sont pas encore prêtes. La fonction renverra la quantité de données qui sera prête à l'expiration du délai, mais l'historique continuera à être téléchargé et la prochaine demande similaire renverra plus de données.