Fehler, Irrtümer, Fragen - Seite 382

 
aharata:

Ticks in der Datei: 1159105, und Tickvolumen für diesen Zeitraum: 1161872

Worum könnte es sich handeln? Wie bekomme ich die Ticks des Testers richtig hin?

1 161 872 - 1 159 105 = 2 767 Ticks, was 0,2 % von 1 161 72 Ticks entspricht.

Ein Fehler von 0,2 % bei der Tick-Modellierung ist akzeptabel und normal, da es in manchen Situationen (Taktkonfigurationen) nicht sinnvoll ist, zusätzliche Ticks zu erzeugen. Der Tester erzeugt immer etwas weniger Ticks (auf dem angezeigten Niveau von 0,2 %), als es in Wirklichkeit der Fall war.

Wenn der grüne Qualitätsbalken der Rohdaten nahe bei 100 % liegt, können Sie die generierte Ticksequenz des Testers bedenkenlos verwenden.

Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
  • 2010.05.21
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 позволяет во встроенном тестере стратегий моделировать автоматическую торговлю с помощью экспертов на языке MQL5. Такое моделирование называется тестированием экспертов, и может проводиться с использованием многопоточной оптимизации и одновременно по множеству инструментов. Для проведения тщательного тестирования требуется генерировать тики на основе имеющейся минутной истории. В статье дается подробное описание алгоритма, по которому генерируются тики для исторического тестирования в клиентском терминале MetaTrader 5.
 
Danke für die schnelle Antwort. Die Qualität der Geschichte ist 100% (toller Indikator im Tester, nebenbei bemerkt). Wenn ich virtuell handele, benutze ich Indikatoren, und jetzt bin ich besorgt über die Synchronisation von Ticks und Indikatoren Daten (ich kümmere mich nicht, wenn 2 Zehntel nicht schaden mir)... Ich danke Ihnen.
 
Gibt es eine Möglichkeit, einen Datumswert für einen Balken in der Zukunft zu erhalten? Ich muss ein Raster im Voraus nach einer bestimmten Anzahl von Balken erstellen.
 
vdv2001:
Gibt es eine Möglichkeit, den Datumswert für einen in der Zukunft liegenden Balken abzurufen? Ich muss nach einer bestimmten Anzahl von Balken ein Raster davor aufbauen.

Wenn nur die Zeit, dann: nehmen Sie den Basisbalken; finden Sie seine Zeit heraus; erhalten Sie die Anzahl der Sekunden in einer Periode (TF); multiplizieren Sie die Sekunden mit der Anzahl der Balken und addieren Sie sie zum Datum des Basisbalkens.

 
Interesting:

Wenn nur die Zeit, dann: nehmen Sie den Basisbalken; finden Sie seine Zeit heraus; erhalten Sie die Anzahl der Sekunden in einer Periode (TF); multiplizieren Sie die Sekunden mit der Anzahl der Balken und addieren Sie sie zum Datum des Basisbalkens.

Es ist nicht sicher, dass der Balken auf demselben Index bleibt (unter Berücksichtigung der Verschiebung), aber im Allgemeinen können wir die richtige Anzahl von Balken vorwärts zählen und das Objekt einstellen, und es wird genau dort sein, wo wir es haben wollen. Bei der Vergangenheit ist es komplizierter, sie wird durch das Überspringen von Takten verursacht. Daher müssen Objekte, die vom Nullpunkt zum ersten Punkt gegangen sind, wahrscheinlich auf ihre Korrektheit überprüft werden.

Hier geht es vor allem darum, herauszufinden, was wichtiger ist - die Regelmäßigkeit der Takte oder die zeitliche Regelmäßigkeit?

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

Wenn nur die Zeit, dann: nehmen Sie den Basisbalken; finden Sie seine Zeit heraus; erhalten Sie die Anzahl der Sekunden in einer Periode (TF); multiplizieren Sie die Sekunden mit der Anzahl der Balken und addieren Sie sie zum Datum des Basisbalkens.

Ich tue es jetzt, ich dachte, es könnte einfacher sein, wie BarToTime() Funktion).

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

Es ist nicht sicher, dass der Balken auf demselben Index bleibt (unter Berücksichtigung der Verschiebung), aber im Allgemeinen können Sie die richtige Anzahl von Takten vorwärts zählen und das Objekt einstellen, und es wird genau dort sein, wo Sie es haben wollen. Bei der Vergangenheit ist es komplizierter, sie wird durch das Überspringen von Takten verursacht. Objekte, die vom Nullpunkt zum ersten Punkt gegangen sind, sollten wahrscheinlich auf ihre Korrektheit überprüft werden.

Hier geht es vor allem darum, herauszufinden, ob die Regelmäßigkeit der Takte oder die zeitliche Regelmäßigkeit wichtiger ist.

Wichtig ist die Gleichmäßigkeit der Balken, sonst wirken die Ecken schief :((

Ich versuche, ein GaN-Quadrat zu bauen.

 
vdv2001:

Die Regelmäßigkeit der Stäbe ist wichtig, sonst werden die Winkel schief :((

Ich versuche, einen Gan-Platz zu bauen.

Stellen Sie sich das so vor, als würden Sie Sekunden hinzufügen, aber bei jedem neuen Balken einfach das Bild neu zeichnen (Sie können sogar eine Funktion der Notwendigkeit schreiben) und das war's....

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

Die Regelmäßigkeit der Stäbe ist wichtig, sonst werden die Winkel schief :((

Ich versuche, einen Gan-Platz zu bauen.

Ist es für Sie von Bedeutung, dass die Balken übersprungen werden?
 
Urain:
Und es ist Ihnen egal, dass die Stäbe mit Lücken gehen?

Nein, Gan hat nur die funktionierenden Balken gezählt!!!

Die fehlenden Punkte sind das, was ich entfernen musste.

Vielen Dank an alle für die Tipps, die ich gegeben habe, indem ich eine Zeitreihe gebildet habe.

Vielleicht braucht sie jemand:

//   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];

True müssen Sie neu berechnen, wenn ein neuer Balken erscheint.