Ich habe festgestellt, dass alles neu geschrieben werden muss, damit es richtig funktioniert. Ich bin dabei, es zu tun.
Und das kann ich nicht, weil diese Scheiße passiert.
2018.01.2812:37:23.692 Tester EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2018.01.2812:37:24.692 Tester EURUSD: preliminary downloading of history ticks completed, 89 bytes in0:00.998 (0.09 Kb/sec)
2018.01.2812:37:24.692 Tester EURUSD: ticks data begins from2017.09.0100:002018.01.2812:37:24.692 Core 1 agent process started
2018.01.2812:37:33.425 Core 1 connecting to 127.0.0.1:30002018.01.2812:37:50.450 Core 1 tester agent authorization error
2018.01.2812:37:50.456 Core 1 connection closed
und ich kann das Testprogramm nicht zum Laufen bringen.
Im Einzelsymbolmodus ist der "Spion" 2,5 Mal langsamer als der reine OnTick. D.h. der leere Indikator (der auf PERIOD_W1 aufbaut, so dass die Balkenhistorie minimal ist) hat einen enormen Overhead im Tester!
Zwei Symbole sind 3,5 Mal langsamer als ein Symbol.
Aber drei Symbole sind nur 1,8 Mal langsamer als zwei Symbole. D.h. der Übergang von zwei zu drei ist auf die Skalierbarkeit zurückzuführen. im Gegensatz zu Punkt 2.
Im Einzelsymbolmodus ist Spy 2,5 Mal langsamer als reines OnTick. D.h. ein leerer Indikator (der auf PERIOD_W1 aufbaut, so dass die Balkenhistorie minimal ist) hat einen großen Overhead im Tester!
Zwei Symbole sind 3,5 Mal langsamer als ein Symbol.
Aber drei Symbole sind nur 1,8 Mal langsamer als zwei Symbole. Das heißt, der Übergang von zwei zu drei ist auf die Skalierbarkeit zurückzuführen, anders als in Punkt 2.
Ihr Ergebnis ist 6, 25, 46. Warum nicht 6, 12 und 18?
Sie müssen die Verzögerung im Verhältnis zu einem einzelnen Zeichen betrachten. Dann sind drei Zeichen fast 8 Mal langsamer als eines, nicht 3 wie erwartet.
Die Frage ist genau diese. Warum gibt es ein solches Ergebnis bei der Skalierbarkeit? Und wenn das Ergebnis nicht verbessert werden kann, wurde die Option eines neuen Testmodus vorgeschlagen. Dies würde das Problem der langen Tests bei Verwendung mehrerer Zeichen lösen.
Ist es möglich, ein solches Multisymbol-Expert Advisor-Schema in MQL zu erstellen, so dass die Dauer der Tests nicht wiederholt ansteigt, wenn Symbole zum Test hinzugefügt werden?
//---
Wenn dies nicht möglich ist, besteht eine der Optionen für die Entwickler des Terminals darin, einen weiteren Modus hinzuzufügen, in dem der Test Symbol für Symbol und nicht alle Symbole auf einmal durchgeführt werden können. Dies würde am Ende die erwartete Testzeit ergeben. Der Punkt ist, dass Multisymbol-EAs sehr oft einfach für die Fälle verwendet werden, in denen:
Für Tests werden mehr Daten benötigt.
Testen des Handelsalgorithmus bei einer größeren Anzahl von Kursverläufen, Bedingungen (Spread, Stop/Limit-Levels) usw. mit denselben Parametern.
Für solche Fälle brauchen wir einen neuen Modus, der es uns ermöglicht, die Dauer der Tests erheblich zu verkürzen und die Parameter zu optimieren. Und schon für den letzten Test, um alle Symbole gleichzeitig zu testen.
Ihr Ergebnis ist 6, 25, 46. Warum nicht 6, 12 und 18?
Die Verlangsamung muss in Bezug auf ein Symbol betrachtet werden.
Zwei Charaktere mit Stacheln sind ein ganz anderer Testmodus als ein einzelner Charakter. Daher ist es logisch, die Skalierbarkeit im Verhältnis zu zwei zu betrachten.
Außerdem ist der Indikator über dem Kopf so wild, dass die Arbeit mit den Spionen eine Krücke ist. Waiting for Services, wo die Skalierbarkeit nahezu perfekt sein sollte, bezogen auf ein einziges Symbol. Das gilt auch für den Timer. Nur dass es dort keine Zeckensprünge geben wird.
Zwei Figuren mit Spionen sind eine ganz andere Arbeitsweise für einen Prüfer als eine einzelne Figur. Daher ist es logisch, die Skalierbarkeit im Verhältnis zu zwei zu betrachten.
Darüber hinaus ist der Indikator oben so wild, dass die Arbeit mit Spionen eine Krücke ist. Waiting for Services, wo die Skalierbarkeit nahezu perfekt sein sollte, bezogen auf ein einziges Symbol. Das gilt auch für den Timer. Nur dass es dort keine Zeckensprünge geben wird.
fxsaber: Erheblich beschleunigt
Ein Symbol
Zwei Symbole
Drei Zeichen
Vier Zeichen
Wenn wir die Ergebnisse im Verhältnis zu zwei Symbolen betrachten, dann ist das Ergebnis von zwei Symbolen geteilt durch zwei: 17 / 2 = 8,5
Wenn wir dann Symbole hinzufügen, multiplizieren wir diesen Wert mit der Anzahl der Symbole, um die erwartete Testzeit zu erhalten.
drei Zeichen: 8,5 * 3 = 25, und die tatsächliche Zeit beträgt35,462 s.
vier Zeichen: 8,5 * 4 = 34, während die tatsächliche Zeit68,459 s beträgt.
Aber das ist auf jeden Fall das bisher beste Ergebnis. Eine interessante Variante ist die Verwendung des aktuellen Symbols in OnTick, während der Rest in benutzerdefinierten Ereignissen verwendet wird.
Sie können es benutzen, wenn keine Dienste vorhanden sind.
Es stellt sich heraus, dass die Dienste fast alle Funktionen von On haben werden: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...
Und wenn Sie keine Indikatorpuffer brauchen und sich nicht mit Indikatoren/Advisoren herumschlagen wollen, schreiben Sie einen neuen Programmtyp - Services -, der keine Einschränkungen hat (die sich aus den früheren Versionen von MT ergeben).
Der lange Parameter (lparam) wird geprüft. Die Kennung des Tick-Ereignisses ist darin enthalten.
Die Kennung des Benutzerereignisses (int id) ist gleich Null.
Sie kann so geschrieben werden, um sie klarer zu machen:
Ich verstehe, dass alles umgeschrieben werden muss, damit es richtig funktioniert. Ich werde es Ihnen jetzt zeigen.
Ich habe festgestellt, dass alles neu geschrieben werden muss, damit es richtig funktioniert. Ich bin dabei, es zu tun.
Und das kann ich nicht, weil diese Scheiße passiert.
und ich kann das Testprogramm nicht zum Laufen bringen.Indikator
Expert Advisor
EURUSD M1 MetaQuotes-Demo, Hedge, USD, no lag, nur Core1-Agent, echte Ticks 01.09.2017 - 28.01.2018.
Ein Symbol
Zwei Symbole
Drei Symbole
Anatoly, ich schlage vor, das Thema zu Forex-Experten, Handelsrobotern und Expert Advisors zu verschieben und es dort an den Anfang zu stellen.
Auf diese Weise haben Sie es immer im Blick. Es gibt bereits viele Themen, die hier veröffentlicht wurden
Anatoly, ich schlage vor, das Thema zu Forex-Experten, Handelsrobotern und Expert Advisors zu verschieben und es dort an den Anfang zu stellen.
Auf diese Weise haben Sie es immer im Blick. Es gibt bereits viele Themen, die hier veröffentlicht wurden
...
Ihr Ergebnis ist 6, 25, 46. Warum nicht 6, 12 und 18?
Sie müssen die Verzögerung im Verhältnis zu einem einzelnen Zeichen betrachten. Dann sind drei Zeichen fast 8 Mal langsamer als eines, nicht 3 wie erwartet.
Die Frage ist genau diese. Warum gibt es ein solches Ergebnis bei der Skalierbarkeit? Und wenn das Ergebnis nicht verbessert werden kann, wurde die Option eines neuen Testmodus vorgeschlagen. Dies würde das Problem der langen Tests bei Verwendung mehrerer Zeichen lösen.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Analyse der Tests und Optimierung im MetaTrader 5 Strategy Tester
Anatoli Kazharski, 2018.01.27 20:15
Frage:
Ist es möglich, ein solches Multisymbol-Expert Advisor-Schema in MQL zu erstellen, so dass die Dauer der Tests nicht wiederholt ansteigt, wenn Symbole zum Test hinzugefügt werden?
//---
Wenn dies nicht möglich ist, besteht eine der Optionen für die Entwickler des Terminals darin, einen weiteren Modus hinzuzufügen, in dem der Test Symbol für Symbol und nicht alle Symbole auf einmal durchgeführt werden können. Dies würde am Ende die erwartete Testzeit ergeben. Der Punkt ist, dass Multisymbol-EAs sehr oft einfach für die Fälle verwendet werden, in denen:
Für solche Fälle brauchen wir einen neuen Modus, der es uns ermöglicht, die Dauer der Tests erheblich zu verkürzen und die Parameter zu optimieren. Und schon für den letzten Test, um alle Symbole gleichzeitig zu testen.
Ihr Ergebnis ist 6, 25, 46. Warum nicht 6, 12 und 18?
Die Verlangsamung muss in Bezug auf ein Symbol betrachtet werden.
Zwei Charaktere mit Stacheln sind ein ganz anderer Testmodus als ein einzelner Charakter. Daher ist es logisch, die Skalierbarkeit im Verhältnis zu zwei zu betrachten.
Außerdem ist der Indikator über dem Kopf so wild, dass die Arbeit mit den Spionen eine Krücke ist. Waiting for Services, wo die Skalierbarkeit nahezu perfekt sein sollte, bezogen auf ein einziges Symbol. Das gilt auch für den Timer. Nur dass es dort keine Zeckensprünge geben wird.
Ein Symbol
Zwei Ziffern
Drei Symbole
Vier Symbole
Zwei Figuren mit Spionen sind eine ganz andere Arbeitsweise für einen Prüfer als eine einzelne Figur. Daher ist es logisch, die Skalierbarkeit im Verhältnis zu zwei zu betrachten.
Darüber hinaus ist der Indikator oben so wild, dass die Arbeit mit Spionen eine Krücke ist. Waiting for Services, wo die Skalierbarkeit nahezu perfekt sein sollte, bezogen auf ein einziges Symbol. Das gilt auch für den Timer. Nur dass es dort keine Zeckensprünge geben wird.
Erheblich beschleunigt
Ein Symbol
Zwei Symbole
Drei Zeichen
Vier Zeichen
Wenn wir die Ergebnisse im Verhältnis zu zwei Symbolen betrachten, dann ist das Ergebnis von zwei Symbolen geteilt durch zwei: 17 / 2 = 8,5
Wenn wir dann Symbole hinzufügen, multiplizieren wir diesen Wert mit der Anzahl der Symbole, um die erwartete Testzeit zu erhalten.
Aber das ist auf jeden Fall das bisher beste Ergebnis. Eine interessante Variante ist die Verwendung des aktuellen Symbols in OnTick, während der Rest in benutzerdefinierten Ereignissen verwendet wird.
Sie können es benutzen, wenn keine Dienste vorhanden sind.
Dies ist ein Forum für Handel, automatisierte Handelssysteme und Strategietests.
Init() und DeInit() Ausführungsreihenfolge
Slawa, 2017.04.14 10:18
Die Dienste werden u.a. über Handelsfunktionen und die Möglichkeit der Verwaltung von Objekten verfügen. Und Diagramme.
Marktdatenanbieter sind nur eine Möglichkeit.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Init() und DeInit() Ausführungsreihenfolge
Slawa, 2017.04.14 10:21
Die Dienste werden OnTick(string symbol) haben. Aber die Ticks eines bestimmten Symbols müssen abonniert werdenForum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Init() und DeInit() Ausführungsreihenfolge
fxsaber, 2017.04.14 10:46
Es stellt sich heraus, dass die Dienste fast alle Funktionen von On haben werden: OnInit, OnDeinit, OnTick(string),OnTimer,OnTrade,OnTradeTransaction, OnTester, OnTesterInit, OnTesterPass, OnTesterDeinit, OnBookEvent, OnChartEvent(long ChartID, ...), OnCalculate, ...
Und wenn Sie keine Indikatorpuffer brauchen und sich nicht mit Indikatoren/Advisoren herumschlagen wollen, schreiben Sie einen neuen Programmtyp - Services -, der keine Einschränkungen hat (die sich aus den früheren Versionen von MT ergeben).
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Reihenfolge der Ausführung von Init() und DeInit()
Slawa, 2017.04.14 10:56
Ganz genau.
Es wird kein OnCalculate geben.
Es gibt noch keine Lösung mit OnChartEvent.