Erreurs, bugs, questions - page 907

 
x100intraday:

Le contraire est vrai. Sous le contrôle visuel personnel tout l'historique est téléchargé au premier démarrage, à la fin du téléchargement il est vérifié avec la touche Home en allant au début de 1994 sur M1. Ensuite, je contourne manuellement les horizons temporels que j'utilise fréquemment, ainsi que ceux qui sont pertinents pour l'indicateur multitemporel, j'attends leur formation et je recharge le terminal. C'est tout.

Pour autant que je sache, toutes les TF sont construites à la volée à partir de M1. C'est-à-dire qu'en redémarrant le terminal, on "oublie" tous les dessins précédents et lorsqu'on redémarre le terminal, il faut du temps pour les calculer.

Essayez avant tous les calculs d'insérer dans votre indicateur le téléchargement de tous les historiques nécessaires (pour tous les symboles et TFs utilisés), comme cela est fait dans ce script:

   for(int s=0; s<SymbolsCount; s++)
     {
      for(int p=0; p<PeriodsCount; p++)
        {
          if(!CheckLoadHistory(SymbolsName[s],StringToPeriod(PeriodsName[p]),BarsCount)) return;
         }
     }
sHistoryExport - удобный скрипт для экспорта исторических данных в формате МetaТrader 4
sHistoryExport - удобный скрипт для экспорта исторических данных в формате МetaТrader 4
  • votes : 14
  • 2012.11.12
  • Andrey Khatimlianskii
  • www.mql5.com
Экспорт всех необходимых инструментов и тайм-фреймов одним кликом с загрузкой и проверкой истории.
 
komposter:

Pour autant que je sache, toutes les TF sont construites à la volée à partir de M1. C'est-à-dire qu'en redémarrant le terminal vous "oubliez" tous les dessins précédents et lors d'un nouveau démarrage le terminal a de nouveau besoin de temps pour les calculer.

Essayez avant tous les calculs de charger tout l'historique nécessaire dans votre indicateur (pour tous les symboles et les TFs utilisés), comme cela est fait dans ce script:

Je me réfère plutôt à ce répertoire :

C:\Program Files\MetaTrader 5\Bases\MetaQuotes-Demo\history\NZDUSD\cache,

Si par "constructions" on entend la création d'échéances non-M1. Mais nous ne les verrons toujours pas lors du lancement initial du terminal et nous contournerons les délais non-M1 pour leur formation et la possibilité de continuer à travailler avec eux, même si le terminal sera complètement prêt à fonctionner et pas seulement manuellement. Cependant, après le déchargement du terminal et lors d'exécutions ultérieures, les délais précédemment générés sont facilement visibles dans le même répertoire. Mais comme ils ne s'évaporent pas avec le déchargement, mais restent et semblent être ajoutés lors des passages suivants, il est peu probable que le terminal ait besoin de temps pour recalculer complètement le délai demandé.

Mais en ce qui concerne l'indicateur - tout est recalculé à la volée à toutes les profondeurs requises, j'ai décidé de ne pas m'embêter à sauvegarder les calculs précédents, bien que j'aie eu cette idée.

Votre code, tel que je le vois, n'est rien d'autre que la pré-synchronisation de l'historique local avec celui du serveur ? Si c'est le cas, je l'ai prévu depuis longtemps, mais je n'ai toujours pas réussi à ajouter un bloc aussi simple à mon code.

 
komposter, même si j'ai intentionnellement mentionné que le terminal est prêt à fonctionner pleinement au premier démarrage (après que l'historique nécessaire ait été téléchargé et que les options aient été réglées), je prends personnellement des précautions et ne commence à signaler le comportement stabilisé du terminal qu'à partir du deuxième démarrage (à cause de cette incertitude), que les délais configurés non-M1 sont sauvegardés de manière fiable sur le disque et ne traînent pas quelque part dans la RAM et peuvent commencer à permuter maladroitement et lourdement aux dépens de l'OS lorsqu'il y a un manque de mémoire, et qu'il peut être endommagé). Donc, en théorie, l'indicateur ne devrait pas échouer dès le deuxième démarrage de MT5. Mais pour une raison quelconque, il ne s'est arrêté qu'au dixième passage, alors que les neuf autres passages de MT5 n'ont rien changé, tout était monotone.
 
x100intraday:

Votre code, tel que je le comprends, n'est rien d'autre que la pré-synchronisation de l'historique local avec celui du serveur ? Si c'est le cas, je l'ai prévu depuis longtemps, mais je n'ai toujours pas le temps d'ajouter un bloc aussi simple à mon code.

Non seulement la synchronisation avec le serveur, mais aussi la construction de toutes les TF.

Téléchargez la bibliothèque, insérez 3 lignes de code dans votre indicateur et voyez le résultat.

 

Je ne comprends pas pourquoi la fonction ChartGetInteger(0,CHART_FIRST_VISIBLE_BAR,0) renvoie zéro lors du test de l'indicateur, alors que les barres visibles sont au moins de 30

(vérifié par ChartGetInteger(0,CHART_VISIBLE_BARS,0)

Sur les graphiques normaux - tout va bien, l'un diffère de l'autre de 1, mais lors des tests, il y a ce non-sens...

Comment puis-je m'en débarrasser ?

 
Поясните, почему в данном простом индикаторе с двумя массивами - второй  имеет нулевой размер??

{Код удалил после ответа на вопрос чтобы не занимал место}



 
dimonsky: Expliquez pourquoi, dans cet indicateur simple comportant deux tableaux, le second a une taille nulle ?
#property indicator_plots 2
 
avoitenko:
Merci ! !!
 
Puis-je utiliser un deuxième compte ici ? Certainement pas dans le but d'accumuler des crédits.
 
Zeleniy:

Puis-je utiliser un deuxième compte ici ? Pas dans le but d'accumuler des crédits, bien sûr.
Question naturelle. Pourquoi ? ))