Ergebnisse des Expertentests mit mehreren Währungen - Seite 5

 
tol64:
Von welcher Realität sprechen Sie? Prüfung in Echtzeit? Wenn ja, dann stimme ich natürlich zu. Wenn Sie zwei EAs an Ihre Symbole hängen, wird alles richtig sein. Aber ich teste gerade den Mehrwährungsmodus. Und ein identisches Ergebnis wird nur mit OnTimer() (10 Sekunden) angezeigt.

Ich spreche von einem echten Lauf im Mehrwährungsmodus (Handel mit N Symbolen in EAs (in jedem EA), die auf jedes der Symbole eingestellt sind) - das ergibt eine echte Schätzung, und im Falle des Testers vergleichen Sie in erster Linie Testmodi und nicht die Korrektheit jeder der Mehrwährungs-Tick-Verarbeitungsmethoden. Welchen Sinn hat es, verschiedene Modi zu vergleichen, wenn sie alle auf der künstlichen Umgebung des Testers beruhen? Die Identität der Ergebnisse der Läufe gibt keinen Anlass zu der Behauptung, dass sie die korrektesten Ergebnisse in Bezug auf den Handel liefert, sondern dass sie das Optimum im Hinblick auf die internen Arbeitsmechanismen des Testers darstellt.

 
Yedelkin:

Beginnen wir mit der richtigen Formulierung. Im ursprünglichen Beispiel hätten Sie "Handel in Eurodollar" gewünscht. Tatsächlich kamen die benutzerdefinierten Ereignisse von zwei Symbolen und im Event-Handler wurden TradeSignalCounter()+TradePerformer() aufgerufen, wenn Ereignisse von einem dieser beiden Symbole empfangen wurden. Wir können davon ausgehen, dass die Ereigniswarteschlange immer voll war.

Nun haben Sie eine der Signalquellen entfernt, aber aus irgendeinem Grund die Prüfung"if(sparam == Symbol_01)" in den Eventhandler eingetragen. Aber die nächste Frage ist anders. Dem Code nach zu urteilen, wird das Lizar-Schema im Modus "Alle Ticks" verwendet und die Funktionen TradeSignalCounter()+TradePerformer() werden bei jedem Tick von der Signalquelle (EURUSD) aufgerufen. Interesting hat bereits auf einen möglichen Überlauf der Ereigniswarteschlange hingewiesen. Aber ich möchte wissen, welches Instrument als Symbol_01-Parameter dieser beiden Funktionen verwendet wird, und ob Sie versucht haben, die Periodizität der Ereignisse in Lizars Schema zu ändern.

Ja, genau das wollte ich tun. Denn jede unserer Handlungen wird durch unseren Wunsch ausgelöst. In diesem Fall habe ich genau das bekommen, was ich wollte. Das heißt, wir haben nur mit EURUSD gehandelt, weil die Funktion TradePerformer() für jedes Symbol im Array der Symbole prüft, ob es erlaubt ist, zu handeln. Diese Option befindet sich in externen Variablen und zu dieser Zeit war der Handel mit demGBPUSD-Symbol verboten. Benutzerereignisse kamen von zwei Symbolen, aber im Event-Handler erlaubte die TradePerformer()-Funktion wiederum nur den Handel mit dem EURUSD-Symbol. Die FunktionTradePerformer() enthält auch eine Funktion, die feststellt, ob ein neuer Balken für ein bestimmtes Symbol, in diesem Fall EURUSD, aufgetreten ist. Ihre Annahme, dass die Ereignis-Warteschlange immer voll war, ist richtig, aber in diesem Fall wurde alles separat verarbeitet, und eine Verspätung von einem Tick ist beim Testen von Tagesbalken nicht signifikant.

Das Entfernen einer Signalquelle, die an der Prüfung nicht beteiligt sein sollte, bestätigte nur, dass alles richtig gemacht worden war. Die Prüfung"if(sparam == Symbol_01)" blieb bestehen, als ich die Ergebnisse überprüfte, ohne die Signalquelle zu löschen, bei der die Prüfung nicht stattfinden sollte, bei der sie aber stattfinden sollte. Diese Prüfung erwies sich eigentlich sogar als überflüssig. Die Ergebnisse haben sich nicht verändert. Das EURUSD-Symbol wird als Parameter Symbol_01 verwendet. Ich habe versucht, die Häufigkeit der Ereignisse zu ändern, aber es hat sich nichts geändert. Genauer gesagt, kann ich sagen, dass der Modus "Alle Zecken" am genauesten ist.

 
marketeer:

