NextBarOpen
NextBarOpen ist ein veralteter ProBacktest- und ProOrder-Modifikator, der Orders auf die Eröffnung des nächsten Bars verzögerte, was heute das Standardverhalten jeder Market-Order ist.
Syntax
AT MARKET NextBarOpenSo funktioniert es
In frühen Versionen der Plattform NextBarOpen wurde an eine Market-Order angehängt, um ausdrücklich festzulegen, dass die Order zum Eröffnungskurs des folgenden Bars und nicht zum aktuellen Kurs ausgeführt werden soll. Die Absicht war, realistische Ausführung zu modellieren: Ein auf einem fertigen Bar berechnetes Signal kann erst gehandelt werden, wenn der nächste Bar beginnt.
Dieses Ausführungsmodell wurde später zum einzigen. Strategiecode wird einmal pro Bar ausgewertet, am Close, und jede während dieser Auswertung erzeugte Market-Order wird unmittelbar danach übertragen und am Open des nächsten Bars ausgeführt. Das Verhalten NextBarOpen angefordert wurde, ist jetzt der bedingungslose Standard, was den Modifikator überflüssig macht.
Die offizielle Position lautet, dass der Befehl nicht mehr gültig ist und keinen Zweck erfüllt. Bestehender Code, der den Modifikator enthält, dokumentiert eine Absicht, die die Engine bereits garantiert, und neuer Code sollte ihn niemals enthalten. Wenn das Schlüsselwort in älteren Strategien aus Archiven oder Foren auftaucht, kann es gelöscht werden, ohne das Verhalten der Strategie unter dem aktuellen Ausführungsmodell zu ändern.
NextBarOpen sollte nicht verwechselt werden mit TomorrowOpen, der ein eigener Befehl im Zusammenhang mit dem Order-Timing auf Tagesbars ist und ein separates Schlüsselwort bleibt.
Beispiele
Beispiel 1, Alter Einstieg mit dem Modifikator (ProBacktest)
// legacy code: NextBarOpen is redundant under the current engine
IF NOT ONMARKET THEN
BUY 2 CONTRACTS AT MARKET NextBarOpen
ENDIFDie Order wird mit oder ohne Modifikator bei der Eröffnung des nächsten Bars ausgeführt. Dies ist die Form, die in älteren veröffentlichten Strategien zu finden ist.
Beispiel 2, Alter short-Einstieg (ProOrder)
short = close < Average[100](close)
// older strategies attached NextBarOpen to short entries as well
IF NOT ShortOnMarket AND short THEN
SELLSHORT 1 CONTRACT AT MARKET NextBarOpen
ENDIFDasselbe Muster auf der short-Seite. Das Entfernen des nachgestellten Schlüsselworts lässt die Ausführung unverändert, der short wird in beiden Fällen zum Eröffnungskurs des nächsten Bars eröffnet.
Beispiel 3, Migration alten Codes (ProBacktest)
// before: BUY 2 CONTRACTS AT MARKET NextBarOpen
// after, same behavior:
IF NOT ONMARKET THEN
BUY 2 CONTRACTS AT MARKET
ENDIFDie modernisierte Form. Das Löschen NextBarOpen aus einer alten Strategie ist eine reine Aufräumarbeit, ein Ausgleich an anderer Stelle im Code ist nicht nötig.
Häufige Fehler und Stolperfallen
- Erwartung eines zeitlichen Unterschieds. Das Hinzufügen oder Entfernen
NextBarOpenändert nichts. Alle am Bar-Schluss erzeugten Market-Orders werden zur nächsten Bar-Eröffnung ausgeführt. Code-Vergleiche, die dem Modifikator unterschiedliche Ergebnisse zuschreiben, betrachten die falsche Variable. - Möglicherweise Ablehnung durch aktuelle Compiler. Der Befehl ist als nicht mehr gültig dokumentiert. Je nach Plattformversion kann Code, der ihn enthält, nicht kompilieren, daher besteht die sichere Migration darin, das Schlüsselwort zu löschen und nicht aus Nostalgie zu behalten.
- Verwechslung mit
TomorrowOpen. Die Namen wirken verwandt, doch die Befehle sind nicht austauschbar.TomorrowOpenbetrifft die Orderplatzierung auf Tagesbars und ist weiterhin ein gültiges Schlüsselwort,NextBarOpenist ein toter Modifikator. - Annahme, dass eine Ausführung im selben Bar existiert. Das Entfernen des Modifikators ermöglicht keine Ausführungen im selben Bar. Es gibt keinen Ordertyp, der am Schluss des Signal-Bars ausgeführt wird, das Modell der Eröffnung des nächsten Bars ist der Engine inhärent.
Verwandte Befehle
TomorrowOpen, Befehl zur Order-Zeitsteuerung für Tagesbars.MARKET, sofortige Ausführung zum aktuellen Marktkurs.BUY, eröffnet eine Long-Position oder baut sie aus.SELL, schließt eine Long-Position ganz oder teilweise.SELLSHORT, eröffnet eine Short-Position oder baut sie aus.EXITSHORT, schließt eine Short-Position ganz oder teilweise.LIMIT, ausstehende Order, die zu einem festgelegten Kurs oder besser ausgeführt wird.STOP, ausstehende Order, die auslöst, sobald der Kurs ein Niveau erreicht.