Merkmale der Sprache mql5, Feinheiten und Techniken - Seite 28

 

Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien

Wanzen, Wanzen, Fragen

Renat Fatkhullin, 2017.03.31 09:10

Verwenden Sie ArraySize für dynamische Objekte und wenden Sie sizeof nur auf statische Objekte an. Sizeof zählt zur Kompilierzeit und ist immer eine Konstante.

 

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

SeriesInfoInteger(_Symbol,_Periode,SERIES_SYNCHRONIZED)) und SymbolIsSynchronized(_Symbol)

Slawa, 2017.04.04 08:05

In Experten und Skripten werden beim Aufruf von Kopierfunktionen mehrere Versuche unternommen - erstes Datum im Server wird geprüft, erstes Datum im Client-Terminal wird geprüft, mit angefordertem Datum verglichen, Symbolsynchronisation wird geprüft, Anforderung zur Wiederaufnahme wird gesendet, kleines Warten und Runde mit Synchronisationsprüfung. Wenn das Symbol immer noch nicht synchronisiert ist, wird ihm das gegeben, was es ist und die Bedingungen der Anfrage erfüllt. Die angeforderte Zeitreihe wird nicht auf Synchronisierung geprüft, da sie beim Auslagern der Daten im laufenden Betrieb vervollständigt wird.

Bei Indikatoren wird nur eine Anfrage gestellt - keine Schleife! Dann wird alles, was eingenommen werden konnte, sofort ausgegeben.

 

Im MT5-Tester im "Real Ticks"-Modus sind die Basis der Historie nicht echte Ticks, sondern M1-Balken. Das bedeutet, dass echte Ticks, die nicht mit Balken übereinstimmen, ignoriert werden und stattdessen künstliche Ticks erzeugt werden, die mit Balken übereinstimmen müssen.

Wenn gleichzeitig CopyTicks für mehr als 128K angefordert werden, werden sie im Tester nicht aus dem Cache (echte Ticks + generiert), sondern aus einer Datenbank - echte Ticks - genommen. Und Sie werden eine Diskrepanz zwischen der Tick-Historie des Testers und dem, was der Tester generiert hat, feststellen.

 
fxsaber:

Im MT5-Tester im "Real Ticks"-Modus sind die Basis der Historie nicht echte Ticks, sondern M1-Balken. Das bedeutet, dass echte Ticks, die nicht mit Balken übereinstimmen, ignoriert werden und stattdessen künstliche Ticks erzeugt werden, die mit Balken übereinstimmen müssen.

Wenn gleichzeitig CopyTicks für mehr als 128K angefordert werden, werden sie im Tester nicht aus dem Cache (echte Ticks + generiert), sondern aus einer Datenbank - echte Ticks - genommen. Und es kommt zu einer Diskrepanz zwischen der Historie der Ticks und dem, was das Testgerät ausgibt.

Wie furchtbar! Ist das wirklich so? - Haben Sie in SD geschrieben?

Was man jetzt glauben soll, wie man leben soll... (fast ohne traurige Ironie)

 
Andrej Dik:

Wie furchtbar! Ist das wirklich wahr? - Haben Sie es in SD geschrieben?

Dies ist eine stark gekürzte Paraphrase der Antworten der Entwickler, nicht meines Antrags an den SD.
 
fxsaber:

Gleichzeitig wird, wenn CopyTicks für mehr als 128K Kantenstücke angefordert wird,

Welche Kante? 128K letzte ?

Oder die erste?

 
George Merts:

Was ist der Vorteil? 128K der letzten ?

Oder die erste?


Die jüngste.
 
Andrej Dik:

Wie furchtbar! Ist das wirklich wahr? - Haben sie in den SD geschrieben?

Was man jetzt glauben soll, wie man leben soll... (fast ohne traurige Ironie)

https://www.mql5.com/ru/docs/runtime/testing#real_ticks
 

Bei der Prüfung gelten Minutenangaben als zuverlässiger.

Sind Minutenbalken zuverlässiger? Sind Zeckendaten nicht das letzte Mittel? Wozu brauchen wir überhaupt echte Tickdaten, wenn sie nicht berücksichtigt werden?

Ich war naiv, als ich mit Minuten testete, dann testete ich mit Ticks, dann mit echten Ticks, um die Genauigkeit zu überprüfen. Jetzt verstehe ich, dass die dritte Prüfung keinen Sinn hat.

 
Andrej Dik:

Bei der Prüfung gelten Minutenangaben als zuverlässiger.

Sind Minutenbalken zuverlässiger? Sind Zeckendaten nicht das letzte Mittel? Wozu brauchen wir überhaupt echte Tickdaten, wenn sie nicht berücksichtigt werden?

Naiverweise habe ich das immer so gemacht: Ich habe mit Minuten getestet, dann mit Ticks, dann mit echten Ticks als letzte Genauigkeitsprüfung. Jetzt verstehe ich, dass die dritte Prüfung nicht viel Sinn macht.


Es gibt keinen Grund, den Satz aus dem Zusammenhang zu reißen. Der Satz klingt wie folgt:

Um die größtmögliche Genauigkeit beim Testen zu gewährleisten, werden im Real-Tick-Modus auch Minutenbalken verwendet. Die Zeckendaten werden von ihnen überprüft und korrigiert. Es hilft auch, Divergenzen zwischen den Charts im Strategy Tester und im Client-Terminal zu vermeiden.

Der Tester prüft, ob die Tick-Daten mit den Parametern des Minutenbalkens übereinstimmen: Ein Tick darf nicht über die Höchst-/Tiefstkurse hinausgehen, die Eröffnungs- und Schluss-Ticks müssen mit den Eröffnungs-/Schlusskursen des Balkens übereinstimmen. Auch das Volumen wird verglichen. Wird eine Unstimmigkeit festgestellt, werden alle Ticks, die diesem Minutenbalken entsprechen, verworfen. Stattdessen werden die erzeugten Ticks verwendet (wie im Modus "Alle Ticks").

Wenn ein Minutenbalken in der Symbolhistorie vorhanden ist, aber keine Tickdaten für diese Minute, erzeugt das Prüfgerät Ticks im Modus "Alle Ticks". So kann der Prüfer bei unvollständigen Tickdaten beim Broker das richtige Diagramm erstellen.

Wenn es in der Symbolhistorie keinen Minutenbalken, aber Tickdaten für diese Minute gibt, können diese im Tester verwendet werden. Die Balken von Aktiensymbolen werden zum Beispiel anhand der letzten Kurse gebildet. Wenn vom Server nur Ticks mit Bid/Ask-Kursen ohne Last-Kurse ankommen, wird der Balken nicht gebildet. Der Prüfer wird diese Tickdaten verwenden, da sie nicht im Widerspruch zu den Minutendaten stehen.

Tick-Daten können aus verschiedenen Gründen nicht mit Minutenbalken übereinstimmen. Zum Beispiel aufgrund von Verbindungsunterbrechungen oder anderen Fehlern bei der Datenübertragung von der Quelle zum Client-Terminal. Bei der Prüfung gelten Minutenangaben als zuverlässiger.

Wie Sie sehen, wird sich herausstellen, dass Sie den Hinweis falsch interpretiert haben, wenn Sie nicht versuchen zu manipulieren.
Grund der Beschwerde: