iSpread: Ein umfassender Spread-Indikator für das Pair Trading mit MetaTrader 5

Mike 2014.04.15 22:51 18 0 0
Anhang

Mit dem iSpread-Indikator kannst du dein eigenes synthetisches Symbol basierend auf zwei ausgewählten Währungspaaren erstellen.

So funktioniert der Algorithmus des Indikators:

Auswahl der Anfangsdaten

  1. Startdatum – Wähle den Starttag für den Aufbau des synthetischen Symbols. Dies ist erforderlich, um unnötige alte Historien-Daten zu vermeiden.
  2. Symbol 1/2 – Wähle zwei Ausgangspaare.
Der nächste Schritt ist die Vorbereitung der Eingabedaten.

Datenkonversion

  1. Aktion – Wähle eine arithmetische Operation, mit der die beiden Zeitreihen zu einer fusioniert werden. Es stehen 4 Operationen zur Verfügung: - + / *. Ich habe Differenz und Verhältnis verwendet. Vielleicht sind auch Summe und Produkt notwendig, aber ich habe das nie gemacht. Ich würde mich freuen, wenn mir jemand schreibt, wie sie genutzt werden können.
  2. Symbol umkehren 1/2 – Invertiere eine ausgewählte Reihe, wenn die Korrelation negativ ist.
  3. Symbolgrad 1/2 – Exponentiation der ausgewählten Reihen. Ich weiß, dass dies notwendig ist, auch wenn ich diese Option nie benutze, weil ich nicht genau verstehe, warum die Reihen exponentiert werden müssen. Ich denke, diese Option könnte verwendet werden, um die Dimensionen beider Reihen anzugleichen, aber ich verwende Multiplikatoren dafür. Wenn meine Annahme stimmt, was ist dann der Vorteil des einen Ansatzes gegenüber dem anderen?
  4. Symbolmultiplikator 1/2 – Multiplizieren einer Reihe mit einer bestimmten Zahl. Ich nutze dies, um die Dimensionen der Reihen anzugleichen.
  5. Logarithmen – Wandle die resultierende Reihe in eine logarithmische Skala um. Wenn ich den Logarithmus verwende, bereite ich die finale Reihe mit der Differenz zwischen zwei ursprünglichen Reihen vor. Wenn ich ihn nicht verwende, wähle das Verhältnis als Aktion. Generell kannst du durch die Umwandlung in diese Skala den Einfluss des quadratischen Trends vermeiden. Allerdings sehe ich bei kurzen Segmenten keinen Unterschied, daher benutze ich ihn oft nicht und wähle die Aktion - Verhältnis. Wenn ich mich irre, freue ich mich über deine Kommentare.
  6. Glättungsperiode – Wenn alle Aktionen abgeschlossen sind, wird manchmal eine leichte Glättung der resultierenden Daten verwendet, bevor du die beiden Reihen in eine zusammenführst. Ich glätte diese Reihe mit einem einfachen gleitenden Durchschnitt (MA) mit einer festgelegten Periode. Es verursacht praktisch keine Verzerrung, kann aber einige Spitzen herausfiltern. Du kannst die Glättung auch weglassen, indem du 0 für diesen Parameter angibst. Bei der Verwendung einer kurzen Periode zur Trendentfernung (siehe Optionen weiter unten) benutze ich keine Glättung. Die Glättung führt bei großen Werten zu keinem Datenverlust, während sie die finale Reihe glatter und weniger verrauscht macht.

Das ist alles, was wir tun müssen, um die Daten vorzubereiten und ein synthetisches Symbol zu erstellen. Hier ist, was wir gemacht haben:

Wir haben EURUSD genommen:

eurusd

Wir haben GBPUSD genommen:

gbpusd

Das ist unser synthetisches Symbol:

synthetisches Symbol


Der letzte Schritt besteht darin, die erforderliche Abweichung zu bestimmen, um Einstiegspunkte zu finden:

Finden von Abweichungen

  1. Auswahl eines Algorithmus – Trend entfernen mit einem einfachen MA oder der ersten Differenz. Entferne den Trend aus einer resultierenden Reihe. Ich kenne zwei Möglichkeiten, dies zu tun (ich bevorzuge die zweite). Die erste Möglichkeit ist, den MA mit einer erforderlichen Periode (Lag) von der resultierenden Reihe zu entfernen. Die Periode wird basierend auf dem Anlagehorizont ausgewählt. Der MA basiert auf einem einfachen Algorithmus. Es ist noch unklar, ob es sinnvoll ist, den exponentiellen zu verwenden und was der Unterschied ist. Ich würde mich freuen, wenn ihr mir dazu eure Kommentare gebt. Die zweite Möglichkeit: Nimm die erste Differenz zweimal, zuerst für jedes Paar, dann die Differenz zwischen den Ergebnissen. Die finalen Ergebnisse der beiden Methoden sind ähnlich, wenn es keine starken Bewegungen in einer der Reihen gibt. Bei einer starken Bewegung gibt die erste Methode eine schnellere Rückkehr des synthetischen Ergebnisses zu 0, was oft ein falsches Signal ist. Ein Hinweis zur ersten Differenz: Anstelle von Close[1]-Close[2] verwende ich Close[1]/Close[2], also das "erste Verhältnis", obwohl ich diesen Begriff noch nie gehört habe.
  2. Periode für den Algorithmus – ein Lag, ein Versatz. Wenn auf 0 gesetzt, wird das synthetische Symbol nicht modifiziert.
  3. Level anzeigen – Zeige oder verstecke Abweichungslevel, deren Überschreitung eine Entscheidung für den Markteintritt anzeigt. Ich verwende drei Level in beide Richtungen: rot, gelb, grün.
  4. Berechnungsmethode für die Levels – Ich kenne drei Möglichkeiten, diese Levels zu bestimmen. Methode 1 (normalisiert in 0..1 mit einem Versatz) – der detrendete synthetische Wert wird in einem einheitlichen Bereich normalisiert, gefolgt von einem Versatz = -0.5, sodass Schwankungen um 0 erfolgen. Diese Methode benutze ich am häufigsten. Bitte beachte jedoch, dass die anfänglichen Daten, die verfügbar sind, wenn wir keine stabilen Extrema haben, ebenfalls normalisiert sind und diese Werte nicht berücksichtigt werden sollten. Da der Indikator die Vergangenheit nicht neu zeichnet, nachdem die neuen Extrema erreicht sind, sieht es auf einem Chart so aus:

Normalisierung


Aber nach zwei oder drei guten Divergenzen der Ausgangsreihen kannst du beginnen, diesen Levels zu vertrauen. Die Extrema für die Normalisierung gehen nicht verloren, da die Daten akkumuliert werden.

Methode 2 (Extremalevels) – einfach das absolute Maximum der Abweichung verfolgen und es in 3 Levels für den Markteintritt unterteilen.

Die Eigenschaften sind die gleichen wie bei der Normalisierung – es wird nicht empfohlen, solchen Levels zu vertrauen, bis du stabile Extrema erhältst.

Wenn du diese Methode verwendest, sehen wir folgendes Bild:

Abweichungen der Extrema

Ein erheblicher Vorteil der Verwendung einer der oben genannten Methoden zur Zeichnung der Levels ist, dass die Levels nicht verengt werden. Aber es gibt auch einen Nachteil – wenn es einen Spike gibt, orientieren sich nachfolgende Berechnungen daran. Um ihn zu entfernen, hat der Indikator einen weiteren Parameter namens Levels-Koeffizient (das ist einfach ein Faktor, der es dir ermöglicht, die Levels manuell zu verengen oder zu erweitern für den Markteintritt).

Methode 3 zur Zeichnung von Levels – Berechnung der Standardabweichung. Diese Methode wurde im Indikator nicht implementiert, da sie zu einer Verengung der Levels führt, die ich für inakzeptabel halte. Infolgedessen sehen die Levels wie Blasen aus, die ständig verengt und erweitert werden. Leider kann ich keine Screenshots bereitstellen, da ich diese Berechnungsmethode aus allen Indikatoren entfernt habe. Ein weiterer Nachteil ist, dass du ständig alle verfügbaren Daten überprüfen musst, um das alles korrekt zu berechnen.

P.S. Der Indikator wurde von MetaTrader 4 migriert, um einige Ideen im Multitester zu überprüfen, aber es gibt einige Anmerkungen:

  1. Der Indikator zieht etwas Rauschen, wenn er nicht alle Daten abrufen kann. Ich konnte den Grund dafür nicht finden, das passiert in MetaTrader 4 nicht;
  2. Der Indikator könnte frühere Daten verwenden, wenn er auf Datenlücken in der Historie trifft, aber aufgrund des ersten Punktes ließ ich die Daten leer, damit wir genau sehen können, wo Daten fehlen.
  3. Wenn etwas seltsam dargestellt wird, aktualisiere das Chart, ändere den Zeitraum, das Paar usw.
  4. Ich versuchte, einen Timer zu verwenden, als keine Daten vorhanden waren – das Ergebnis war unbefriedigend, also habe ich den Timer gelöscht.
  5. Ich vermute, dass 1-4 aus meinem "nicht ausreichend guten" Wissen über MQL5 resultieren, daher wäre ich für eure Kommentare dankbar.
Liste
Kommentar 0