Jetzt beitreten
ProBacktest/probacktest · proorder

POSITIONPERF

POSITIONPERF gibt die prozentuale Performance einer offenen oder geschlossenen Position in ProBacktest und ProOrder zurück. PositionPerf(0) liest den aktuell offenen Trade.

Syntax

probuilder
PositionPerf(N)

Parameter

NameTypStandardBeschreibung
NGanzzahl0Positionsindex. 0 liest die aktuell offene Position. Ein Wert größer als 0 liest die N-letzte geschlossene Position, daher 1 ist der letzte geschlossene Trade.

So funktioniert es

POSITIONPERF misst, wie gut eine einzelne Position abgeschnitten hat, ausgedrückt als Verhältnis ihres Gewinns oder Verlusts zu ihren Kosten. Ein Wert von 0.05 entspricht einem Gewinn von 5 Prozent und -0.02 einem Verlust von 2 Prozent, multiplizieren Sie daher mit 100, wenn für die Anzeige eine Prozentzahl benötigt wird.

Das Index-Argument wählt aus, welche Position ausgewertet wird. Mit N = 0, oder bei weggelassenem Argument, meldet die Funktion die laufende Performance der aktuell offenen Position. Mit N > 0 es läuft rückwärts durch die geschlossenen Trades, PositionPerf(1) ist der jüngste Ausstieg, PositionPerf(2) den davor, und so weiter. Damit ist es der natürliche Baustein für Logik auf Trade-Ebene, etwa Verlustserien oder Performance-Filter.

Die Berechnung erfolgt brutto. Brokergebühren, als Kosten modellierte Spreads und Finanzierungskosten werden nicht abgezogen, daher sind die Netto-Ergebnisse im Live-Handel niedriger als die Rohwerte. Für das kumulierte Geldergebnis der gesamten Strategie verwenden Sie stattdessen STRATEGYPROFIT; POSITIONPERF beschreibt immer nur eine Position zur Zeit.

Beispiele

Beispiel 1, Den letzten geschlossenen Trade auslesen (ProBacktest)

probuilder
// Gain-to-cost ratio of the most recently closed position
positionPerformance = PositionPerf(1)
GRAPH positionPerformance * 100 AS "Last trade performance in percent"

Ruft die Performance des letzten abgeschlossenen Trades ab und stellt sie als Prozentwert dar. Dies ist das Referenzbeispiel aus der Originaldokumentation mit einer ergänzten Anzeigezeile.

Beispiel 2, Notausstieg bei Drawdown des offenen Trades (ProOrder)

probuilder
// Close a long when the open position loses more than 2 percent
IF longonmarket AND positionperf(0) < -0.02 THEN
  SELL AT MARKET
ENDIF

Die offene Position wird Bar für Bar überwacht und aufgegeben, sobald ihre laufende Performance unter -0.02 fällt, ein prozentbasierter Sicherheitsausstieg, der unabhängig von jedem punktbasierten Stop funktioniert.

Beispiel 3, Größe nach zwei Verlusttrades in Folge reduzieren (ProOrder)

probuilder
// Halve exposure after two losing trades in a row
baseSize = 4
IF positionperf(1) < 0 AND positionperf(2) < 0 THEN
  tradeSize = max(1, baseSize / 2)
ELSE
  tradeSize = baseSize
ENDIF

IF NOT onmarket AND close CROSSES OVER average[50](close) THEN
  BUY tradeSize CONTRACTS AT MARKET
ENDIF

Die beiden letzten geschlossenen Trades werden vor jedem Einstieg geprüft. Nach zwei Verlusten in Folge handelt die Strategie mit halber Größe, bis ein Trade positiv schließt.

Häufige Fehler und Stolperfallen

  • Verhältnis, nicht Prozent. Die Funktion gibt ein Verhältnis zurück, sodass ein Gewinn von 3 Prozent als 0.03 erscheint. Ein Vergleich mit ganzen Zahlen wie positionperf(0) > 3 löst fast nie aus. Multiplizieren Sie nur für die Anzeige mit 100.
  • Vor Kosten. Gebühren und Kommissionen sind nicht enthalten, daher kann ein Trade, der leicht positiv erscheint, im Live-Betrieb ein Nettoverlust sein. Schwellen nahe Null sind am stärksten betroffen.
  • Keine Position offen. Ohne Position im Markt ist der Wert bei Index 0 für die Entscheidungslogik bedeutungslos. Sichern Sie Lesezugriffe auf positionperf(0) mit ONMARKET, LONGONMARKET, oder SHORTONMARKET.
  • Gültigkeitsbereich pro Position. POSITIONPERF aggregiert nie. Ergebnisse auf Kontoebene durch eine Schleife über Indexe zu summieren ist fehleranfällig; STRATEGYPROFIT liefert den kumulierten Geldbetrag bereits.
  • STRATEGYPROFIT, kumulierter realisierter Gewinn der Strategie in Geld.
  • POSITIONPRICE, der durchschnittliche Einstiegskurs der offenen Position.
  • TRADEPRICE, der Einstiegskurs einzelner Orders.
  • TRADEINDEX, der Bar-Index, an dem eine Order ausgeführt wurde.
  • COUNTOFPOSITION, die vorzeichenbehaftete Größe der offenen Position.
  • ONMARKET, wahr, solange eine Position offen ist.
  • LONGONMARKET, wahr, solange eine Long-Position offen ist.
  • SELL, schließt eine Long-Position.