Bli medlem i dag
ProBacktest/probacktest · proorder

STRATEGYPROFIT

STRATEGYPROFIT returnerer den kumulative gevinsten eller tapet, i penger, for hver lukkede handel i en ProBacktest- eller ProOrder-strategi. Åpne posisjoner er utelatt.

Syntaks

probuilder
myCurrentProfit = STRATEGYPROFIT

Slik fungerer det

Hver gang strategien lukker en handel, legges det realiserte resultatet av den handelen til en løpende sum. STRATEGYPROFIT eksponerer den totalen på hver bar, uttrykt i penger i stedet for i punkter eller prosent. En verdi på 0 på de første barene betyr bare at ingen handel er lukket ennå.

Bare lukkede handler bidrar. En posisjon som fortsatt er åpen, uansett hvor mye i gevinst, endrer ikke verdien før den avsluttes. For å lese den urealiserte avkastningen til gjeldende posisjon, bruk POSITIONPERF i stedet. De to utfyller hverandre: STRATEGYPROFIT beskriver fortiden, POSITIONPERF beskriver nåtiden.

Variabelen brukes ofte til equity-avhengig logikk, for eksempel å stanse systemet etter en drawdown-terskel, redusere størrelsen etter en taperekke, eller låse en sesjon når et gevinstmål er nådd. Når posisjoner akkumuleres over flere barer, sett DEFPARAM CumulateOrders = true slik at motoren holder den kombinerte posisjonen åpen og realiserer gevinst slik logikken forventer.

Eksempler

Eksempel 1, Nedskalering når en profittgrense er nådd (ProBacktest)

probuilder
DEFPARAM CumulateOrders = true  // allow accumulated positions

myCurrentProfit = STRATEGYPROFIT
IF myCurrentProfit > 1000 THEN
  SELL 100 SHARES AT MARKET
ENDIF

Når den realiserte gevinsten fra alle lukkede handler overstiger 1000 valutaenheter, selger strategien 100 aksjer til markedspris. Dette er det kanoniske bruksmønsteret fra den offisielle referansen.

Eksempel 2, Equity-stopp som stanser strategien (ProOrder)

probuilder
// Stop the system permanently after 500 units of realized loss
IF STRATEGYPROFIT < -500 THEN
  SELL AT MARKET
  EXITSHORT AT MARKET
  QUIT
ENDIF

En vakt for kapitalbevaring. Når det realiserte tapet overskrider grensen, lukkes enhver åpen posisjon, og QUIT hindrer strategien fra å legge inn flere ordrer.

Eksempel 3, Plotte den realiserte equity-kurven (ProBacktest)

probuilder
// Inspect the realized equity curve while backtesting
GRAPH STRATEGYPROFIT AS "Realized PnL"

IF NOT onmarket AND close > average[50](close) THEN
  BUY 1 CONTRACT AT MARKET
  SET STOP LOSS 30
  SET TARGET PROFIT 60
ENDIF

GRAPH tegner den løpende realiserte profitten under backtest-diagrammet, noe som gjør det enkelt å se når strategien tjente eller ga tilbake penger.

Vanlige feil og fallgruver

  • Åpne posisjoner er usynlige. STRATEGYPROFIT endrer seg bare når en handel lukkes. En strategi som sjekker den mens en stor posisjon er åpen, ser utdatert informasjon. Kombiner med POSITIONPERF når gjeldende handel er relevant.
  • Penger, ikke punkter. Verdien er angitt i kontovalutaen, så terskler som > 1000 betyr 1000 valutaenheter, ikke 1000 poeng. Samme terskel oppfører seg svært ulikt på instrumenter med forskjellige poengverdier.
  • Verdier i backtest og live er forskjellige. I en live ProOrder-kjøring starter totalen på null når strategien startes, den arver ikke backtest-historikken. Equity-baserte regler oppfører seg derfor annerledes rett etter utrulling.
  • GRAPH is backtest only. GRAPH STRATEGYPROFIT virker i ProBacktest, men ignoreres i live ProOrder-utførelse, så diagnostiske plott forsvinner så snart systemet handler live.
  • POSITIONPERF, urealisert avkastning for posisjonen som er åpen nå.
  • PROFIT, prosentbasert take profit-konfigurasjon for en posisjon.
  • LOSS, prosentbasert stop loss-konfigurasjon for en posisjon.
  • CumulateOrders, DEFPARAM som styrer om ordrer akkumuleres i én posisjon.
  • GRAPH, plotter en verdi under backtest-diagrammet for inspeksjon.
  • ONMARKET, sann så lenge en posisjon er åpen.
  • TRADEPRICE, inngangsprisen for gjeldende posisjon.
  • COUNTOFPOSITION, størrelsen på posisjonen som er åpen nå.