Jetzt beitreten
ProBacktest/probacktest · proorder

TRADEPRICE

TRADEPRICE gibt in ProBacktest und ProOrder den Ausführungspreis eines vergangenen Trades zurück. TRADEPRICE(1) ist der jüngste. Syntax, Beispiele und Stolperfallen werden behandelt.

Syntax

probuilder
TRADEPRICE
probuilder
TRADEPRICE(N)

Parameter

NameTypStandardBeschreibung
NGanzzahl1Index der Order, rückwärts von der letzten Ausführung gezählt. TRADEPRICE(1) ist der letzte Auftrag, TRADEPRICE(2) das vorhergehende.

So funktioniert es

Jede ausgeführte Order einer Strategie, Einstiege wie Ausstiege, wird mit ihrem Ausführungskurs aufgezeichnet. TRADEPRICE liest diese Historie: ohne Argument oder mit N = 1 gibt es den letzten Ausführungspreis zurück, und höhere Werte von N Schritt weiter zurück.

Am häufigsten wird damit gemessen, wie weit sich der Kurs seit dem Einstieg bewegt hat, zum Beispiel close - tradeprice >= 15 * pointsize als Auslöser, um einen Stop nachzuziehen. In Pyramiding-Strategien unter CumulateOrders, TRADEPRICE(1) markiert die letzte Aufstockung, sodass neue Einstiege mit einem Mindestabstand dazu platziert werden können. TRADEINDEX ist die zugehörige Funktion, die den Bar-Index derselben Order liefert.

TRADEPRICE indiziert einzelne Orders, nicht die Gesamtposition. Wenn mehrere Einstiege zu einer Position kumuliert wurden, behält jeder seinen eigenen Trade-Preis, während POSITIONPRICE den gewichteten Durchschnittspreis der offenen Position zurückgibt.

Beispiele

Beispiel 1, Pyramidisieren mit Abstand und Bar-Abstand (ProBacktest)

probuilder
myMACD = MACD[12,26,9](close)
long = myMACD crosses over 0
exit = myMACD crosses under 0

// Initial entry on the MACD signal
IF NOT LongOnMarket AND long THEN
    BUY 1 CONTRACTS AT MARKET
ENDIF

If LongOnMarket AND exit THEN
    SELL AT MARKET
ENDIF

// Add a contract once price is 10 points above the last fill
// and at least 5 bars have passed since it
IF BARINDEX - TRADEINDEX(1) > 5 AND Close - TRADEPRICE(1) > 10 AND LongOnMarket THEN
    BUY 1 CONTRACTS AT MARKET
ENDIF

// Trail the whole position
SET STOP %TRAILING 1.5

TRADEPRICE(1) und TRADEINDEX(1) staffeln die Nachkauf-Einstiege nach Kurs und nach Zeit. Dies ist das Beispiel aus der offiziellen Referenz.

Beispiel 2, Anhebung auf Breakeven gemessen ab dem Einstieg (ProOrder)

probuilder
// Move the stop to entry after 20 points of open profit
IF longonmarket THEN
  IF close - tradeprice >= 20 * pointsize THEN
    SET STOP BREAKEVEN
  ENDIF
ENDIF

Die argumentfreie Form bezieht sich auf die jüngste Ausführung, hier den Long-Einstieg, sodass der Vergleich den offenen Gewinn in Punkten ab dem Ausführungspreis misst.

Beispiel 3, Prozentbasierter Notausstieg ab der letzten Ausführung (ProOrder)

probuilder
// Close the long if price drops 2 percent below the last entry
IF longonmarket AND close < TRADEPRICE(1) * 0.98 THEN
  SELL AT MARKET
ENDIF

Den Ausstieg als Prozentsatz des erfassten Einstiegspreises auszudrücken, hält die Regel über Instrumente mit unterschiedlichen Punktwerten hinweg übertragbar.

Häufige Fehler und Stolperfallen

  • Orders, nicht Positionen. N zählt einzelne Ausführungen, einschließlich Ausstiege. Nachdem eine Position geschlossen wird, TRADEPRICE(1) bezieht sich auf die Ausführung des Ausstiegs, nicht auf den alten Einstieg. Für den Durchschnittskurs der aktuell offenen Position verwenden Sie POSITIONPRICE.
  • Ungeschützte Aufrufe vor jedem Trade. Früh in einem Backtest, vor der ersten Ausführung, gibt es keine Trade-Historie zum Auslesen. Schließen Sie TRADEPRICE-Logik in eine ONMARKET- oder LONGONMARKET-Absicherung ein, damit sie nur mit einer bestehenden Position dahinter läuft.
  • Kumulierte Einstiege weichen vom Durchschnitt ab. Unter CumulateOrders, close - tradeprice misst den Abstand zur letzten Aufstockung, während der Gewinn vom Positionsdurchschnitt bestimmt wird. Eine Vermischung der beiden erzeugt Stops, die engere oder weitere Abstände haben als beabsichtigt.
  • Backtest-Ausführungen gegenüber Live-Ausführungen. ProBacktest erfasst idealisierte Ausführungspreise. Live-Ausführungen in ProOrder enthalten Slippage, sodass auf den Tick kalibrierte Abstandsschwellen im Produktivbetrieb anders wirken können.
  • TRADEINDEX, der Bar-Index eines vergangenen Trades, gleiche Indizierung wie TRADEPRICE.
  • POSITIONPRICE, der gewichtete Durchschnittspreis der offenen Position.
  • POSITIONPERF, die Performance der offenen Position.
  • LONGONMARKET, wahr, solange eine Long-Position offen ist.
  • ONMARKET, wahr, solange eine Position offen ist.
  • BREAKEVEN, verschiebt den Stop oder das Ziel auf den Einstiegskurs.
  • %TRAILING, Trailing Stop in Prozent.
  • CumulateOrders, erlaubt es, mehrere Einstiege zu einer Position zu stapeln.