# Exponential Moving Average (EMA)

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.&#x20;

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**

$$
\[Price - EMA(PreviousDay)] \* Multiplier + EMA (PreviousDay)
$$

*For the first EMA(Previous day) we use SMA.*\
*SMA = sum of X days closing prices / X*\
\&#xNAN;*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

```csharp
// 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

```csharp
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());
        });
    }
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://help.signals.network/knowledge-base/indicators/trend-analysis/exponential-moving-average-ema.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
