cumsum
cumsum in ProBuilder geeft de cumulatieve som van een waarde van de eerste geladen bar tot de huidige bar, nuttig voor doorlopende totalen en eigen gemiddelden.
Syntaxis
cumsum(price)Parameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
| prijs | numerieke expressie | verplicht | De waarde die op elke bar wordt opgeteld, bijvoorbeeld close, volume, of een willekeurige berekening. |
Formule
Voor bar t, met x de geaccumuleerde expressie en bar 0 de eerst geladen bar:
cumsum(x) = x(0) + x(1) + ... + x(t)Hoe het werkt
cumsum telt op elke bar de waarde van zijn argument op, te beginnen bij de oudste bar die in de geladen historie beschikbaar is, en geeft het totaal tot en met de huidige bar. Het resultaat is een reeks die alleen kan groeien wanneer het argument positief is, kan krimpen wanneer het negatief is, en op elke nieuwe bar een stap maakt ter grootte van de waarde van het argument.
Het accumulatievenster is de volledige geladen historie, niet een vaste lookback. Dat heeft een praktisch gevolg: de waarde hangt af van hoeveel bars de grafiek of de backtest heeft geladen. Hetzelfde script op hetzelfde instrument geeft andere cumsum-waarden met 5,000 bars historie dan met 500. Voor een voortschrijdend totaal over de laatste N bars, Summation[N] is het juiste instrument.
Het argument hoeft geen ruwe koers te zijn. Elke expressie werkt, inclusief vergelijkingen, die 1 of 0 opleveren. Daardoor is cumsum een compacte manier om te tellen hoe vaak een voorwaarde waar is geweest sinds het begin van de data.
Voorbeelden
Voorbeeld 1, Doorlopend totaal van slotkoersen (Indicator)
// Accumulate every close from the first loaded bar onward
cumulativeClose = cumsum(close)
RETURN cumulativeClose AS "cumulative close"Elke bar voegt zijn slotkoers toe aan het totaal, wat een monotoon stijgende curve oplevert voor elk instrument met positieve prijzen.
Voorbeeld 2, Volumegewogen gemiddelde over de volledige historie (Indicator)
// Divide cumulative price-volume by cumulative volume
vwap = cumsum(TypicalPrice * Volume) / cumsum(Volume)
RETURN vwap AS "history-wide VWAP"Twee cumulatieve sommen vormen samen een volumegewogen gemiddelde van de typische koers over alle geladen bars, een variant van de VWAP-berekening over de volledige historie.
Voorbeeld 3, Traden rond het langetermijngemiddelde (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) gedeeld door het aantal verstreken bars geeft het gemiddelde van alle geladen slotkoersen. De strategie gaat long wanneer de koers boven dat gemiddelde kruist en stapt uit bij de kruising terug naar beneden.
Veelvoorkomende fouten en valkuilen
- Historie-afhankelijke waarden. Het totaal begint bij de eerste geladen bar, dus het wijzigen van de hoeveelheid voorgeladen data verandert elke cumsum-waarde. Resultaten zijn niet vergelijkbaar tussen verschillende historiediepten.
- Een som over een venster verwachten. cumsum heeft geen periodeparameter.
cumsum(close) - cumsum(close)[10]ofSummation[10](close)is vereist voor een voortschrijdend totaal over 10 bars. - Ongelimiteerde groei. Het accumuleren van een strikt positieve reeks levert een waarde op die zonder grens groeit. Het schalen ervan, bijvoorbeeld op het aantal bars of op een andere cumulatieve som, is doorgaans nodig voordat je plot of vergelijkt.
- Reset bij onderbrekingen in de data. Het doorlopende totaal begint opnieuw als de dataserie opnieuw wordt geladen of wordt onderbroken, dus ga er niet van uit dat bewaarde waarden een reset van de grafiek overleven.
Gerelateerde instructies
Summation, som van een reeks over een vast aantal bars.Average, rekenkundig gemiddelde over een vaste periode.BarIndex, aantal bars verstreken sinds het begin van de geladen data.Volume, verhandeld volume per bar, een gangbaar cumsum-argument.OBV, ingebouwde indicator op basis van cumulatief volume met teken.ONCE, initialiseert een variabele eenmalig, nuttig naast handmatige accumulatoren.RETURN, geeft de berekende reeks uit een indicator als uitvoer.