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
myCurrentProfit = STRATEGYPROFITSlik 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)
DEFPARAM CumulateOrders = true // allow accumulated positions
myCurrentProfit = STRATEGYPROFIT
IF myCurrentProfit > 1000 THEN
SELL 100 SHARES AT MARKET
ENDIFNå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)
// Stop the system permanently after 500 units of realized loss
IF STRATEGYPROFIT < -500 THEN
SELL AT MARKET
EXITSHORT AT MARKET
QUIT
ENDIFEn 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)
// 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
ENDIFGRAPH 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.
STRATEGYPROFITendrer seg bare når en handel lukkes. En strategi som sjekker den mens en stor posisjon er åpen, ser utdatert informasjon. Kombiner medPOSITIONPERFnår gjeldende handel er relevant. - Penger, ikke punkter. Verdien er angitt i kontovalutaen, så terskler som
> 1000betyr 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 STRATEGYPROFITvirker i ProBacktest, men ignoreres i live ProOrder-utførelse, så diagnostiske plott forsvinner så snart systemet handler live.
Relaterte instruksjoner
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å.