Jetzt beitreten
Befehle/probuilder · probacktest · proorder · proscreener

CROSSES OVER

CROSSES OVER in ProBuilder gibt auf dem Bar wahr zurück, auf dem eine Reihe von unterhalb nach oberhalb einer anderen wechselt, der Standardauslöser für bullische Crossover-Signale.

Syntax

probuilder
a CROSSES OVER b

Parameter

NameTypStandardBeschreibung
anumerische ReiheerforderlichDie Reihe, die auf eine Kreuzung nach oben geprüft wird.
bnumerische Reihe oder KonstanteerforderlichDie Serie oder das feste Niveau, das a muss nach oben kreuzen.

Formel

a CROSSES OVER b ist wahr, wenn beide Bedingungen auf demselben Bar gelten:

Code
a[1] <= b[1]  and  a > b

Auf dem vorherigen Bar a lag auf oder unter b, und auf dem aktuellen Bar a liegt strikt über b.

So funktioniert es

CROSSES OVER vergleicht zwei Werte über aufeinanderfolgende Bars und gibt einen Booleschen Wert zurück. Es löst nur auf dem einen Bar aus, auf dem die Beziehung von unten nach oben kippt. Auf jedem folgenden Bar, auf dem a bleibt einfach über b, ist der Ausdruck false. Das macht ihn zu einem Ereignisdetektor und nicht zu einem Zustandstest, was der entscheidende Unterschied dazu ist, zu schreiben a > b.

Beide Operanden können ein beliebiger numerischer Ausdruck sein: ein Indikatoraufruf, eine Kurskonstante wie close, eine Benutzervariable oder eine feste Zahl. Das Kreuzen eines konstanten Niveaus ist häufig, zum Beispiel RSI[14](close) CROSSES OVER 50.

Da der Test den aktuellen Bar einbezieht, kann ein auf einem laufenden, nicht abgeschlossenen Bar ausgewertetes Signal erscheinen und wieder verschwinden, während sich die Kurse bewegen. Strategien, die nur auf bestätigte Signale reagieren dürfen, testen typischerweise verschobene Werte, etwa a[1] CROSSES OVER b[1], sodass die Kreuzung an abgeschlossenen Bars gemessen wird.

Beispiele

Beispiel 1, EMA-Crossover-Signal (Indikator)

probuilder
a = ExponentialAverage[20](close)
b = ExponentialAverage[50](close)
signal = 0
// Test the crossing on completed bars to avoid repainting
IF a[1] CROSSES OVER b[1] THEN
  signal = 1
ELSE
  signal = 0
ENDIF
RETURN signal AS "Bullish Signal"

Der Indikator stellt 1 auf dem Bar dar, nachdem eine 20-Perioden-EMA über eine 50-Perioden-EMA gekreuzt ist, und überall sonst 0. Die Verschiebung beider Operanden um einen Bar bedeutet, dass das Signal ausschließlich auf abgeschlossenen Daten beruht.

Beispiel 2, Long-Einstieg bei einem Kreuzen der gleitenden Durchschnitte (ProOrder)

probuilder
fast = Average[20](close)
slow = Average[50](close)
// Open a long position on the upward cross
IF fast CROSSES OVER slow AND NOT LONGONMARKET THEN
  BUY 1 CONTRACT AT MARKET
ENDIF
SET STOP PLOSS 50

Die Strategie kauft einen Kontrakt auf dem Bar, auf dem der schnelle Durchschnitt über den langsamen kreuzt, sofern noch keine Long-Position offen ist, und hängt einen Stop von 50 Punkten an.

Beispiel 3, RSI verlässt den überverkauften Bereich (ProScreener)

probuilder
myRSI = RSI[14](close)
// Match instruments where RSI has just crossed above 30
cond = myRSI CROSSES OVER 30
SCREENER[cond] (myRSI AS "RSI value")

Der Screener listet Instrumente auf, deren 14-Perioden-RSI im aktuellen Bar über das Niveau 30 gekreuzt ist, und zeigt den RSI-Wert in der Ergebnisspalte.

Häufige Fehler und Stolperfallen

  • Verwechslung einer Kreuzung mit einem Zustand. a CROSSES OVER b ist für genau einen Bar wahr. Code, der erwartet, dass es wahr bleibt, während a bleibt über b sollte verwenden a > b stattdessen.
  • Neuzeichnen auf dem laufenden Bar. Auf dem sich bildenden Bar ausgewertet, kann die Bedingung umschalten, während Ticks eintreffen. Das Testen von a[1] CROSSES OVER b[1] bestätigt die Kreuzung auf geschlossenen Bars zum Preis eines Bars Verzögerung.
  • Berührung ohne Kreuzung. Wenn a steigt auf genau den Wert von b und dann zurückfällt, wird kein Crossover ausgelöst, da der Wert der aktuellen Bar strikt größer sein muss. Signale, die Berührungen einschließen sollen, brauchen einen expliziten Vergleich.
  • Flache Reihen kreuzen sich nie. Wenn beide Operanden identisch sind oder sich im Gleichschritt bewegen, zum Beispiel derselbe Durchschnitt auf dieselbe Eingabe angewendet, gibt der Ausdruck nie wahr zurück. Stellen Sie sicher, dass die beiden Reihen wirklich unterschiedlich sind.
  • CROSSES UNDER, der Spiegeloperator für Kreuzungen nach unten.
  • IF, Bedingungsblock, der üblicherweise einen Kreuzungstest umschließt.
  • THEN, erforderlich zwischen der Bedingung und dem Blockinhalt.
  • ExponentialAverage, EMA-Reihe, die häufig in Crossover-Systemen verwendet wird.
  • Average, einfacher gleitender Durchschnitt, eine weitere häufige Eingabe für Kreuzungen.
  • AND, kombiniert ein Crossover mit zusätzlichen Filtern.
  • OR, akzeptiert eine von mehreren Crossover-Bedingungen.
  • BarsSince, zählt die Bars, die seit dem Zutreffen einer Bedingung wie einer Kreuzung vergangen sind.