Exponential Moving Average (EMA) is a moving average indicator which measures the trend direction over a period of time. It places more importance on recent price data than other moving averages like SMA. Unlike other Moving Averages, EMA uses a multiplier which takes into account older data, even if they are outside of the period of days selected.
EMA is a line which is shown within the price graph, moving close to the price and eventually intersecting with it. EMA moving above the price indicates a downtrend while EMA moving below the price indicates an uptrend. It can also act as a level of Support/Resistance in uptrends and downtrends, respectively.
We can interpret buy/sell signals by using 2 different EMA lines (one assessing a shorter period than the other). If the shorter EMA (e.g. a 20 day EMA) crosses upwards over the longer SMA (e.g. 50 days), it is a buy signal. The opposite, where the shorter EMA crosses downwards under the longer EMA, indicates a sell signal. Another interpretation arises when intersecting with the price. A shorter EMA crossing the price from the bottom up, while remaining above the longer EMA, is considered a buy signal in the same way that the shorter EMA crossing the price from above downwards, while the longer EMA is located above the shorter EMA, indicates a sell signal.
For the first EMA(Previous day) we use SMA. SMA = sum of X days closing prices / X Multiplier = 2 / (Time periods used + 1 )
Name | Type | Range of value | Description |
| int | <1, int.MaxValue> | Number of bars used in the calculation. |
Indicator ouptuts a single value.
Type | Range of value |
double | (0, double.MaxValue) |
// Prints the current value of a 20 period EMA using// the daily bars close price value.ema = indicators.EMA(20).OnSeries(dailyBars.Close);Log("The current EMA value is " + ema.Value.ToString());​// Prints the previour EMA valueema = indicators.EMA(20).Keep(2).OnSeries(dailyBars.Close);Log("The previous EMA value is " + ema.Values[1].ToString());
using Signals.DataSeries.Bars;using Signals.Framework;using Signals.Indicators.EMA;​public class MyStrategy : SingleMarketStrategy{private Bars dailyBars;private EMA ema;​public override void Setup(DataMarketplace data, IndicatorsMarketplace indicators){dailyBars = data.Bars(BarPeriodType.Day, 1).WithOffset(25);ema = indicators.EMA(20).Keep(2).OnSeries(dailyBars.Close);}​public override void RegisterActions(){OnUpdateOf(dailyBars).Do(() =>{// Prints the current EMA valueLog("The current EMA value is " + ema.Value.ToString());​// Prints the previour EMA valueLog("The previous EMA value is " + ema.Values[1].ToString());});}}
​
​