Jetzt beitreten
ProBacktest/probacktest · proorder

MARKET

MARKET in ProBacktest und ProOrder führt BUY- und SELL-Orders zum aktuellen Marktpreis aus. Orders werden zur Eröffnung der nächsten Bar ohne Preislimit ausgeführt.

Syntax

probuilder
BUY quantity SHARES AT MARKET
SELL quantity SHARES AT MARKET

So funktioniert es

Jede Orderanweisung endet mit einem Ordertyp. AT MARKET bedeutet, dass die Order keine Kursbedingung trägt: Sie wird zu dem Kurs ausgeführt, den der Markt im Moment der Ausführung bietet. Die Alternativen, LIMIT und STOP, erzeugen stattdessen Pending-Orders, die auf ein bestimmtes Kursniveau warten.

Da Strategiecode einmal pro Bar beim Close ausgeführt wird, wird eine auf einer Bar erzeugte Market-Order übermittelt und zur Eröffnung der folgenden Bar ausgeführt. ProBacktest modelliert dies, indem die Ausführung zum Eröffnungskurs der nächsten Bar erfolgt. Im Live-ProOrder erreicht die Order in diesem Moment den Broker und wird zum besten verfügbaren Preis ausgeführt, der in schnellen oder dünnen Märkten vom Eröffnungskurs abweichen kann.

Eine Market-Order tauscht Sicherheit der Ausführung gegen Unsicherheit des Kurses. Sie passt zu Signalen, bei denen es mehr darauf ankommt, im Trade zu sein, als auf das exakte Niveau, etwa trendfolgende Einstiege oder erzwungene Ausstiege. Wenn das Einstiegsniveau selbst Teil des Edge ist, ist eine schwebende LIMIT oder STOP Order drückt diese Absicht besser aus.

AT MARKET lässt sich mit allen Order-Verben kombinieren: BUY und SELLSHORT um Positionen zu eröffnen, SELL und EXITSHORT um sie zu schließen.

Beispiele

Beispiel 1, Sofortiger Kauf von zehn Aktien (ProBacktest)

probuilder
// enter when price closes above the 50-bar average
IF NOT OnMarket AND close > Average[50](close) THEN
  BUY 10 SHARES AT MARKET
ENDIF

Wenn keine Position offen ist und die Bedingung beim Close der Bar zutrifft, wird eine Order über zehn Aktien gesendet und zur Eröffnung der nächsten Bar zum herrschenden Preis ausgeführt.

Beispiel 2, Erzwungener Ausstieg aus einem Short zum Marktpreis (ProOrder)

probuilder
// cover the short as soon as momentum turns positive
exitSignal = RSI[14](close) crosses under 30

IF ShortOnMarket AND exitSignal THEN
  EXITSHORT AT MARKET
ENDIF

Die gesamte Short-Position wird zum Marktpreis geschlossen. Es ist keine Menge angegeben, daher gilt der Standard und die gesamte Position wird gedeckt.

Beispiel 3, Kreuzen gleitender Durchschnitte in beide Richtungen (ProOrder)

probuilder
fastMA = Average[20](close)
slowMA = Average[50](close)

IF fastMA crosses over slowMA THEN
  IF ShortOnMarket THEN
    EXITSHORT AT MARKET
  ENDIF
  BUY 1 CONTRACT AT MARKET
ENDIF

IF fastMA crosses under slowMA THEN
  IF LongOnMarket THEN
    SELL AT MARKET
  ENDIF
  SELLSHORT 1 CONTRACT AT MARKET
ENDIF

Ein Stop-and-Reverse-System. Jedes Kreuzen schließt eine etwaige entgegengesetzte Position und eröffnet eine neue, alles mit Market-Orders, sodass die Strategie immer mit dem Kreuzen positioniert ist.

Häufige Fehler und Stolperfallen

  • Ausführungen erfolgen zur Eröffnung der nächsten Bar. Die Bedingung wird beim Close der Bar ausgewertet, der Ausführungspreis ist jedoch die Eröffnung der nächsten Bar. Backtest-Rechnungen, die einen Einstieg zum Close der Signalbar annehmen, überzeichnen die Ergebnisse immer dann, wenn Bars gappen.
  • Keine Preisgarantie. Market-Orders garantieren die Ausführung, nicht den Preis. Live-Ausführungen können unter volatilen Bedingungen über den im Backtest angenommenen Eröffnungskurs hinaus abrutschen, sodass sich die Live-Ergebnisse gegenüber ProBacktest verschlechtern, das von sauberen Ausführungen ausgeht.
  • SELL und EXITSHORT sind nicht austauschbar. SELL AT MARKET schließt Long-Positionen und EXITSHORT AT MARKET schließt Shorts. Die Verwendung des falschen Verbs für die offene Seite lässt die Position unberührt.
  • MARKET ist keine eigenständige Anweisung. Das Schlüsselwort existiert nur als Teil einer Order-Anweisung nach AT. Schreiben MARKET in einer eigenen Zeile lässt sich nicht kompilieren.
  • 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.
  • ONMARKET, wahr, solange eine Position offen ist.
  • LONGONMARKET, wahr, solange eine Long-Position offen ist.
  • SHORTONMARKET, wahr, solange eine Short-Position offen ist.