Erreurs, bugs, questions - page 3029

 

Question pour tout le monde :

L'aide sur https://www.mql5.com/ru/docs/series/timeseries_access dit :

"Lorsque vous appelez des fonctions qui copient des données à partir de séries chronologiques, vous devez garder à l'esprit que le paramètre de départ (numéro de la barre à partir de laquelle commencer à copier les données de prix) doit toujours se situer dans l'historique du terminal disponible. Si nous n'avons que 100 barres, il est inutile d'essayer de copier 300 barres, en partant de la barre d'indice 500. Cette demande sera considérée comme invalide et ne sera pas traitée, c'est-à-dire qu'aucun historique ne sera chargé à partir du serveur commercial.

Que CopyTime donne -1, c'est clair, mais - va-t-il initier le processus lui-même pour construire une série temporelle / pagination à partir des barres du serveur jusqu'au 800ème (500 + 300) ou pas ?

Veuillez me conseiller.

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


1. Cet article dit seulement qu'il n'est pas souhaitable de demander des données à partir de séries chronologiques (ou de demander SeriesInfoInteger dans une boucle) en indica


"Rappelons que l'envoi d'une demande de mise à jour d'une série chronologique ayant la même période quel'indicateur à l'origine de 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, la probabilité d'un coin est élevée."


2. Si vous demandez simplement le SeriesInfoInteger et laissez le OnCalculate en cas de false, comment le coin se produira-t-il ?

1. Oui, parce que vous ne pouvez pas ralentir le thread de l'indicateur, car la demande de l'état de synchronisation entraînera l'échange de l'historique, et vous ne pouvez pas attendre.

2. Bien. Si les données ne sont pas prêtes, il sortira simplement de l'oncalc et la borne de synchronisation démarrera, mais le flux de l'indicateur ne sera pas inhibé. Le prochain oncalc sera exécuté complètement et sans frein seulement lorsque les données sont prêtes et que l'indicateur demandé est complètement compté. L'impression ajoutée ci-dessus montre que l'indicateur demandé n'est pas toujours prêt, mais nous pouvons permettre de créer une nouvelle barre une seule fois, et non à chaque tick pour le calcul le plus rapide de tous les indicateurs.

 
Andrey Dik:

Merci.

Voir aussi ma question: https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.05.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 

Andrey Dik:

voir le code ci-dessus,

corrigez votre code, ajoutez une impression

  if(SeriesInfoInteger(Symbol(), OldTF, SERIES_SYNCHRONIZED))
   {
    if(iBars(Symbol(), OldTF) != BarsCalculated(Handle))
     {
      Print("Баров ", iBars(Symbol(), OldTF));
      Print("посчитано", BarsCalculated(Handle));
      return 0;
     }
   }
  else
   {
    Print("Период ", OldTF, " не синхронизирован.");
    return 0;
   }

et quand vous verrez vos cafards, enroulez votre écran dans un tube et mettez-le... vous savez où.

 

Je ne suis pas sûr à 100% (il faut vérifier), une fois que vous êtes sûr que la date demandée est plus récente que la toute première dans l'historique sur le serveur, vous pouvez demander les données, l'historique sera échangé.

 
Andrey Dik:

Je ne suis pas sûr à 100% (il faut vérifier), en s'assurant que la date demandée est plus récente que la toute première dans l'historique sur le serveur, les données peuvent être demandées, l'historique sera échangé.

Merci,

Je demandais à propos de mon autre poste, lien à nouveau : https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2021.05.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Alexey Viktorov:

Corrigez votre code, ajoutez une impression

et quand vous verrez vos cafards, enroulez votre écran et poussez-le... vous savez où.

Vous prouvez mon point de vue, camarade.

 
mktr8591:

Merci,

Je demandais à propos de mon autre poste, lien à nouveau : https://www.mql5.com/ru/forum/1111/page3028#comment_22557528

Je ne comprends pas bien votre code. Que doit-il se passer après "return 0 ;" lors du prochain appel à OnCalculate ?

Nous retournons 0, indiquant ainsi que nous n'avons encore rien calculé et que le kalk prev ne sera pas incrémenté de 1 sur la prochaine barre.

c'est à dire que nous serons sur la barre où nous avons commencé à demander des données à l'olderf jusqu'à ce que nous retournions(rates_total)

 
Andrey Dik:

vous prouvez mon point de vue, camarade.

1. Merci à tous - je suis devenu un peu plus compétent en matière d'indicateurs )))).

2) Andrew, si quelqu'un ne comprend pas tes idées (y compris moi), cela ne signifie qu'une seule chose : tu ne dessines pas correctement le tableau ! Plus précisément, vous le dessinez d'une manière telle que beaucoup de gens ne le comprennent pas...

 
Andrey Dik:

nous retournons 0, indiquant ainsi que nous n'avons encore rien compté et que nous n'incrémenterons pas de 1 sur la prochaine barre.

c'est-à-dire que nous serons sur la barre où nous avons commencé la demande de données de l'ancien facteur jusqu'à ce que nous retournions(taux_total).

Extrait de l'aide :"Le paramètre prev_calculated dans l'appel de fonction contient la valeur renvoyée par OnCalculate() lors de l' appelprécédent ".
Raison: