Konditionsbuilder
<< Click to Display Table of Contents >> Konditionsbuilder |
Der Konditionen-Builder ist eine sehr leistungsstarke Funktion, mit der Sie komplexe Bedingungen für Ihre automatisierten Handelssysteme definieren können, ohne zu wissen, wie man programmiert.
Verständnis des Konditionsbuilders
KonditionsbuilderDie meisten, wenn nicht sogar alle Assistenten für den automatisierten Handelssystemcode sind insofern im Umfang begrenzt, als sie vordefinierte Ausdrücke bereitstellen und es Ihnen nur ermöglichen, einige Parameter für diese Ausdrücke zu ändern. Der NinjaTraderCondition Builder ist dadurch erweitert, dass Sie leistungsstarke Ausdrücke ohne Einschränkungen entwickeln können. Aufgrund seiner Stärke und Flexibilität ist es äußerst wichtig, dass Sie seine Fähigkeiten durchlesen und verstehen.
The Condition Builder ist auch ein sehr wirkungsvolles Hilfsmittel für diejenigen unter Ihnen, die NinjaScript lernen oder lernen, wie man programmiert. Sie können Ihre Bedinungen imCondition Builderdefinieren und sofort denNinjaScript code sehen, indem Sie denNinjaScript Editoroffen haben (indem Sie denCode entsperren...Knopf im Builder klicken).
DerCondition Builderkann via denBedingungen and AktionenScreen imNinjaTrader Strategy Builder aufgerufen werden. Grundlegende FunktionsweiseDas allgemeine Konzept des Condition Buildersbesteht darin, einen booleschen Ausdruck zu erzeugen, der auch als Vergleichsausdruck oder bedingter Ausdruck bekannt ist. Was bedeutet das? Es ist einfach ein Ausdruck, der zu einem Wert von entweder TRUE oder FALSE führt. Zum Beispiel wird der Ausdruck
2 < 7 (2 ist kleiner als 7)
ist ein boolescher Ausdruck, da das Ergebnis TRUE ist. Alle Ausdrücke, die Vergleichsoperatoren enthalten, sind boolesch. Boolesche Ausdrücke oder "Bedingungen", wie sie unter NinjaTrader bekannt sind, werden verwendet, um zu bestimmen, wann eine bestimmte Aktion wie das Absenden einer Bestellung oder das Zeichnen im Diagramm durchgeführt werden soll.
Wenn Sie sich das folgende Bild ansehen, sehen Sie sofort, dass der Condition Builder wie ein boolescher Ausdruck aufgebaut ist. Wählen Sie ein Element aus dem linken Fenster (1), vergleichen Sie es mit einem ausgewählten Element im rechten Fenster (1) und wählen Sie dann den Vergleichsoperator (2).
1. Verfügbare Elemente wie Indikatoren, Preisdaten usw., die für den Vergleich verwendet werden können 2. Liste der Vergleichsoperatoren
Vergleichsoperator ungültige VergleicheDa der Vergleichsoperator es Ihnen ermöglicht, im Condition Builder alle Elemente von links nach rechts zu vergleichen, müssen Sie darauf achten, was Sie zu vergleichen versuchen. Zum Beispiel wäre es nicht möglich, einen preisbasierten Wert wie den DEMA-Indikatorwert mit der Misc-Kategorie Falling zu vergleichen, und den Condition Builder aufzufordern, einen Fehler wie unten gezeigt auszugeben -
"Art des linken Ausdrucks und des rechten Ausdrucks stimmen nicht überein, bitte wählen Sie ähnliche Ausdrücke aus".
Um dies zu umgehen, müssten Sie Ausdrücke mit einem ähnlichen Rückgabewert auswählen, die einen programmatischen Vergleich ermöglichen würden. In dem oben verwendeten Beispiel liefert der DEMA-Indikator einen doppelten Wert als Gegenleistung, der versucht wird, mit einem booleschen (wahren / falschen) Wert verglichen zu werden, den Falling zurückgeben würde.
Der richtige Ansatz ist unten dargestellt, der DEMA-Indikator würde als Eingangsreihe an Falling übergeben und dann könnte der Rückgabewert mit True aus der Kategorie Misc verglichen werden, um eine erfolgreiche Bedingung zu erzeugen.
|
Wie man Preisdatenvergleiche durchführt
PreisdatenvergleicheSie können die Preisdaten eines Balkens vergleichen, z.B. nach einem höheren Schluss. Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar.
1. Erweitern derPreisKategorie auf der linken Seite und wählen die OptionClose. 2. Erweitern Sie diePreisKategorie auf der rechten Seiten und wählenClose. 3. Wählen Sie den größeren Vergleichsoperator aus 4. Setzen desBars agoParameters zu einem Wert von "1"
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Der aktuelle Schlusskurs ist höher als der Schlusskurs von vor 1 bar." |
Wie man einen Positionswert verrechnet
Verrechnung eines PositionswertesSie können den Wert der meisten imCondition Builder verfügbaren Elemente gegeneinander aufrechnen. Ein Offset ist ein Wert, der addiert, subtrahiert, multipliziert oder geteilt vom / in den Wert des aktuellen Elements wird. Wenn ein Artikel ausgewählt wird, wie z.B. ein Indikator oder Preisdaten, dann werden dieOffsetundOffsetTyp Parameter im Fenster direkt unter dem ausgewählten Artikel angezeigt. Dies ist in der Abbildung unten als Nummer 5 und 6 dargestellt.
Der Offsettypwie folgt gesetzt sein:
Sobald derOffset Typausgewählt ist, müssen Sie denOffsetWert einstellen. Zusätzlich zu dem untenstehenden Beispiel sehen Sie unten den Abschnitt "Auf Volumenerweiterung prüfen" für ein weiteres Beispiel, das den TypPercentOffset verwendet.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar:
1. Erweitern derPreisKategorie und wählen Sie die OptionClose 2. Erweitern derPreisKategorie und wählen Sie die OptionHigh 3. Wählen Sie den größeren Vergleichsoperator aus 4. Setzen desBars agoParameters zu einem Wert von "1" 5. Setzt denOffset TypParameter aufTicks 6. Setzen desOffsetParameters zu einem Wert von "1"
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Der aktuelle Schlusskurs ist höher als der hohe Preis von vor 1 Bar + 1 Tick" |
Wie man Indikatoren für Wertvergleiche erstellt
Indikator für WertvergleicheSie können den Wert eines Indikators mit einem Zahlenwert vergleichen. Dies kann nützlich sein, wenn Sie überprüfen möchten, ob ADX über einem Wert von 30 liegt (Trend) oder ob die Stochastik unter einem Wert von 20 liegt (überverkauft) oder andere Bedingungen, die Ihnen einfallen.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar:
1. Erweitern derIndikatorKategorie und wählen Sie denADX Indikator 2. Stellen Sie die Parameter des Indikators ein, z.B. mit den Standardwerten sind keine Änderungen erforderlich 3. Erweitern Sie die Kategorie Sonstiges und wählen Sie Zahlenwert 4. Dengrößeren Vergleichsoperator auswählen 5. Geben Sie den Zahlenwert ein, mit dem Sie das Kennzeichen vergleichen möchten (in unserem Beispiel 30)
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Der aktuelle Wert eines ADX mit 14 Perioden ist größer als 30" |
Wie man Plotwerte von Multiplot-Indikatoren vergleicht
Vergleich von Plotwerten von Multi-Plot-IndikatorenSie können Plots mit demselben Indikator vergleichen oder jedes einzelne der Plots innerhalb eines Indikators auswählen, um eine Bedingung zu erstellen.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar:
1. Erweitern derIndikatorKategorie und wählen Sie denStochastik Indikator 2. Setzen der Indikator Eingabeparameter und wählen Sie denKPlot (grüner Pfeil) 3. Erweitern derIndikatorKategorie und wählen Sie denStochastik Indikator 4. Dengrößeren Vergleichsoperator auswählen 5. Setzen Sie die Eingabeparameter des Indikators und wählen Sie das D-Plot aus (grüner Pfeil)
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Der aktuelle K-Plotwert eines Stochastik-Indikators ist größer als der aktuelle D-Plotwert desselben Stochastik-Indikators" |
Wie man Benutzereingaben und Variablen verwendet
Benutzereingaben & VariablenBenutzereingaben sind einfach Variablen, die anstelle von Absolutwerten verwendet werden können. Sie erhöhen die Flexibilität Ihrer Strategie, da Sie den Periodenparameter eines einfachen gleitenden Durchschnitts durch eine Variable ersetzen können, anstatt einen Absolutwert zu liefern.
SMA(9) ist, wie Sie einen einfachen gleitenden 9-Punkte-Durchschnitt inNinjaScript ausdrücken. Wenn Sie eine Strategie ausführen, würden Sie immer einen einfachen gleitenden Durchschnitt mit 9 Perioden verwenden. Zur Laufzeit sollten Sie diesen Wert möglicherweise auf 10 ändern. Benutzerdefinierte Eingaben erfüllen dies. Wenn Sie eine Eingabe mit dem Namen "MyInput" erstellt haben, können Sie den einfachen gleitenden Durchschnitt als SMA(MyInput) ausdrücken. Zur Laufzeit können Sie dann Ihre Strategie konfigurieren, indem Sie den Wert von "MyInput" auf einen beliebigen Wert setzen. Darüber hinaus sind bei der Optimierung einer Strategie Benutzereingaben erforderlich.
Benutzervariablen (nicht zu verwechseln mit Eingaben) verhalten sich genauso, mit der Ausnahme, dass sie beim Starten einer Strategie nicht konfiguriert werden können, sondern nur zur Laufzeit programmgesteuert gesetzt werden können.
•Benutzereingaben werden über den Builderscreen erstellt •Benutzervariablen können in der Strategielogik über den Condition Builder gesetzt werden (siehe die Abschnitte oben)
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar, das Beispiel demonstriert die Verwendung einer Benutzereingabe, wobei der Sample-Ansatz jedoch für Benutzervariablen gilt.
1. Erweitern derPrerisKategorie und wählenClose. 2. Erweitern derIndikatorKategorie und wählen denSMAIndikator 3. Wählen Sie den größeren Vergleichsoperator aus 4. Setzen derPeriodenParameter auf den benutzerdefinierten Inpput durch Klick auf den "Set" Knopf (grüner Pfeil), um dasValueFenster zu öffnen
5. Erweitern Sie dieUser InputKategorie und wählen den Wert derMAPeriodund klicken dieOKTaste
6. Der Condition Builder sieht nun wie in der folgenden Abbildung aus, wobei die Benutzereingabe "MAPeriod" dem Parameter Period zugeordnet ist. Wenn Sie diese Strategie auf einen Chart anwenden, können Sie den Wert für die Benutzereingabe direkt aus der Benutzeroberfläche einstellen, die dann zur Steuerung des SMA-Indikators verwendet wird.
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Der aktuelle Schlusskurs ist größer als der benutzerdefinierte einfache gleitende Durchschnitt der Periode" |
Wie man eine Crossover-Bedingung erstellt
Crossover-BedingungenSie können entweder auf eineCrossAboveoderCrossBelowBedingung mit einer benutzerdefinierter Look Back Periode prüfen. Die Look Back-Periode legt die Anzahl der Balken fest, die zurückgeschaut werden müssen, um den Crossover-Zustand zu überprüfen.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar.
1. Erweitern derIndikatorKategorie und wählen Sie denEMAIndikator 2. Setzen Sie denPeriodenParameter auf den gewünschten Wert ("9" wird in diesem Beispiel verwendet) 3. Erweitern derIndikatorKategorie und wählen Sie den EMAIndikator 4. Setzen Sie den Periodenparameter auf den gewünschten Wert ("20" wird in diesem Beispiel verwendet) 5. Wählen Sie denCrossAbove-Vergleichsoperator aus 6. Setzen derLook Back Periode
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"9 Perioden exponentieller gleitender Durchschnitt überquert den 20 Perioden exponentiellen gleitenden Durchschnitt im letzten Takt" |
Wie man Indikatoreingaben in anderen Indikatoren verwendet
Indikator auf IndikatorSie können Indikatoren als Input für andere Indikatoren verwenden... tatsächlich können Sie Indikatoren unendlich in Indikatoren schachteln, wenn Sie es wirklich wollten!
Das folgende Beispiel ist ein Beispiel für die Anwendung eines einfachen gleitenden Durchschnitts (SMA) auf einen 14 PeriodenADXIndikator und ist eine von vielen möglichen Kombinationen.
1. Erweitern derIndikatorKategorie und wählen Sie den SMAIndikator 2. Setzen der Input Reihe auf denADXIndikator, indem Sie die Taste "Input bearbeiten" drücken, um dasWertFenster zu öffnen 3. Wählen desADXIndikators und setzen Sie beliebige Eigenschaften imParameterFenster
3. Wählen desADXIndikators und setzen Sie beliebige Eigenschaften imEigenschaftenFenster 4. Drücken Sie dieOKTaste
5. Nachdem Sie die OK-Taste gedrückt haben, werden Sie im linken unteren Fenster feststellen, dass die Parameter "Eingabeserie" nun auf den ADX(14) eingestellt wurden, der die ADX-Anzeige für 14 Perioden ist.
|
So überprüfen Sie die Volumenausdehnung
Überprüfen auf VolumenerweiterungSie können vergleichen, ob das Volumen des aktuellen Balkens größer ist als das Volumen des vorherigen Balkens plus einem Offsetbetrag.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar.
1. Erweitern derIndikatorKategorie und wählen denVOLIndikator 2. Erweitern derIndikatorKategorie und wählen denVOLIndikator 3. Wählen Sie dengrößer als oder gleich Vergleichsoperator aus 4. Setzen Sie den Parameter Bars ago auf einen Wert von "1" 5. Setzen desOffset TypParameters aufProzent 6. Stellen Sie denOffsetParameter auf einen Wert von "3" - 3 entspricht hier 300% Prozent, d.h. 10% wären 0.1
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Der aktuelle Wert des Volumens ist größer oder gleich dem Wert des Volumens von vor 1 bar + 300%". |
Wie man Marktpositionsvergleiche erstellt
Erstellen von MarktpositionsvergleichenSie können Strategiezustandsinformationen wie z.B. die aktuelle Marktposition oder die aktuelle Positionsgröße vergleichen.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar.
1. Erweitern Sie dieStrategieKategorie und wählenCurrent market position. 2. Erweitern derStrategieKategorie und wählen SieMarktposition 3.Wählen Sie Gleichheit zu dem Vergleichoperator aus 4. Wählen Sie dieFlat Marktposition von dem Dropdownmenü unter Misc
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Die aktuelle Marktposition entspricht Flat" |
So erstellen Sie Zeitvergleiche
Zeitvergleiche erstellenSie können die Zeitdaten eines Balkens mit einem benutzerdefinierten Zeit- oder Datumswert vergleichen.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar.
Hinweis: Zeitreihen stellen eine Sammlung von Balken Datum / Zeitwerten einer Balkenreihe dar
1. Erweitern derZeitKategorie und wählen SieTime series 2. Erweitern derZeitKategorie und wählen SieTime series 3. Wählen Sie dengrößer als oder gleich Vergleichsoperator aus 4. Setzen Sie den Zeitparameter auf einen benutzerdefinierten Wert von "10:00"
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Die aktuelle Balkenzeit ist größer oder gleich 10:00 Uhr." |
Wie man eine Bedingung negiert
Negieren einer BedingungSie können eine Bedingung auch negieren, so dass Sie z.B. einen bestimmten Filter oder eine bestimmte technische Indikatoreinstellung umgekehrt haben und als falsch bewerten können.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen dar.
1. Erweitern derMiscKategorie und wählen SieCross above 2. Klicken Sie auf das EingabefeldSerie 1 und wählen Sie denDEMA-Indikator als Serie für den zu verwendenden Quervergleich 3. Erweitern Sie die Kategorie Misc und wählen Sie die Option False 4. Wählen Sie den Vergleichsoperator aus
Nach dem Drücken der OK-Taste wird eine Bedingung erstellt, die sich wie folgt auswirken würde:
"Der DEMA(14) -Indikator wurde innerhalb der letzten 10 Balken nicht vom Schlusskurs überschritten" |
Erstellen eines ZeitfiltersZeitfilter können ein nützliches Werkzeug Ihrer individuellen Strategie sein, um seine Trades effizienter zu gestalten und eine Möglichkeit zu entwickeln, für verschiedene Teile der Handelssitzung zu testen. Der Condition Group Editor ist ideal geeignet, um diese für Ihre Strategy Builder-Skripte einzurichten.
Das Folgende ist ein Beispiel und stellt eine von vielen möglichen Kombinationen (sowie die folgenden tatsächlichen Zeitfilterzeiten) dar:
1. Drücken Sie das Gruppensymbol auf dem Screen Bedingungen und Aktionen, um den Condition Group Editor zu öffnen
2. Legen Sie optional einen benutzerdefinierten Namen für Ihre Bedingungsgruppe fest, z.B. Zeitfilter. 3. Wählt aus, ob alle Einzelbedingungen in der Gruppe erfüllt sein müssen, um eine "echte" Ergebnisbewertung zu ermöglichen, oder ob eine solche ausreichend ist. 4. Klicken Sie aufhinzufügen, berarbeiten oder entfernen, um eine neue Bedingung in die Gruppe aufzunehmen oder bestehende zu verwalten.
5. Hinzufügen Sie eine neue Bedingung und erweitern Sie die Zeitkategorie und wählen Sie Time Series 6. Erweitern Sie die Kategorie Zeit und wählen Sie Zeitwert 7. Geben Sie unter Misc die gewünschte Zeit für den Start des Zeitfilters ein, z.B. 9:31 Uhr 8. Wählen Sie den größer gleich Vergleichsoperator aus
9. Drücken Sie dann die OK-Taste, um zum Bedingungsgruppeneditor zurückzukehren, in dem Ihre erste Filterbedingung erstellt wurde.
Nach dem Einrichten der zweiten, entgegengesetzten Bedingung sowie der Condition Group für den Zeitfilter könnte es so aussehen:
Drücken Sie jetzt im Bedingungsgruppen-Editor auf OK, um ihn zu verlassen und zum Bildschirm Bedingungen und Aktionen zurückzukehren, um andere Kriterien wie Ihren Handelseintrag und die daraus resultierenden Maßnahmen festzulegen.
Der erstellte Zeitfilter würde übersetzen in:
"Lassen Sie diese Bedingungsgruppe nur dann wahr sein, wenn die Tageszeit größer oder gleich 9:31 Uhr und kleiner oder gleich 11:30 Uhr ist" |