NOCASHUPDATE
NOCASHUPDATE er en DEFPARAM-innstilling i ProBacktest som holder startkapitalen konstant under en backtest, og fjerner akkumulerende effekter fra strategiresultatene.
Syntaks
DEFPARAM NOCASHUPDATE = trueParametere
| Navn | Type | Standard | Beskrivelse |
|---|---|---|---|
NOCASHUPDATE | boolsk | false | Når true, justeres ikke startkapitalen av realiserte gevinster og tap under backtesten. Når false, oppdateres kapitalen for hver lukkede handel. |
Slik fungerer det
Som standard holder en backtest et løpende kapitaltall: hver lukket handel legger til sin gevinst eller trekker fra sitt tap, og det oppdaterte beløpet begrenser hva strategien kan ha råd til neste gang. Over en lang simulering skaper dette en akkumulerende effekt. En lønnsom strategi akkumulerer kapital som støtter større eller hyppigere posisjoner, og en tapende strategi kan gå tom for kontanter og slutte å handle.
Å sette NOCASHUPDATE til true fryser kapitalen på startverdien for hele simuleringen. Handler gir fortsatt gevinst og tap, og equity-kurven registrerer dem fortsatt, men den tilgjengelige kontantbeholdningen motoren bruker, flytter seg aldri. Hver handel tas mot samme kapitalbase, både den første og den siste handelen.
Innstillingen isolerer den rene kvaliteten på handelslogikken fra kontoens utvikling. To signalsett kan sammenlignes på like vilkår, uten at tidlige tap i den ene kjøringen sulter den for kapital eller tidlige gevinster blåser den opp. Den hindrer også en teknisk solid strategi fra å stoppe midt i en backtest fordi en drawdown midlertidig brukte opp de simulerte kontantene.
Instruksjonen er en DEFPARAM, så den må stå øverst i koden før enhver kjørbar setning.
Eksempler
Eksempel 1, Backtest med fast kapital (ProBacktest)
DEFPARAM NOCASHUPDATE = true
// capital stays at its initial value for the entire simulation
IF NOT OnMarket AND close crosses over Average[50](close) THEN
BUY 1 CONTRACT AT MARKET
SET STOP PLOSS 40
ENDIF
IF LongOnMarket AND close crosses under Average[50](close) THEN
SELL AT MARKET
ENDIFEt enkelt trendfølgende system evaluert på et konstant kapitalgrunnlag. Den rapporterte gevinsten gjenspeiler kun signalene, ikke den akkumulerende effekten av tidligere resultater.
Eksempel 2, Å overleve en dyp drawdown (ProBacktest)
DEFPARAM NOCASHUPDATE = true
// mean-reversion entries continue even after a losing streak,
// because losses never reduce the available cash
IF NOT OnMarket AND RSI[14](close) < 25 THEN
BUY 2 CONTRACTS AT MARKET
SET STOP PLOSS 60
SET TARGET PPROFIT 80
ENDIFMed standardinnstillingen kan en lang taperekke tømme den simulerte kapitalen og stoppe backtesten tidlig uten varsel. Å holde kontantene konstant beholder hvert signal i utvalget.
Eksempel 3, Sammenligning av rå ytelse på tvers av markeder (ProOrder)
DEFPARAM NOCASHUPDATE = true
DEFPARAM CumulateOrders = false
long = ExponentialAverage[20](close) crosses over ExponentialAverage[50](close)
IF NOT OnMarket AND long THEN
BUY 1 CONTRACT AT MARKET
SET STOP PLOSS 50
ENDIFÅ kjøre det samme systemet med fast størrelse på flere instrumenter med konstant kapital gjør resultatene per marked direkte sammenlignbare, siden ingen markeds equity-bane virker tilbake på posisjonstakingen.
Vanlige feil og fallgruver
- Standardverdien er
false. Å utelate setningen betyr at kapitalen oppdateres handel for handel. En strategi som ser ut til å slutte å handle underveis i en backtest kan rett og slett ha brukt opp de simulerte kontantene under standardoppførselen. - Equity-målene beveger seg fortsatt. Innstillingen fryser kontantbeholdningen som er tilgjengelig for motoren, ikke profittstatistikken. Gevinster og tap vises fortsatt i equity-kurven og i
STRATEGYPROFIT, bare kapitalgrunnlaget slutter å reagere på dem. DEFPARAMplassering. Som hverDEFPARAM, må setningen komme før den første kjørbare linjen i koden, ellers mislykkes kompileringen.- Ingen effekt på reelle penger. På en live ProOrder-konto gjenspeiler den faktiske kontantbeholdningen alltid de reelle resultatene. Parameteren former backtest-simuleringen, den er ikke en risikokontroll i live handel.
Relaterte instruksjoner
DEFPARAM, deklarerer utførelsesparametere på strateginivå.CASH, posisjonsstørrelse basert på et kontantbeløp.STRATEGYPROFIT, løpende gevinst for strategien i valuta.CumulateOrders, tillater at flere ordrer akkumuleres til én posisjon.PRELOADBARS, antall historiske barer som lastes inn før backtesten starter.FLATBEFORE, blokkerer posisjonstaking før et fastsatt tidspunkt.FLATAFTER, tvinger strategien flat etter et fastsatt tidspunkt.MAXORDER, maksimal størrelse tillatt for en enkelt ordre.