cumsum
cumsum i ProBuilder returnerer den kumulative summen av en verdi fra den første innlastede baren til gjeldende bar, nyttig for løpende summer og egendefinerte gjennomsnitt.
Syntaks
cumsum(price)Parametere
| Navn | Type | Standard | Beskrivelse |
|---|---|---|---|
| pris | numerisk uttrykk | påkrevd | Verdien som akkumuleres på hver bar, for eksempel close, volume, eller hvilken som helst beregning. |
Formel
For bar t, med x det akkumulerte uttrykket og bar 0 den første innlastede baren:
cumsum(x) = x(0) + x(1) + ... + x(t)Slik fungerer det
cumsum legger til verdien av argumentet sitt på hver bar, fra den eldste baren som er tilgjengelig i den innlastede historikken, og returnerer summen til og med gjeldende bar. Resultatet er en serie som bare kan vokse når argumentet er positivt, krympe når det er negativt, og som endrer seg med argumentets verdi på hver nye bar.
Akkumuleringsvinduet er hele den innlastede historikken, ikke et fast tilbakeblikk. Det har en praktisk konsekvens: verdien avhenger av hvor mange barer diagrammet eller backtesten har lastet inn. Samme skript på samme instrument returnerer andre cumsum-verdier med 5,000 barer historikk enn med 500. For en rullerende sum over de siste N barene, Summation[N] er det riktige verktøyet.
Argumentet behøver ikke å være en rå kurs. Alle uttrykk fungerer, inkludert sammenligninger, som evalueres til 1 eller 0. Det gjør cumsum til en kompakt måte å telle hvor mange ganger en betingelse har vært sann siden starten av dataene.
Eksempler
Eksempel 1, Løpende sum av sluttkurser (Indikator)
// Accumulate every close from the first loaded bar onward
cumulativeClose = cumsum(close)
RETURN cumulativeClose AS "cumulative close"Hver bar legger lukkekursen sin til summen, og gir en monotont stigende kurve for alle instrumenter med positive priser.
Eksempel 2, Volumvektet gjennomsnitt over hele historikken (Indikator)
// Divide cumulative price-volume by cumulative volume
vwap = cumsum(TypicalPrice * Volume) / cumsum(Volume)
RETURN vwap AS "history-wide VWAP"To kumulative summer kombineres til et volumvektet gjennomsnitt av den typiske kursen over alle innlastede barer, en variant av VWAP-beregningen for hele historikken.
Eksempel 3, Trading rundt langtidsgjennomsnittet (ProBacktest)
// Average of every loaded close: cumulative sum divided by bar count
longRunMean = cumsum(close) / (BarIndex + 1)
IF close CROSSES OVER longRunMean AND NOT ONMARKET THEN
BUY 1 CONTRACT AT MARKET
ELSIF close CROSSES UNDER longRunMean AND LONGONMARKET THEN
SELL AT MARKET
ENDIFcumsum(close) delt på antall forløpte barer gir gjennomsnittet av alle innlastede sluttkurser. Strategien går long når kursen krysser over dette gjennomsnittet, og går ut ved kryssing tilbake under.
Vanlige feil og fallgruver
- Historikkavhengige verdier. Summen starter på den første innlastede baren, så en endring i mengden forhåndslastede data endrer hver cumsum-verdi. Resultater er ikke sammenlignbare på tvers av ulike historikkdybder.
- Forventer en sum over et vindu. cumsum har ingen periodeparameter.
cumsum(close) - cumsum(close)[10]ellerSummation[10](close)kreves for en rullerende sum over 10 barer. - Ubegrenset vekst. Å akkumulere en strengt positiv serie gir en verdi som vokser uten grense. Å skalere den, for eksempel med antall barer eller med en annen kumulativ sum, er vanligvis nødvendig før plotting eller sammenligning.
- Nullstilles ved brudd i dataene. Den løpende summen starter på nytt hvis dataserien lastes inn igjen eller avbrytes, så man bør ikke gå ut fra at lagrede verdier overlever en nullstilling av diagrammet.
Relaterte instruksjoner
Summation, summen av en serie over et fast antall barer.Average, aritmetisk gjennomsnitt over en fast periode.BarIndex, antall barer som har gått siden starten på de innlastede dataene.Volume, omsatt volum per bar, et vanlig argument til cumsum.OBV, innebygd indikator basert på kumulativt fortegnet volum.ONCE, initialiserer en variabel én gang, nyttig sammen med manuelle akkumulatorer.RETURN, sender ut den beregnede serien fra en indikator.