Moving Average Envelopes

Moving Average Envelopes is a price band channel overlay that is offset from the moving average of price. [Discuss] :speech_balloon:

chart for Moving Average Envelopes

// usage
IEnumerable<MaEnvelopeResult> results =
  quotes.GetMaEnvelopes(lookbackPeriods, percentOffset, movingAverageType);


lookbackPeriods int - Number of periods (N) in the moving average. Must be greater than 1.

percentOffset double - Percent offset for envelope width. Example: 3.5% would be entered as 3.5 (not 0.035). Must be greater than 0. Typical values range from 2 to 10. Default is 2.5.

movingAverageType MaType - Type of moving average (e.g. SMA, EMA, HMA). See MaType options below. Default is MaType.SMA.

Historical quotes requirements

See links in the supported MaType options section below for details on the inherited requirements for quotes and lookbackPeriods.

quotes is a collection of generic TQuote historical price quotes. It should have a consistent frequency (day, hour, minute, etc). See the Guide for more information.

MaType options

These are the supported moving average types:

MaType.ALMA - Arnaud Legoux Moving Average

MaType.DEMA - Double Exponential Moving Average

MaType.EPMA - Endpoint Moving Average

MaType.EMA - Exponential Moving Average

MaType.HMA - Hull Moving Average

MaType.SMA - Simple Moving Average (default)

MaType.SMMA - Smoothed Moving Average

MaType.TEMA - Triple Exponential Moving Average

MaType.WMA - Weighted Moving Average

:warning: Warning: For ALMA, default values are used for offset and sigma.



:hourglass: Convergence warning: Some moving average variants have decreasing magnitude, convergence-related precision errors that can be as high as ~5% deviation in indicator values for earlier periods. See links in the supported MaType options section above for more information.


Date DateTime - Date from evaluated TQuote

Centerline double - Moving average

UpperEnvelope double - Upper envelope band

LowerEnvelope double - Lower envelope band

The moving average Centerline is based on the movingAverageType type specified.


See Utilities and helpers for more information.


This indicator may be generated from any chain-enabled indicator or method.

// example
var results = quotes

Results cannot be further chained with additional transforms.