Exponential Moving Average (EMA)
Moving average indicator which measures the trend direction over a period of time.
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.
Trading application
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.
Calculation
For the first EMA(Previous day) we use SMA. SMA = sum of X days closing prices / X Multiplier = 2 / (Time periods used + 1 )
Parameters
Input Parameters
Name
Type
Range of value
Description
emaLength
int
<1, int.MaxValue>
Number of bars used in the calculation.
Output Parameters
Indicator ouptuts a single value.
Type
Range of value
double
(0, double.MaxValue)
Examples
// 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 value
ema = indicators.EMA(20).Keep(2).OnSeries(dailyBars.Close);
Log("The previous EMA value is " + ema.Values[1].ToString());
Complete example
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 value
Log("The current EMA value is " + ema.Value.ToString());
// Prints the previour EMA value
Log("The previous EMA value is " + ema.Values[1].ToString());
});
}
}
Last updated