Files
QuanTAlib/lib/statistics/cma/cma.pine
T
Miha Kralj 24e86d762a Add documentation links for various volatility indicators and channels
- Updated BBWN, BBWP, CCV, CV, CVI, EWMA, GKV, HLV, HV, Jvolty, JVOLTYN, MASSI, NATR, RSV, RV, RVI, TR, UI, VOV, VR, YZV indicators with documentation links.
- Added documentation links for Aberration, Acceleration Bands, Andrews' Pitchfork, Adaptive Price Zone, ATR Bands, Bollinger Bands, Center of Gravity, Donchian Channels, Decay Min-Max Channel, Detrended Synthetic Price, EACP, EBSW, HOMOD, Jurik Volatility Bands, Keltner Channel, MA Envelope, Min-Max Channel, Price Channel, Regression Channels, Standard Deviation Channel, Stoller Average Range Channel, Super Trend Bands, Ultimate Bands, Ultimate Channel, VWAP Bands, and VWAP with Standard Deviation Bands.
2026-02-18 11:55:48 -08:00

34 lines
822 B
Plaintext

// The MIT License (MIT)
// © mihakralj
//@version=6
indicator("Cumulative Moving Average", "CMA", overlay=true)
//@function Calculates Cumulative Moving Average (Running Average / Cumulative Mean)
//@param source Series to calculate CMA from
//@returns CMA value - running mean of all historical values
cma(series float source) =>
// Persistent state
var float mean = 0.0
var int count = 0
float val = nz(source, mean)
count += 1
// Welford's algorithm: M_n = M_(n-1) + alpha * (x_n - M_(n-1))
float alpha = 1.0 / count
float delta = val - mean
mean := mean + alpha * delta
mean
// ---------- Main loop ----------
// Inputs
i_source = input.source(close, "Source")
// Calculation
cma_value = cma(i_source)
// Plot
plot(cma_value, "CMA", color=color.yellow, linewidth=2)