Bli medlem idag
ProBacktest/probacktest · proorder

POSITIONPERF

POSITIONPERF returnerar den procentuella utvecklingen för en öppen eller stängd position i ProBacktest och ProOrder. PositionPerf(0) läser den aktuella öppna affären.

Syntax

probuilder
PositionPerf(N)

Parametrar

NamnTypStandardBeskrivning
Nheltal0Positionsindex. 0 läser den för tillfället öppna positionen. Ett värde större än 0 läser den N:te senast stängda positionen, så 1 är den senast stängda affären.

Så fungerar det

POSITIONPERF mäter hur väl en enskild position presterade, uttryckt som förhållandet mellan dess vinst eller förlust och dess kostnad. Ett värde på 0.05 motsvarar en vinst på 5 procent och -0.02 en förlust på 2 procent, så multiplicera med 100 när en procentsiffra behövs för visning.

Indexargumentet väljer vilken position som ska utvärderas. Med N = 0, eller med argumentet utelämnat, rapporterar funktionen den löpande utvecklingen för den position som är öppen. Med N > 0 den går bakåt genom stängda affärer, PositionPerf(1) som är den senaste exiten, PositionPerf(2) den före den, och så vidare. Det gör den till den naturliga byggstenen för logik affär för affär, som förlustserier eller prestationsfilter.

Beräkningen är brutto. Courtageavgifter, spread som modelleras som kostnader och finansiering dras inte av, så verkliga nettoresultat är lägre än de råa värdena. För hela strategins ackumulerade kontantresultat, använd STRATEGYPROFIT i stället; POSITIONPERF beskriver alltid en position i taget.

Exempel

Exempel 1, läsa den senast stängda affären (ProBacktest)

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

Hämtar utvecklingen för den senast avslutade affären och ritar den som en procentsats. Detta är referensexemplet från källdokumentationen med en visningsrad tillagd.

Exempel 2, nödexit vid drawdown på öppen affär (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

Den öppna positionen övervakas bar för bar och överges så snart dess löpande utveckling faller under -0.02, en procentbaserad säkerhetsexit som fungerar oberoende av varje punktbaserad stop.

Exempel 3, minska storleken efter två förluster i följd (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

De två senast stängda affärerna granskas före varje entry. Efter två förluster i rad handlar strategin med halv storlek till dess att en affär stängs positivt.

Vanliga fel och fallgropar

  • Kvot, inte procent. Funktionen returnerar ett förhållande, så en uppgång på 3 procent läses som 0.03. Jämförelse mot heltal som positionperf(0) > 3 utlöses nästan aldrig. Multiplicera med 100 endast för visning.
  • Brutto före kostnader. Avgifter och courtage är exkluderade, så en affär som ser något positiv ut kan vara en nettoförlust live. Trösklar nära noll påverkas mest.
  • Ingen öppen position. Utan något på marknaden är avläsningen vid index 0 meningslös för beslutslogik. Skydda läsningar av positionperf(0) med ONMARKET, LONGONMARKET, eller SHORTONMARKET.
  • Omfattning per position. POSITIONPERF aggregerar aldrig. Att summera resultat på kontonivå genom att loopa över index är bräckligt; STRATEGYPROFIT ger redan den kumulativa kontantsiffran.
  • STRATEGYPROFIT, strategins kumulativa realiserade vinst i pengar.
  • POSITIONPRICE, det genomsnittliga entrypriset för den öppna positionen.
  • TRADEPRICE, entrypriset för enskilda ordrar.
  • TRADEINDEX, barindexet där en order exekverades.
  • COUNTOFPOSITION, storleken på den öppna positionen med tecken.
  • ONMARKET, sant så länge någon position är öppen.
  • LONGONMARKET, sant så länge en long-position är öppen.
  • SELL, stänger en long-position.