Ich spreche von einem echten Lauf im Mehrwährungsmodus (Handel mit N Symbolen in EAs (in jedem EA), die auf jedes der Symbole eingestellt sind) - das ergibt eine echte Schätzung, und im Falle des Testers vergleichen Sie in erster Linie Testmodi und nicht die Korrektheit jeder der Mehrwährungs-Tick-Verarbeitungsmethoden. Welchen Sinn hat es, verschiedene Modi zu vergleichen, wenn sie alle auf der künstlichen Umgebung des Testers beruhen? Die identischen Ergebnisse der Durchläufe erlauben es uns nicht zu sagen, dass es die korrektesten Ergebnisse aus der Sicht des Handels gibt, es ist das Optimum aus der Sicht der internen Mechanismen des Testers.

Jetzt verstehe ich. Aber die Diskussion konzentrierte sich ursprünglich auf das Testen im Prüfgerät. Bevor Sie mit dem Handel beginnen, müssen Sie das System testen. Je genauer der Test ist, desto sicherer werden Sie sich beim realen Handel fühlen. Die hier vorgestellten Testergebnisse zeigen, dass Tests richtig und falsch gemacht werden können. Jetzt hat jeder die Wahl und kann selbst entscheiden, was richtig oder falsch ist. Ein Händler hat zu Recht gesagt (wenn ich mich nicht irre, ist es Van Tharp): "Wir handeln mit unseren Wahrnehmungen". Ich kann das noch ergänzen. Wir handeln nicht nur mit unseren Ideen. Wir leben sogar nach unseren Wahrnehmungen. ))

Wenn wir einen Expert Advisor separat für jedes Symbol im realen Handel oder zu Testzwecken einsetzen, ist er am genauesten. Dem stimme ich natürlich zu. Dafür besteht bei der Taktsynchronisation jedoch keine Notwendigkeit. Die Genauigkeit wird mit der Dauer einhergehen. Sie können lange historische Zeiträume im Tester abschätzen. Und ich persönlich ziehe es vor, die richtigen Testergebnisse zu sehen.

Ich möchte noch einen weiteren Punkt betonen: Ich schließe nie aus, dass ich mich irgendwo irren könnte, und ich überprüfe immer alles. Aber selbst nach den härtesten Tests, wenn auf den ersten Blick alles korrekt aussieht, schließe ich nicht aus, dass sich irgendwo ein Fehler eingeschlichen hat. Wenn jemand an dieser Stelle mit der Bewertung der Ergebnisse der vorgestellten Testmethoden nicht einverstanden ist, muss er seine eigenen Testergebnisse zum Vergleich vorlegen. Schließlich geht es in diesem Thread darum, herauszufinden, wie man das Richtige tut oder, genauer gesagt, wie man Expert Advisors mit mehreren Währungen richtig testet, und nicht darum, wer nur mit Worten Recht hat oder nicht. Die Fakten, nur die Fakten und nichts als die Fakten! )))

Welchen Sinn hat es, verschiedene Modi zu vergleichen, wenn sie alle auf einer künstlichen Testumgebung beruhen?

Es geht darum, auf der Grundlage der Ergebnisse die richtige Entscheidung zu treffen. Und ich sehe auch keinen Sinn darin, verzerrte Daten zu analysieren. Schließlich erntet man, was man sät).

 
tol64:

Das Entfernen einer Signalquelle, die nicht an dem Test beteiligt sein sollte, bestätigte nur, dass alles richtig gemacht worden war.

"...alles war schon einmal richtig gemacht worden" gehört zur Kategorie der Selbstgefälligkeit. Es war von vornherein falsch. Sie scheinen einem Phänomen wie der "Überfüllung der Warteschlangen" keine Bedeutung beizumessen. Insbesondere wenn es um die post-itische Übertragung von Ereignissen geht. Schauen Sie sich die Referenzmaterialien und das Forum zu diesem Thema an. Das Schlüsselwort ist "Warteschlange".

