Erreurs, bugs, questions - page 382

 
aharata:

Ticks dans le fichier : 1159105, et volume de tick pour cette période : 1161872

De quoi s'agit-il ? Comment faire pour que les tics du testeur soient bons ?

1 161 872 - 1 159 105 = 2 767 ticks, soit 0,2% de 1 161 72 ticks.

Une erreur de 0,2% dans la modélisation des ticks est acceptable et normale, car il n'est pas judicieux dans certaines situations (configurations de barres) de générer des ticks supplémentaires. Le testeur génère toujours un peu moins de ticks (au niveau de 0,2% indiqué) qu'il ne l'était en réalité.

Si la barre de qualité verte des données brutes est proche de 100 %, vous pouvez utiliser sans crainte la séquence de tics générée par le testeur.

Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
  • 2010.05.21
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 позволяет во встроенном тестере стратегий моделировать автоматическую торговлю с помощью экспертов на языке MQL5. Такое моделирование называется тестированием экспертов, и может проводиться с использованием многопоточной оптимизации и одновременно по множеству инструментов. Для проведения тщательного тестирования требуется генерировать тики на основе имеющейся минутной истории. В статье дается подробное описание алгоритма, по которому генерируются тики для исторического тестирования в клиентском терминале MetaTrader 5.
 
Merci, pour cette réponse rapide. La qualité de l'historique est de 100% (excellent indicateur chez le testeur, d'ailleurs). Quand je trade virtuellement, j'utilise des indicateurs, et maintenant je m'inquiète de la synchronisation des données des ticks et des indicateurs (je me fiche de savoir si 2 dixièmes ne me nuisent pas)... Merci.
 
J'ai besoin de construire une grille à l'avance après un certain nombre de barres.
 
vdv2001:
J'ai besoin de construire une grille à l'avant après un certain nombre de barres.

Si ce n'est que le temps, alors : prenez la barre de base ; trouvez son heure ; obtenez le nombre de secondes dans une période (TF) ; multipliez les secondes par le nombre de barres et ajoutez à la date de la barre de base.

 
Interesting:

Si ce n'est que le temps, alors : prenez la barre de base ; trouvez son heure ; obtenez le nombre de secondes dans une période (TF) ; multipliez les secondes par le nombre de barres et ajoutez à la date de la barre de base.

Il n'est pas certain que la barre restera au même indice (en tenant compte du décalage), mais en général, oui, nous pouvons compter le bon nombre de barres en avant et définir l'objet et il sera exactement là où nous voulons qu'il soit. C'est plus compliqué avec le passé, il est affecté par le saut de barres. Ainsi, les objets qui sont passés de zéro au premier point devront probablement faire l'objet d'un contrôle d'exactitude.

L'essentiel ici est de savoir ce qui est le plus important - la régularité des barres ou la régularité du temps ?

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Interesting:

Si ce n'est que le temps, alors : prenez la barre de base ; trouvez son heure ; obtenez le nombre de secondes dans une période (TF) ; multipliez les secondes par le nombre de barres et ajoutez à la date de la barre de base.

Je le fais maintenant, je pensais que cela pouvait être plus simple, comme la fonction BarToTime()).

Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Urain:

Il n'est pas certain que la barre restera au même indice (compte tenu du décalage), mais en général, oui, vous pouvez compter le bon nombre de barres en avant et régler l'objet et il sera exactement là où vous voulez qu'il soit. C'est plus compliqué avec le passé, c'est causé par le saut de barres. Les objets qui sont passés du point zéro au premier doivent probablement faire l'objet d'un contrôle d'exactitude.

L'essentiel ici est de savoir si la régularité des barres ou la régularité du temps est plus importante.

L'important est la régularité des barres, sinon les coins apparaissent de travers :(((

J'essaie de construire un carré GaN.

 
vdv2001:

La régularité des barres est importante, sinon les angles deviennent tordus :(((

J'essaie de construire un carré de gan.

Pensez-y comme à l'ajout de secondes, mais à chaque nouvelle barre, redessinez simplement l'image (vous pouvez même écrire une fonction de nécessité) et c'est tout.....

Обработчик события "новый бар"
Обработчик события "новый бар"
  • 2010.10.04
  • Konstantin Gruzdev
  • www.mql5.com
Язык программирования MQL5 позволяет решать задачи на совершенно новом уровне. Даже те задачи, которые уже вроде имеют решения, благодаря объектно-ориентированному программированию могут подняться на качественно новый уровень. В данной статье специально взят простой пример проверки появления нового бара на графике, который был преобразован в достаточно мощный и универсальный инструмент. Какой? Читайте в статье.
 
vdv2001:

La régularité des barres est importante, sinon les angles deviennent tordus :(((

J'essaie de construire un carré de gan.

Cela vous importe-t-il que les barres soient sautées ?
 
Urain:
Et vous ne vous souciez pas que les barres aillent avec des écarts ?

Non Gan n'a compté que les barres de travail ! !!

Les points manquants sont ceux que je devais supprimer.

Merci à tous pour les conseils que j'ai donnés, en formant un tableau de temps.

Peut-être que quelqu'un en aura besoin :

//   int bars - количество расчетных баров
//   datetime time1 - время нулевого бара

   datetime iTime[];
   int rates_time;
   rates_time=CopyTime(NULL,m_period,time1,TimeCurrent(),iTime);
   if(rates_time==-1) return(false);
   ArrayResize(iTime,bars+1);
   if(rates_time<=bars)
     {
      int shift=rates_time-1;
      for(int i=1;i<=ArraySize(iTime)-rates_time;i++)
        {
         iTime[shift+i]=iTime[shift]+PeriodSeconds(m_period)*i;
        }
     }
   datetime shifttime=time1-iTime[0]; // смещение времени для корекции массива
   for(int i=0;i<=bars;i++) iTime[i]=iTime[i]+shifttime; // корректируем массив
   time2=iTime[bars];

Il est vrai que vous devez recalculer lorsqu'une nouvelle barre apparaît.