MetaTrader 5 HilfeAlgorithmisches Trading, HandelsroboterReale und generierte Ticks

Reale und generierte Ticks

Die Ticks werden benötigt für das Testen und Optimieren von Expert Advisor, weil diese die Tick-Daten nutzen. Das Backtesten kann mit echten Ticks durchgeführt werden, die vom Broker bereitgestellt werden oder basierend auf Minutendaten.

Reale Ticks #

Das Testen und Optimieren basierend auf realen Ticks, kommt echten Handelsbedingungen am nächsten. Anstelle generierter Ticks, basierend auf Minutendaten ist es möglich echte Tickdaten vom Broker zu nutzen. Diese Ticks kommen von den Märkten oder Liquiditätsprovidern.

Beim Testen mit realen Tickdaten, kann der Spread innerhalb einer Minutenkerze wechseln, bei benerierten Ticks ist der Spread fixiert.

Wenn die Markttiefe für ein Symbol angezeigt wird, werden die Kerzen strikt nach dem letzt ausgeführten Preis aufgebaut. Ansonsten nimmt der Tester zuerst den letzten Preis der Kerze oder den Bid-Preis. Der OnTick Even wird bei jedem Tick ausgelöst.

Bitte beachten Sie, dass die Handelsoperationen immer mit Bid- und Ask-Preisen ausgeführt werden. Zum Beispiel, wenn ein Expert Advisor mit den Eröffnungspreisen arbeitet und ein Signal durch den letzten Preis erhält, wird ein Trade zum entsprechenden Bid- oder Ask-Preis ausgelöst. Im "Jeder Tick"-Modus, werden Kerzen anhand der Bid-Preise erstellt, Order jedoch immer zum entsprechenden Bid- oder Ask-Preis ausgeführt. Der Ask-Preis wird berechnet als Bid-Preis plus Spread der entsprechenden Kerze.

Wenn die Historie eines Symbols eine Minutenkerze ohne Tick-Daten hat, generiert der Tester Ticks automatisch im "Jeder Tick"-Modus. Dies erlaubt das Testen des EAs auf einer gewissen Periode, auch wenn die Tick-Daten des Browsers fehlerhaft sind. Wenn eine Symbol-Historie keine Minuten-Daten hat, jedoch Tick-Daten zur Verfügung stehen, wird diese ignoriert. Die Minuten-Daten werden als verlässlich angesehen.

Tick-Daten sind größer als Minuten-Daten. Der Download kann daher länger dauern vor dem ersten Test. Die Tick-Daten werden in TKC-Dateien gespeichert in \bases\[trade server name]\ticks\[symbol name]\.

Tests und Optimierungen sind nur möglich mit lokalen und Remote Agenten. Die Nutzung des MQL5 Cloud Network ist aktuell aufgrund der Datenmenge nicht möglich.

Generierung von Ticks #

Der Strategietester generiert Tick-Daten basierend auf den zwischengespeicherten ein-minütigen Integer-Daten. Das bedeutet, dass der Tester die benötigten Historien-Daten aus der Plattform kopiert und diese in das Integer-Format umwandelt um die Berechnungen zu beschleunigen.

Der Strategietester bietet mehrere Tick-Generierungsmodi an. Der genaueste Modus "Jeder Tick" ("Every Tick") ist unten beschrieben.

Die Tick-Generierung ist für jede Kerze mit unterschiedlichem Volumen anders:

Tick-Volumen = 1

Ticks werden nicht generiert für Kerzen mit einem Tick-Volumen von eins, der einzelne Tick wird mit dem Schlusspreis der Kerze gleichgesetzt:

Tick-Volumen gleich eins

Tick-Volumen = 2

Auch für Kerzen mit zwei Ticks werden keine Ticks generiert. Zuerst wird ein Tick für die Eröffnung der Kerze und dann einer für die Schließung der Kerze festgeschrieben:

Tick-Volumen gleich zwei

Tick-Volumen >= 3

Für Kerzen mit 3 oder mehr Ticks gibt es verschiedene Methoden Ticks zu generieren, in Abhängigkeit der Anzahl.

Bar Progress Schema

Vier verschiedene Schemata sind möglich für Kerzen mit drei oder mehr Ticks:

Progress Optionen

Image

Der Preis bewegt sich in eine Richtung und kehrt zum Eröffnungspreis-Level zurück. Damit hat eine Kerze nur ein Hoch (den höchsten Preis) und ein Tief (den niedrigsten Preis).

Bull Candlestick

Bear Candlestick

Der Preis bewegt sich in eine Richtung, kehrt um und bricht durch das Eröffnungspreis-Level. In diesem Fall hat die Kerze entweder nur ein Hoch oder nur ein Tief, aber Eröffnungspreis und Schlusspreis sind nicht identisch.

Bull Candlestick

Bear Candlestick

Der Preis bewegt sich in eine Richtung, aber erreicht nicht den Eröffnungspreis beim Umkehren.

Bull Candlestick

Bear Candlestick

Der Preis bewegt sich mehrere Punkte in nur eine Richtung. In diesem Fall hat die Kerze kein Hoch oder Tief.

Bull Candlestick

Bear Candlestick

Generierung von Ticks für Kerzen mit drei oder mehr Ticks

Ticks werden anhand von Referenzpunkten generiert. Die Anzahl dieser Punkte kann das Tick-Volumen nicht überschreiten und kann nicht größer als 11 sein, wobei der Eröffnungskurs außer Acht gelassen wird.

Referenzpunkte werden geteilt in 3 Teile: Einmal für den Eröffnungsschatten, die Entfernung zwischen High und Low und der Schlussschatten.

Kerzen

Je nach Anzahl der Ticks, sind die folgenden Varianten der Verteilung der Referenzpunkte möglich:

Anzahl an Referenzpunkten

Eröffnungsschatten

Entfernung von Hoch und Tief

Schlussschatten

11

3

5

3

10

2

6

2

9

2

5

2

8

2

4

2

7

2

3

2

6

1

4

1

5

1

3

1

4

1

2

1

3

1

1

1

  • Wenn eine Kerze keinen Schatten aufweist, sind die Schattenpunkte in der Entfernung zwischen Hoch und Tief enthalten.
  • Die Entfernung zwischen Hoch und Tief wird von einer ungeraden Zahl an Referenzpunkten generiert. Wenn die Entfernung eine gerade Zahl an Punkten hat, wird der überschüssige Punkt in einem der Schatten zugefügt, zumindest, wenn der Schatten bereits 2 Punkte hat. Ansonsten wird der überschüssige Punkt ignoriert.

Die ideale Verteilung (3-5-3)

Referenzpunkte werden berechnet aus der Anzahl an Punkten vom Eröffnungspreis. Die ideale Verteilung von Punkten (3-5-3) wird wie folgt berechnet:

Bull Candlestick

Berechnung von Punkten

Image

  • Öffnen
  • 3/4*(O - L)
  • 1/2*(O - L)
  • Low
  • (H - L)/3
  • (H - L)*3 - 1
  • 2/3*(H - L)
  • 2/3*(H - L) - 1
  • High
  • 3/4*(H - C)
  • 1/2*(H - C)
  • Close

Bull Candlestick

Bear Candlestick

Berechnung von Punkten

Image

  • Öffnen
  • 3/4*(O - H)
  • 1/2*(O - H)
  • High
  • (L - H)/3
  • (L - H)/3 + 1
  • 2/3*(L - H)
  • 2/3(L - H) + 1
  • Low
  • 3/4*(L - C)
  • 1/2*(L - C)
  • Close

Bear Candlestick

Doji Candlesticks

Wenn die Kerze eine Doji ist (Close = Open), werden die vorherigen Kerzen analysiert. Wenn die vorherige Kerze steigend war, wird diese als fallend angenommen und umgekehrt.

Doji Candlesticks

Zeichen eines Schattens von drei Punkten

Wenn ein Schatten mit drei Referenzpunkten generiert wird und die Integer-Werte von 3/4 und 1/2 der Schattengröße gleich sind (dies passiert, wenn der Unterschied zwischen Open und Low oder Open und High nicht größer ist als 2 Punkte, also die Distanz für einen Schritt vor- und rückwärts identisch ist), dann wird der Schatten wie folgt generiert:

Bull Candlestick

Berechnung von Punkten

Image

  • Öffnen
  • Open - 1
  • Öffnen
  • Low

Bull Candlestick

Bear Candlestick

Berechnung von Punkten

Image

  • Öffnen
  • Open + 1
  • Öffnen
  • High

Bear Candlestick

Ein Schlussschatten wird auf die gleiche Weise generiert.

Zeichnen eines Schattens mit zwei Punkten

Wenn ein Schatten generiert wird aus zwei Punkten, wird die Generierung wie folgt durchgeführt:

Bull Candlestick

Berechnung von Punkten

Image

  • Öffnen
  • Open + 1
  • Low

Bull Candlestick

Bear Candlestick

Berechnung von Punkten

Image

  • Öffnen
  • Open - 1
  • High

Bear Candlestick

Ein Schlussschatten wird auf die gleiche Weise generiert.

Zeichnen der Entfernung einer Kerze

Die Kerzenentfernung wird durch Wellen in Zyklen generiert. Wenn Prev = Low (vorheriger Preis gleich Tief), wird der folgende Zyklus genutzt:

  • N1 = Prev + Step
  • N2 = Prev + Step - 1
  • Prev = N2

Wenn Prev = High (vorheriger Preis gleich Hoch), wird der folgende Zyklus genutzt:

  • N1 = Prev - Step
  • N2 = Prev - Step + 1
  • Prev = N2

Wobei:

N1 und N2 sind Referenzpunkte in einem Zyklus;
Prev ist der vorherige Preis;
Step ist die Schrittgröße. Der Schritt wird wie folgt berechnet: (H - L - 1)/(Anzahl an Zyklen) + 1;
Anzahl an Zyklen (Anzahl an Referenzpunkten in der Entfernung + 1)/2.

Entfernung von Hoch und Tief

Dazwischenliegende Ticks

Ticks, die zwischen Referenzpunkten liegen werden nach der folgenden Regel generiert:

  • Wenn die Anzahl an Ticks größer ist als die Anzahl an Pips zwischen Referenzpunkten, wird eine "Saw" generiert (Initialwert +/- 1).
  • Wenn die Anzahl an Pips zwischen Referenzpunkten groß genug ist, wird eine lineare Sequenz von Ticks generiert.

Tick Generierungsmodus #

Der Tick-Generierungsmodus kann in den Strategietester Einstellungen ausgewählt werden. Die folgenden Optionen sind verfügbar:

Jeder Tick (Every Tick)

In diesem Modus, werden alle Ticks generiert - OHLC und dazwischenliegende Ticks. Die Prozedur zur Generierung dieser Ticks ist oben beschrieben.

1 Minute OHLC

In diesem Modus werden nur OHLC Ticks von Ein-Minuten Kerzen generiert. Wenn das Tick-Volumen einer Kerze größer als vier ist, dann werden nur die OHLC Preise generiert. Wenn das Tick-Volumen kleiner als vier ist, dann werden die obigen Regeln für Kerzenformationen angewendet.

Wenn Sie diesen Modus auswählen, heißt das nicht, dass der Test oder die Optimierung auf dem M1 Zeitrahmen durchgeführt wird. Wenn Sie bspw. den H1 Zeitrahmen auswählen im "OHLC M1" Modus, werden die Preise generiert aus den Minutenkerzen und den entsprechenden OHLC Werten. In diesem Fall wird die OnTick() Funktion eines Expert Advisors viermal in einer Minute ausgeführt - bei der Eröffnung, Schließung, beim Hoch und beim Tief einer Minutenkerze, auch wenn der Test im H1 durchgeführt wird.