tol64:

... Ich habe nur mit EURUSD gehandelt, weil die Funktion TradePerformer() für jedes Symbol im Symbol-Array prüft, ob es zum Handel zugelassen ist. Diese Option befindet sich in externen Variablen, und zu dieser Zeit war der Handel mit demGBPUSD-Symbol verboten. Benutzerereignisse kamen von zwei Symbolen, aber im Event-Handler erlaubte die TradePerformer()-Funktion wiederum nur den Handel mit dem EURUSD-Symbol. Die Funktion TradePerformer() enthält auch eine Funktion, die feststellt, ob ein neuer Balken für ein bestimmtes Symbol, in diesem Fall EURUSD, aufgetreten ist. Ihre Annahme, dass die Ereignis-Warteschlange immer voll war, ist richtig, aber in diesem Fall wurde alles separat verarbeitet, und eine Verspätung von einem Tick ist beim Testen von Tagesbalken nicht signifikant.

Da TradeSignalCounter()+TradePerformer() Ereignisse von nur einer Signalquelle verarbeitet haben, haben sich der Zustand der Warteschlange und ihr möglicher Überlauf überhaupt nicht geändert. Mit anderen Worten: Das "Verbot der Verarbeitung von Ereignissen nach GBRUSD-Symbol" hat die entsprechenden Ereignisse nicht aus der Warteschlange entfernt. Zum dritten Mal weise ich auf das Problem hin: "Ein möglicher Überlauf in der Warteschlange der Ereignisse wurde bereits angedeutet" :) Wenn Sie glauben, dass es sich nur um "einen Tick zu spät" handelt, worauf stützen sich dann solche Schlussfolgerungen?

"...In diesem Fall wurde alles getrennt behandelt". Das Problem ist, dass in der ursprünglichen Version der Event-Handler Funktionen aufrief, wenn Ereignisse von beiden Signalquellen empfangen wurden, und diese Funktionen dann bereits das Signal von der "unnötigen" Quelle herausfilterten. Aber die Funktionen wurden jedes (!) Mal aufgerufen.

tol64:

Eine Verzögerung von einem Tick ist nicht signifikant, wenn sie auf Tagesbalken getestet wird.

Es spielt keine Rolle, in welchem Zeitraum der Event-Handler getestet wird. Wenn Lizars Schema Signale tick-by-tick generiert, dann bewerten sie die Ereigniswarteschlange auch tick-by-tick, nicht einmal am Tag.

"Ich habe versucht, die Häufigkeit der Ereignisse zu ändern, aber das hat nichts gebracht. Genauer gesagt kann ich sagen, dass der Modus mit allen Ticks am genauesten ist." Könnten Sie bitte vergleichende Screenshots zu Lizars Nicht-Tick-Modi zur Verfügung stellen?

 
tol64:

Wenn Sie einen EA auf jedes Symbol separat im realen Handel oder beim Testen anwenden, wäre das die genaueste Option. Dem stimme ich natürlich zu. Es ist jedoch nicht notwendig, die Balken zu synchronisieren. Die Genauigkeit geht mit der Dauer einher. Sie können lange historische Zeiträume im Tester abschätzen. Und ich persönlich ziehe es vor, die richtigen Testergebnisse zu sehen.

Wie kann es sein, dass Sie die Synchronisierung der Balken nicht online vornehmen müssen? All diese Experimente im Tester werden benötigt, um den Online-Handel zu evaluieren, und die Frage dieses Themas bezieht sich nicht auf den Tester (der den Online-Handel emuliert), sondern auf den Online-Handel, und zuallererst wird eine Online-Taktsynchronisation benötigt (für geeignete Expert Advisors).
Tol64:

Es geht darum, auf der Grundlage der Ergebnisse eine richtige Entscheidung zu treffen. Aber ich sehe definitiv keinen Sinn darin, beschädigte Daten zu analysieren. Schließlich erntet man, was man sät).

Was ich damit sagen will, ist, dass die Kategorie "Korrektheit" jetzt durch die Identität der Testläufe ersetzt wurde, aber das bedeutet nicht, dass diese Daten weniger verzerrt sind. Insbesondere haben Sie jetzt ein 10-Sekunden-Intervall gewählt, das zweifellos stärker verzerrend wirkt als beispielsweise ein 5-Sekunden- oder 1-Sekunden-Intervall. Das heißt, Sie nutzen eine Eigenschaft der Betriebsbedingungen des Prüfgeräts aus, die Ihnen die bevorzugte Methode mit dem 10-Sekunden-Timer ermöglicht. In der Tat versuchen Sie, den Zeitpunkt des Eintreffens von Ticks neuer Balken auf allen Instrumenten mit Timer-Ereignissen zu "erwischen", und es ist ganz offensichtlich, dass dies am besten mit dem OnTick-Ereignis zu erreichen ist.

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

Verschwenden Sie nicht Ihre Zeit. Bei Zecken werden Sie nie eine perfekte Übereinstimmung erzielen. Die Schlusszeit eines Taktes ist für verschiedene Instrumente unterschiedlich.

Bei einem Instrument ist die aktuelle Zeit der Zeitpunkt des Balkenschlusses, bei einem anderen ist der Balken noch nicht gebildet worden, und bei einem dritten ist er vor einigen Ticks gebildet worden.

Sehen Sie sich die Tick-Historie an, das Volumen der Ticks ist von Instrument zu Instrument sehr unterschiedlich.

Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
Алгоритм генерации тиков в тестере стратегий терминала MetaTrader 5
  • 2010.05.21
  • MetaQuotes Software Corp.
  • www.mql5.com
MetaTrader 5 позволяет во встроенном тестере стратегий моделировать автоматическую торговлю с помощью экспертов на языке MQL5. Такое моделирование называется тестированием экспертов, и может проводиться с использованием многопоточной оптимизации и одновременно по множеству инструментов. Для проведения тщательного тестирования требуется генерировать тики на основе имеющейся минутной истории. В статье дается подробное описание алгоритма, по которому генерируются тики для исторического тестирования в клиентском терминале MetaTrader 5.
 

Yedelkin 2011.08.25 08:16 #

"...alles wurde schon einmal richtig gemacht" gehört in die Kategorie der Selbstzufriedenheit.

---

Guten Morgen! ))

Abgesehen von diesem separat herausgerissenen Satz habe ich auch geschrieben: ".Ich schließe nie aus, dass ich irgendwo falsch liege, und ich überprüfe immer alles. Aber selbst nach den härtesten Kontrollen, wenn auf den ersten Blick alles richtig aussieht, kann ich nicht ausschließen, dass irgendwo ein Fehler vorliegt". Ich sollte hinzufügen, dass ich nicht zu den Menschen gehöre, die glauben, dass sie immer mit allem Recht haben. )))

---

Yedelkin:
Das war ursprünglich falsch. Offensichtlich messen Sie einem Phänomen wie der "Überfüllung der Warteschlangen" keine Bedeutung bei. Insbesondere, wenn es um die post-itische Übertragung von Ereignissen geht. Schauen Sie sich die Referenzmaterialien und das Forum zu diesem Thema an. Das Schlüsselwort ist "Warteschlange".

---

Ich habe mir das Timer-Thema angeschaut. Die wichtigsten Punkte, die ich hervorgehoben habe, sind:

1. Während ein Ereignis bearbeitet wird, können die anderen nicht bearbeitet werden.

2. Wenn der Ereignisstapel überläuft, werden alte Ereignisse aus der Warteschlange entfernt, ohne verarbeitet zu werden.

Gehen wir sie der Reihe nach durch. Es gibt eine Aufzählung von Ereignissen:

