Dokumentation

Anwendungen

Zuletzt aktualisiert am 15. 4. 2020 von Mark Fric

Externe Indikatoren

Diese Funktionalität ist ab Build 127 verfügbar. Bitte beachten Sie auch, dass diese Funktion in den letzten Builds von Custom Data Indicators in External Indicators umbenannt wurde.

Wenn Sie einen Indikator haben, den Sie in StrategyQuant verwenden möchten, der dort aber noch nicht unterstützt wird, haben Sie zwei Möglichkeiten:

  1. Implementierung des benutzerdefinierten Indikators in Java im StrategyQuant CodeEditor - dies erfordert einige Programmierkenntnisse. Ein auf diese Weise hinzugefügter Indikator funktioniert genauso wie jeder andere Indikator, den SQ unterstützt
  2. Importieren Sie den benutzerdefinierten Indikator als Daten - Auf diese Weise kann StrategyQuant den Indikator verwenden, ohne zu wissen, wie genau er seine Werte berechnet hat.
    Dies ist einfacher, hat aber einige Einschränkungen - Sie müssen die Indikatorwerte mit einem speziellen Skript von Ihrer Handelsplattform exportieren und dann in SQ importieren. Außerdem gelten die Daten nur für das Symbol und den Zeitrahmen, für den Sie sie berechnet haben. Wenn Sie beispielsweise Ihren benutzerdefinierten Indikator für EURUSD / H1 berechnen und ihn für GBPUSD / H1 oder sogar EURUSD / M30 verwenden möchten, müssen Sie die Daten erneut von Ihrer Handelsplattform exportieren.

Diese Dokumentation befasst sich mit der Option 2 - dem Import von Indikatoren als Daten.

Achtung! 

Benutzerdefinierte Indikatoren, die als Daten importiert werden, werden in MetaTrader, Tradestation oder Ihrer anderen Handelsplattform berechnet, nicht in SQ. Um die richtigen Ergebnisse zu erhalten, müssen Sie dieselben historischen Daten in StrategyQuant und MT4 verwenden.
Es wird nicht funktionieren, Ihren benutzerdefinierten Indikator in MetaTrader mit den Daten Ihres Brokers zu berechnen und ihn dann in StrategyQuant mit Daten aus einer anderen Quelle zu verwenden. Bevor Sie benutzerdefinierte Indikatoren verwenden, synchronisieren Sie Ihre Verlaufsdaten, so dass sowohl SQ als auch MT4 denselben Verlauf verwenden

 

In diesem Beispiel implementieren wir den RVI-Indikator, der ein Standardindikator der MT5-Plattform ist:

MT5 RVI-Indikator

 

 

Schritt 1: Definieren Sie Ihren neuen externen Indikator in StrategyQuant

Gehe zu Datenverwalter -> Externe Indikatoren und klicken Sie auf Neu hinzufügen.

Es öffnet sich ein Dialogfeld für einen neuen Indikator, in dem Sie die Eigenschaften des hinzuzufügenden Indikators angeben:

Benutzerdefinierten Datenindikator hinzufügen

Name

ist der Name des Indikators, unter dem er in SQ angezeigt wird. Er muss eindeutig sein und darf keine besonderen Angaben enthalten.
Zeichen.
Da der benutzerdefinierte Indikator speziell für ein Symbol und einen Zeitrahmen berechnet wird, ist es eine gute Praxis, Symbol und TF auch in seinem Namen zu verwenden, wie in unserem Fall: RVI_EURUSD_H1.

 

Art der Rückgabe

ist eine Art von Rückgabewert, den der Indikator berechnet. Er wird von StrategyQuant verwendet, um diesen benutzerdefinierten Indikator richtig mit anderen Bausteinen im Programm abzugleichen, so dass er den Preis mit dem Preis vergleicht und nicht zum Beispiel den Preis mit dem CCI-Wert. Er kann entweder sein:

  • Nummer - wenn es sich um Indikatoren wie CCI, RSI, MACD usw. handelt.
  • Preis - wenn der Indikatorwert der Preis ist, wie gleitender Durchschnitt oder Bollinger Bands.
  • Preisspanne - wenn der Indikatorwert eine Preisspanne (Differenz zwischen zwei Preisen) ist, wie z. B. ATR oder Bollinger Bands Range.
  • Signal - Wenn Sie den Indikator als benutzerdefinierten Signalblock verwenden möchten, nutzen Sie diese Option. Sie können den Signalindikator zum Beispiel verwenden, um Kerzenmuster zu erkennen oder um Ihre eigenen einfachen Handelsregeln zu implementieren.

Wie man die richtige Rückgabeart bestimmt

Wenn der Indikator seine Linien auf demselben Chart wie der Preis zeichnet, ist sein Rückgabetyp im Allgemeinen der Preis. Wenn der Indikator seine Linien in einem separaten Fenster unterhalb des Hauptdiagramms zeichnet, dann ist es Nummer, außer bei speziellen Indikatoren wie ATR, die Preisdifferenzen oder -spannen berechnen.

 

Indikatorwerte (Linien)

Dies sind die Werte, die der Indikator ausgibt. Auf dem Screenshot des RVI-Indikators unten sehen Sie, dass er zwei Werte im Datenfenster ausgibt, die der RVI-Linie (grün) und der Signallinie (rot) auf dem Chart entsprechen.

Die Werte müssen in der gleichen Reihenfolge definiert werden, in der sie im Indikator angelegt wurden.

Dann gibt es einen interessanten Teil - Sie können den Quellcode für jede Handelsplattform für jede Zeile definieren. Dies ist nicht notwendig, damit der Indikator in SQ funktioniert, aber es ist erforderlich, damit SQ weiß, wie der Quellcode der Strategie für jede Plattform zu generieren ist.

Sie müssen die Quellen nicht für alle drei Plattformen (MT4, MT5, EasyLanguage) definieren. Wenn Sie nur MT5 verwenden, genügt es, nur diesen Code anzugeben.

Der Code ist, wie Sie diesen Indikator in Ihrem Handelsplattform-Code verwenden würden, für MetaTrader ist es normalerweise etwas wie:

iCustom(NULL, 0, "RVI", 10, 0, #Shift#)

 

Beachten Sie, dass Sie #Schicht# Konstante für MT4-Code - sie wird bei der Codegenerierung durch die tatsächliche Verschiebung des Bausteins ersetzt.

Shift wird im MetaTrader5 auf eine andere Weise verwendet und muss nicht berechnet werden.

 

Klicken Sie auf OK und der neue Indikator wird erstellt:

Er kann noch nicht verwendet werden, da es sich nur um eine Definition handelt - wir müssen Daten in diesen Indikator importieren, damit die SQ ihn verwenden kann.

 

 

Schritt 2: Abrufen der Werte aus dem MetaTrader

Benutzerdefinierte Indikatoren funktionieren so, dass StrategyQuant ihre in einem anderen Programm berechneten Werte verwendet, zum Beispiel in MetaTrader. Das bedeutet, dass wir den Indikator in MetaTrader berechnen und dann seinen Wert (seine Werte) in SQ importieren müssen.

Das ist ein bisschen kompliziert, aber andererseits erlaubt es uns, praktisch jeden für MetaTrader verfügbaren Indikator zu verwenden, auch wenn wir nicht wissen, wie er genau berechnet wird.

Für die Berechnung der Indikatorwerte werden wir einen einfachen EA namens SqIndicatorValuesExportEA verwenden.

Dies ist ein benutzerdefinierter EA von StrategyQuant, der verwendet werden kann, um Indikatorwerte aus dem MetaTrader zu exportieren. Sie finden diese Datei im Ordner {StrategieQuant}Benutzerdefinierte_IndikatorenMetaTrader5Experts

 

Um sie in Ihrem MetaTrader verwenden zu können, müssen Sie sie dorthin kopieren. Starten Sie Ihren MetaTrader 5, gehen Sie auf Datei ->Datenordner öffnen. Dadurch wird der MT5-Datenordner geöffnet. Gehen Sie dort zu MQL5Experts und kopieren Sie diesen EA dorthin.

Starten Sie dann Ihren MetaTrader neu und der neue EA wird verfügbar sein.

Bevor wir es verwenden können, müssen wir es so ändern, dass es die Werte des Indikators RVI genau wie wir es wollen.

Öffnen Sie MT5 -> Werkzeuge -> MetaQuotes Spracheditor und suchen und öffnen Sie diesen neuen EA im Ordner Experts.

Der Code ist relativ einfach zu verwenden, Sie müssen nur an einigen wenigen Stellen Änderungen vornehmen:

  1. In OnInit müssen Sie den Namen der Exportdatei und den iCustom-Code angeben:
int OnInit() {
  ...

    // Dies ist der Name der Exportdatei. Es ist eine gute Praxis, auch Symbol und Zeitrahmen anzugeben
    fileName = "EURUSD_H1_RVI_10.csv";
   
    // Funktion zum Abrufen des Indikator-Handles
    indicatorHandle = iCustom(NULL, 0, "ExamplesRVI", 10);

 

  1. In OnTick müssen Sie aktualisieren, welche Werte (Indikatorzeilen) berechnet und exportiert werden sollen:
void OnTick()
   ...
   indicatorBufferIndex = 0;
   if(!FillArraysFromBuffers(IndicatorBuffer, indicatorHandle, 2)) return;

   indicatorBufferIndex = 1;
   if(!FillArraysFromBuffers(SignalBuffer, indicatorHandle, 2)) return;

Wenn der Indikator mehrere Zeilen hat, wie im Fall des RVI, müssen Sie die Zeilen wiederholen:

   indicatorBufferIndex = NUMBER;
   if(!FillArraysFromBuffers(BUFFER_NAME, indicatorHandle, 2)) return;

für jede Zeile.

Dabei ist NUMBER die Zeilennummer beginnend bei 0 und BUFFER_NAME der Name des Pufferfeldes.
Am Anfang der Datei sind zwei Pufferarrays definiert:

double IndikatorPuffer[];
double SignalBuffer[];

Sie können mehr hinzufügen, wenn der Indikator mehr als zwei Zeilen hat.

  1. Außerdem müssen Sie in OnTick die FileWrite-Methode aktualisieren und am Ende die zu exportierenden Puffer hinzufügen:
FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]);

 

Das ist alles, jetzt können Sie den EA kompilieren, er ist bereit für den Einsatz.

 

Ausführen des Export EA in MetaTrader

Wenn die Datei SqIndicatorValuesExportEA geändert und ohne Probleme kompiliert wurde, können wir sie ausführen, um die Werte zu exportieren.

Gehen Sie zu MT5 Strategy Tester, wählen Sie diesen Experten und wählen Sie das Symbol und den Zeitrahmen, für den Sie die Indikatordaten exportieren möchten.

MT5 Indikator Export

Sie müssen das Symbol und den Zeitrahmen wählen, für den der Indikator berechnet werden soll, sowie den entsprechenden Datumsbereich.

Dann drücken Sie Start und warten Sie, bis der Export abgeschlossen ist.

 

Sobald der EA-Test abgeschlossen ist, sollte die Exportdatei in MT5-Datenordneraber es gibt einen Trick. Die erzeugte Datei befindet sich nicht in Ihrem Terminal-Ordner, sondern im Ordner "Tester".

Wenn Sie den Datenordner von MT5 öffnen, wird Ihnen Ihr Terminal-Ordner angezeigt:

MT5-Terminal-Ordner

Aber die Datei ist nicht da. Sie müssen zum Tester und dort zu Ihrem Testagenten/MQL5/Dateien gehen, um die exportierte Datei zu finden:

MT5 Prüfmappe

Jetzt können Sie die Datei kopieren und an einem günstigeren Ort einfügen, wenn Sie sie finden.

 

 

Schritt 3: Indikatorwerte in StrategyQuant importieren

Wenn wir die Indikatordaten fertig haben, können wir sie in unseren benutzerdefinierten Indikator in StrategyQuant importieren.

Gehe zu Datenverwalter -> Externe Indikatoren wählen Sie Ihren neuen Indikator aus und klicken Sie auf Indikatordaten importieren.

Suchen Sie dort die Datei und geben Sie die Importspalten an.

Wenn Sie sich den EA ansehen, wurden die Indikatordaten als die letzten beiden Werte exportiert:

FileWrite(handle, currentTime, rt[0].open, rt[0].high, rt[0].low, rt[0].close, rt[0].tick_volume, IndicatorBuffer[0], SignalBuffer[0]);

Wählen Sie also die letzten beiden Spalten als Wert1 und Wert2.

Klicken Sie auf Import starten und der Indikator sollten erfolgreich importiert werden.

SQ cusotm indicator importiert

Jetzt ist der Indikator bereit für die Verwendung in der SQ.

 

 

Schritt 4: Verwendung des externen Indikators

Wenn der Indikator erfolgreich importiert wurde, kann er wie jeder andere Baustein verwendet werden. Gehe zu Bauherr -> Einstellungen -> Bausteine und Sie sollten sich unser neues RVI Indikator dort:

SQ cusotm data indicator Baustein

Wenn Sie es nicht sehen, Prüfen Sie bitte, ob Sie den richtigen Zeitrahmen in Einstellungen -> Daten.

Denken Sie daran, dass die Indikatordaten immer für einen bestimmten Zeitrahmen berechnet werden und nicht in einem anderen Zeitrahmen verwendet werden können. Wenn Sie den Zeitrahmen z. B. auf M30 umstellen, werden Sie nur externe Indikatoren sehen, die für M30-Daten importiert wurden.

 

Wenn wir die Bausteine konfiguriert haben, können wir mit der Erstellung beginnen.

SQ

Nach einiger Zeit wird die Datenbank mit neuen Strategien gefüllt, die unseren neuen externen Indikator verwenden.

Wenn wir eine Strategie öffnen, können wir den Pseudocode überprüfen:

Pseudocode für benutzerdefinierte SQ-Datenindikatoren

Wir können sehen, dass diese Strategie Vergleich unserer RVI_EURUSD_H1 Indikatoren.

Wenn wir den Quellcode zu MetaTrader 5 wechseln, wird er gültigen MT5-Code erzeugen, der in MT5 kompiliert und ausgeführt werden kann:

SQ benutzerdefinierte Daten Indikator MT5 Code

 

Sie können sich auch ein Video ansehen, in dem unser erfahrener Programmierer Schritt für Schritt zeigt, wie Sie Ihren eigenen Indikator programmieren. Video-Link: https://www.youtube.com/watch?v=veiqIh0BS10&t=26s&ab_channel=StrategyQuant

War dieser Artikel hilfreich? Der Artikel war nützlich Der Artikel war nicht nützlich

Abonnieren
Benachrichtigen Sie mich bei
1 Kommentar
Älteste
Neuestes Meistgewählt
Inline-Rückmeldungen
Alle Kommentare anzeigen
John Warner
28. 12. 2022 10:11 Uhr

Indikatorwerte (Linien): wird nur unzureichend erklärt. Wie sieht es bei TradeStation aus? Wie wird der Name verwendet? Welche Werte sollten in das Feld "Code" für TradeStation eingegeben werden?