Außerdem existieren in den historischen Daten nur OHLC Preise. Somit wird nur die Zeit des Eintreffens der OHLC Ticks generiert und die Datenwerte selbst aus der Historie genommen.

Nur Öffnungspreise (Open Prices Only)

In diesem Modus, werden OHLC Preise des für das Testen ausgewählten Zeitrahmens ausgewählt. Die Expert Advisor Funktion OnTick() wird nur zum Beginn einer Bar ausgeführt (Eröffnungspreis) Bei der Auswahl dieses Features, werden Stop Level und Pending Orders möglicherweise zu einem anderen Kurs ausgeführt als dem angegebenen, insbesondere beim Test höherer Zeitrahmen. Dies erlaubt Ihnen jedoch eine schnelle Einschätzung eines Expert Advisors.

Ausnahmen sind die Zeiteinheiten W1 und MN1, bei der jeweils Tageskerzen generiert werden.

Es gibt Limitierungen im "Open Prices Only" Modus:

  • Die zufällige Verzögerung kann nicht genutzt werden;
  • Der getestete Expert Advisor kann nicht auf Daten eines Zeitrahmens zugreifen, der unterhalb des ausgewählten Zeitrahmens liegt. Wenn Sie die Optimierung bspw. auf der H1 Periode durchführen, können Sie keine Daten unterhalb von H1 abrufen, also z.B. M30. Zusätzlich müssen die höher liegenden Zeitrahmen ein Vielfaches des getesteten Zeitrahmens sein. Wenn Sie bspw. Tests im M20 durchführen, können Sie nicht die Daten von M30 aufrufen. H1 jedoch wäre möglich. Diese Limitierungen sind verbunden mit der Unmöglichkeit Daten zu ermitteln, die kleiner oder kein Vielfaches sind.
  • Limitierungen beim Zugriff auf Daten anderer Zeitrahmen sind auch für andere Handelssymbole gültig, die vom Expert Advisor genutzt werden. In diesem Fall gilt die Limitierung für jedes Symbol je nach dem ersten Zeitrahmen, der während eines Tests angefragt wurde. Nehmen wir an, wir testen auf EURUSD H1 und der Expert Advisor greift auf die Daten von GBPUSD M20 zu. In diesem Fall wird der Expert Advisor Daten von EURUSD H1, H2, etc. nutzen können, sowie Daten von GBPUSD M20, H1, H2 usw.

Der Modus "Jeder Tick" ist der genaueste, aber auch der langsamste Modus. Für ein schnelle, aber ungenaue Tests/Optimierungen ist der "Open Prices Only" Modus zu testen.

Mathematische Berechnungen #

Dieser Modus erlaubt die Nutzung des Strategietesters für mathematische Berechnungen. Dieser Modus benötigt keine historischen Daten über Symbole und muss daher auch keine Ticks generieren. Im getesteten Expert Advisor, werden nur OnInit(), OnTester() und OnDeinit() sequentiell aufgerufen.

In diesem Modus wird das benutzerdefinierte Optimierungskriterium genutzt. Alle Felder in den Tester-Einstellungen werden inaktiv außer für den Optimierungsmodus und die Expert Advisor Auswahl.

Mathematische Berechnungen sind sinnvoll für die Berechnung von Extrempunkten mathematischer Funktionen dessen Werte von der OnTester() zurückgegeben werden sollten. Die Optimierung in diesem Fall sucht die höchsten Werte dieser Funktion. Mit einer großen Anzahl an Kombinationen an Eingabeparametern für eine mathematische Funktion ist es empfohlen den "Genetischen Algorithmus" zu nutzen. Dies erlaubt es die Berechnung signifikant zu beschleunigen.