enum ENUM_CHART_EVENT_SYMBOL
  {
   CHARTEVENT_NO         = 0,          // События отключены
   CHARTEVENT_INIT       = 0,          // Событие "инициализация" 
   
   CHARTEVENT_NEWBAR_M1  = 0x00000001, // Событие "новый бар" на 1 -минутном графике
   CHARTEVENT_NEWBAR_M2  = 0x00000002, // Событие "новый бар" на 2 -минутном графике
   CHARTEVENT_NEWBAR_M3  = 0x00000004, // Событие "новый бар" на 3 -минутном графике
   CHARTEVENT_NEWBAR_M4  = 0x00000008, // Событие "новый бар" на 4 -минутном графике
   
   CHARTEVENT_NEWBAR_M5  = 0x00000010, // Событие "новый бар" на 5 -минутном графике
   CHARTEVENT_NEWBAR_M6  = 0x00000020, // Событие "новый бар" на 6 -минутном графике
   CHARTEVENT_NEWBAR_M10 = 0x00000040, // Событие "новый бар" на 10-минутном графике
   CHARTEVENT_NEWBAR_M12 = 0x00000080, // Событие "новый бар" на 12-минутном графике
   
   CHARTEVENT_NEWBAR_M15 = 0x00000100, // Событие "новый бар" на 15-минутном графике
   CHARTEVENT_NEWBAR_M20 = 0x00000200, // Событие "новый бар" на 20-минутном графике
   CHARTEVENT_NEWBAR_M30 = 0x00000400, // Событие "новый бар" на 30-минутном графике
   CHARTEVENT_NEWBAR_H1  = 0x00000800, // Событие "новый бар" на 1 -часовом графике
   
   CHARTEVENT_NEWBAR_H2  = 0x00001000, // Событие "новый бар" на 2 -часовом графике
   CHARTEVENT_NEWBAR_H3  = 0x00002000, // Событие "новый бар" на 3 -часовом графике
   CHARTEVENT_NEWBAR_H4  = 0x00004000, // Событие "новый бар" на 4 -часовом графике
   CHARTEVENT_NEWBAR_H6  = 0x00008000, // Событие "новый бар" на 6 -часовом графике
   
   CHARTEVENT_NEWBAR_H8  = 0x00010000, // Событие "новый бар" на 8 -часовом графике
   CHARTEVENT_NEWBAR_H12 = 0x00020000, // Событие "новый бар" на 12-часовом графике
   CHARTEVENT_NEWBAR_D1  = 0x00040000, // Событие "новый бар" на дневном графике
   CHARTEVENT_NEWBAR_W1  = 0x00080000, // Событие "новый бар" на недельном графике
     
   CHARTEVENT_NEWBAR_MN1 = 0x00100000, // Событие "новый бар" на месячном графике   
   CHARTEVENT_TICK       = 0x00200000, // Событие "новый тик"
   
   CHARTEVENT_ALL        = 0xFFFFFFFF, // Все события включены
  };

Geben Sie bei der Initialisierung an, von welchem Symbol wir das Ereignis annehmen werden und welches Ereignis wir annehmen werden:

int OnInit()
{
 if(iCustom("EURUSD",PERIOD_D1,"Spy Control panel MCM",ChartID(),0,CHARTEVENT_TICK) == INVALID_HANDLE)
   { Print("Ошибка установки шпиона на EURUSD"); return(true); }

 return(0);
}

Das heißt, wir akzeptieren das Ereignis CHARTEVENT_TICK nur für das Symbol EURUSD. Es gibt keine anderen Symbole.

Der Test hat begonnen. Wenn ein Ereignis eintritt, ruft das Programm die Funktion OnChartEvent() auf, deklariert Arrays von Variablen für Handelssignale und prüft auf das Ereignis. Wenn es sich um ein benutzerdefiniertes Ereignis handelt, ermittelt das Programm das Signal in TradeSignalCounter(), prüft dann in der Funktion TradePerformer(), ob ein neuer Balken aufgetreten ist und entscheidet dann in Abhängigkeit davon über weitere Bedingungen. Die Funktion beendet ihre Arbeit und startet sie erst, wenn ein Ereignis auf dem EURUSD-Chart eintritt. Mit anderen Worten: eine Zecke in diesem Fall.

void OnChartEvent(const int id,         // идентификатор события
                  const long&   lparam, // флаг события поступившего от агента панели.
                                        // Флаги соответствуют перечислению ENUM_CHART_EVENT_SYMBOL.
                  const double& dparam, // цена
                  const string& sparam  // инструмент 
                 )
{
 // Объявление массивов переменных для торговых сигналов
 static datetime New_Bar[1];  
 static bool UpSignal[1], DnSignal[1];
 
 if(id >= CHARTEVENT_CUSTOM)
   {
    // Получение торговых сигналов
    TradeSignalCounter(0,Symbol_01,Trade_01,Timeframe_01,UpSignal,DnSignal,New_Bar);
      
    // Совершение торговых операций
    TradePerformer(0,Symbol_01,Trade_01,Timeframe_01,Stop_Loss_01,Take_Profit_01,Slippage_01,UpSignal,DnSignal,New_Bar);
   }
}

Yedelkin:
Dadurch, dass TradeSignalCounter()+TradePerformer() Ereignisse von nur einer Signalquelle behandelten, änderte sich der Zustand der Ereigniswarteschlange und ihr möglicher Überlauf in keiner Weise. Mit anderen Worten: Das "Verbot der Verarbeitung von Ereignissen durch das GBRUSD-Symbol" hat die entsprechenden Ereignisse überhaupt nicht aus der Warteschlange entfernt. Zum dritten Mal weise ich auf das Problem hin: "Ein möglicher Überlauf in der Warteschlange der Ereignisse wurde bereits von Interesting angedeutet" :) Wenn Sie glauben, dass es sich nur um "einen Tick zu spät" handelt, worauf stützen sich dann solche Schlussfolgerungen?

---

Die Ausführung der aufgeführten Funktionen ist sehr schnell. Es kommt zu keinem Überlauf der Ereigniswarteschlange und es werden keine wichtigen Ereignisse verpasst. Und wenn die Warteschlange sogar überläuft und Ereignisse verpasst werden, was verpassen wir dann? Eine Zecke, zwei Zecken, drei? Und was ist damit? In den Tagesbars ist sie unbedeutend.

---

Yedelkin:
Das Problem ist, dass in der ursprünglichen Version der Event-Handler Funktionen aufrief, wenn Ereignisse aus beiden Signalquellen kamen, und diese Funktionen dann bereits das Signal aus der "unnötigen" Quelle herausfilterten. Aber die Funktionen wurden jedes (!) Mal aufgerufen.

---
Warum klammern Sie sich an diese zweite Quelle?)) Es gibt keine zweite Quelle mehr. Es gibt einen - EURUSD, aber der Expert Advisor handelt vom GBPUSD-Chart zum EURUSD. Und die Ergebnisse sind identisch falsch. Eine Kopie. Das heißt, sie sind dieselben, als ob die zweite Quelle vorhanden wäre. )))

-----------

Führen Sie den Test am besten selbst durch, zeigen Sie die Testergebnisse vor und schreiben Sie (kurz) auf, was Sie getan haben, um die richtigen Testergebnisse zu erhalten, sofern Ihnen das natürlich gelingt. Der einfachste Experte ist für diesen Test ausreichend. Einstieg bei jeder Bedingung, Stop Loss, Take Profit. Das können die Tagesbarren der letzten 10 Jahre sein. Und Sie werden es selbst sehen. Einige Zeiträume werden zusammenfallen, andere nicht. Öffnen Sie die Ergebnistabelle, um zu sehen, wo die Unstimmigkeiten liegen.

 
marketeer:
Wie kann es sein, dass Sie die Synchronisierung der Balken nicht online vornehmen müssen?

Weil Sie vorher geschrieben haben:

Vermarkter:

Ich spreche von einem realen Lauf im Mehrwährungsmodus (Handel mit N Symbolen in EAs (in jedem EA), die auf jedes der Symbole eingestellt sind) - dies gibt eine reale Schätzung...

Daraus entnehme ich, dass Sie mit "real run" einen Online-Test meinen, bei dem mehrere EAs laufen und jeder direkt auf seinem eigenen Symbol schwebt. Wenn Sie das gemeint haben, dann eine Frage. Warum brauchen wir in diesem Fall eine Synchronisierung der Balken, wenn sich jeder Expert Advisor auf seinem eigenen Symbol befindet? Möglicherweise ist die Synchronisation der Balken in diesem Fall notwendig, wenn das Handelssystem so organisiert ist, dass eine Entscheidung auf mehreren Symbolen gleichzeitig getroffen wird, so dass Balken auf diesen mehreren Symbolen gebildet werden müssen. Ich meine damit, dass man unabhängig voneinander auf mehreren Symbolen handeln kann, während man auf einem Symbol (auf einem beliebigen Symbol) ist.

Vermarkter:

All diese Experimente im Tester sind notwendig, um den Online-Handel einschätzen zu können, und die Frage dieses Themas bezieht sich nicht auf den Tester (der online emuliert), sondern auf online, und vor allem wird online Bar-Synchronisation benötigt (für entsprechende Expert Advisors).

Für mich sind die Tester Experimente notwendig, um die Ergebnisse des Handels auf die Geschichte zu bewerten. Und meine Entscheidung für den Online-Handel hängt von dieser Einschätzung ab. Daher ist das Problem dieses Themas das Tester-Problem, nicht das Online-Problem, weshalb wir auch im Tester eine Synchronisierung der Balken benötigen (für relevante Expert Advisors). Einige Spiegelbilder))))

Vermarkter:

Was ich damit sagen will, ist, dass die Kategorie "Korrektheit" jetzt durch die Identität der Testläufe ersetzt wurde, aber das bedeutet nicht, dass diese Daten weniger verzerrt sind. Insbesondere haben Sie jetzt ein 10-Sekunden-Intervall gewählt, das zweifellos stärker verzerrend wirkt als beispielsweise ein 5-Sekunden- oder 1-Sekunden-Intervall. Das heißt, Sie nutzen eine Eigenschaft der Betriebsbedingungen des Prüfgeräts aus, die Ihnen die bevorzugte Methode mit dem 10-Sekunden-Timer ermöglicht.

Ja, je kleiner das Intervall, desto genauer das Ergebnis. Aber eigentlich ist es, zumindest für mich, für den letzten Test notwendig. Und was die Voruntersuchung angeht, so würde ich Vladimir(MetaDriver) zustimmen, dass der Abstand von einer Minute ausreicht.

Vermarkter:

Mit Timer-Ereignissen versuchen Sie, die Ankunft von Ticks neuer Balken auf allen Symbolen abzufangen, und es ist offensichtlich, dass das OnTick-Ereignis der beste Weg ist, dies zu tun.

Und hier sieht man, dass Sie den ersten Beitrag des Themas nicht sorgfältig gelesen haben. Nicht mit Timer-Ereignissen, sondern mit OnChartEvent(). Oder handelt es sich um einen Druckfehler?

 
Ich werde diese Diskussion eine Weile nicht fortsetzen können, daher werde ich im Laufe des Tages eine gründlichere Recherche durchführen, sozusagen mit der Lupe. Vielleicht hilft es, schneller zu verstehen, wo ich falsch liege oder wo es einen Fehler in der einen oder anderen Methode gibt. Ich danke Ihnen allen für Ihre Meinung.
 
tol64:

Daraus entnehme ich, dass Sie mit Real Run einen Online-Test meinen, bei dem mehrere EAs laufen und jeder direkt an seinem eigenen Symbol hängt. Wenn Sie das meinen, dann eine Frage. Warum brauchen wir in diesem Fall eine Synchronisierung der Balken, wenn sich jeder Expert Advisor auf seinem eigenen Symbol befindet? Vielleicht ist die Synchronisierung der Balken in diesem Fall notwendig, wenn das Handelssystem so konzipiert ist, dass eine Entscheidung auf der Grundlage mehrerer Symbole gleichzeitig getroffen wird, so dass die Balken auf diesen mehreren Symbolen gebildet werden sollten.

Es ist ungefähr so.


Tol64:

Und hier sieht man, dass Sie den ersten Beitrag des Threads nicht aufmerksam gelesen haben. Nicht mit Timer-Ereignissen, sondern mit OnChartEvent(). Oder handelt es sich um einen Druckfehler?

Warum sollte das so sein? Sie haben OnTimer dort als dritte Nummer. Sie wurden bereits zu diesem Thema zitiert: Sie müssen lediglich eine Methode implementieren, die den Test korrekt durchführt. Sie haben es. Dies ist die Funktion OnTimer () mit einem Mindestintervall. Sie müssen also etwas anderes im Sinn haben.


tol64:

Es gibt einen - EURUSD, aber der Expert Advisor handelt auf EURUSD vom GBPUSD-Chart aus. Und die Ergebnisse sind identisch falsch.

Wenn es für Sie wichtig ist, würde ich trotzdem empfehlen, die Entwickler zu fragen, was das Analogon von fxt-file in 5 ist. Ich habe bereits geschrieben, dass höchstwahrscheinlich unterschiedliche Tickbasen für verschiedene Tests erzeugt werden.

Grund der Beschwerde: