Forward Backward EMA [Repaint]Perform forward-backward filtering using exponential averaging, thus providing a zero-phase exponential moving average. The output repaint and cannot be used as input for other indicators.
Settings
Length : moving average period
Src : data input of the moving average
Plot Color : the color of the displayed plot
Line Width : width of the plotted line
Usages
The main usage of moving averages is to provide an estimate of the underlying trend in the price by removing higher term variations from it. Non-causal (repainting) indicators are limited to offline applications, as such, they are most useful for summary analyses, note that it is still possible to infer from the output of repainting indicators, however since past outputs are subject to changes, it is extremely difficult to track the effectiveness of such indicators, and in online applications they only track the price, making them equally useful for predictive applications than following the direction of an individual candle.
Non-causal filters can be useful in order to have a better view of symbols with a relatively uninformative evolution.
Details
Causal filters have lag, this is the cost of using past observations as inputs, the more past observations you use, the more lag you will obtain (assuming these past observations have non-zero weights). There are various solutions to reduce the lag of a moving average, the most simple one relying on giving higher weights to more recent observations, another one relies on introducing gain in the filter passband, that is amplifying certain variations in the input signal while attenuating/removing higher term ones, finally, we can use adaptive moving averages to avoid excessive lag.
All these previous solutions can be used causally, but they are far from being perfect, as the lag reduction is often done at the cost of smoothness, if we were to keep the original smoothness of the filter while having no lag we would need to use non-causal solutions. The most common solution is to directly use future values as inputs, such moving averages are called "two-sided" moving averages since they use past values as input (left side) as well as future input values (right side), this is equivalent to shifting the results of a moving average backward.
The advantages of two-sided moving averages is that they conserve the original amplitude response of the moving average, however, it won't be possible to compute the most recent values of the moving average (since we won't have access to future values at a certain point), an alternative method heavily used in digital signal processing is forward-backward filtering.
The method consists of applying a filter forward in time, then we apply it once again backward. In order for you to have an easier understanding of this process think about applying a moving average normally starting at time t = 0 , then apply that moving average once again using the previous results as input but start from t = N-1 , that is from the most recent point, and proceed backward, plotting the result from left to right until you get back to t = 0 .
From this, it follows that forward-backward filtering applies a filter twice, the resulting filter is thus a two-passes filter, this results in an even smoother output (more precisely the filter amplitude response is squared).
Forward-backward filtering can be done in Pinescript by using the function "line.new" inside a loop, an exponential moving average is applied forward first, then once again backward inside the loop, "line.new" is used to plot the results backward.
Notes
It is important to note that forward-backward filtering is a repainting process, all the results of the indicator you see on the chart are subject to change over time. Since the method make use of line.new you will have around only 54 visible observations, with the impossibility of using them as input for other indicators. If you see indicators in the future with the same characteristics be aware that they will repaint.
Never purchase/rent filters that appear as having no lag, they are either repainting or the results are coming from a lucky shot or from an overfitted model, it is impossible to make both zero-lag and causal moving averages with pinescript, if you have doubt don't test your luck, better safe than sorry.
Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Demonstration of how history length affects all EMA valuesI saw some discussion of this so I whipped up an example to prove the that effect of history length on EMA values is pronounced, even for bars much further than the EMA length from the first candle of the chart.
This chart has two 89-bar EMAs of the close: a green one and a red one. However, for the red one, the first 89 bars of the graph are considered to have a close of "0", which is exactly whatPulseWire's EMA calculation uses for bars before the start of the graph.
This is because unlike other moving averages, which reference the price of previous bars, the EMA references the EMA of previous bars. Therefore, bars closer to the beginning of the chart, where PulseWire can't calculate an EMA because there is no previous EMA and therefore uses 0, will return substantially different values for the EMA() function that the same cart would with more history.
The further a bar is back in history, the less influence it has. However, every single historical bar has some influence on the EMA of every later bar.
To allow you to see this for yourself, this script contains the following inputs which you can change to see the effect:
-EMA period (default 89)
-Number of bars to ignore for EMA2 (default 89)
-decimal precision to show differences in. By making this a large number you can see that, although the effects diminish, history length affects all EMA values for the char.
-label spacing (increase this if you have a long history and run into TV's 50-label limit)
Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

9.x IndexENGLISH
The 9-period exponential moving average setups are simple and efficient for upward or downward trends. Its creation is attributed to trader Larry Williams . In Brazil it is widely publicized by trader Alexandre Fernandes (Palex).
This indicator was created to show the setup that appeared in each candle and an arrow shows the direction that the operation must be made (up arrow, long, and down arrow, short).
Below are the rules that describe each setup.
9.1 Long
1) MME9 is descending;
2) The candle that changes the direction of the average upwards, after its closing, activates the setup, if its maximum is broken, the purchase is activated;
3) The stop loss is positioned below the candle low in step 2.
9.1 Short
1) MME9 is rising;
2) The candle that changes the direction of the average downwards, after its closing, activates the setup, if its minimum is lost the sale is activated;
3) The stop loss is positioned above the candle maximum in step 2.
9.2 Long
1) MME9 is rising;
2) The current candle must close below the minimum of the previous candle, if its maximum is broken, the purchase is activated;
4) If the maximum of the candle in step 2 is not broken, the purchase will occur when the maximum of the next candle is broken;
5) The stop loss is positioned below the minimum of the candle in step 2 or step 3.
9.2 Short
1) MME9 is descending;
2) The current candle must close above the maximum of the previous candle, if its minimum is lost the sale is activated;
4) If the minimum of the candle in step 2 is not lost, the sale will occur when the minimum of the next candle breaks;
5) The stop loss is positioned above the maximum of the candle in step 2 or step 3.
9.3 Long
1) MME9 is rising;
2) A reference candle must be followed by two closings in a row below its closing, the purchase occurs when the maximum of the last candle breaks;
3) If the last high is not broken, the purchase occurs when the maximum of the next candle breaks;
4) The stop loss is positioned below the minimum of the candle in step 2 or step 3;
9.3 Short
1) MME9 is descending;
2) A reference candle must be followed by two closings in a row above its closing, the sale occurs when the minimum of the last candle breaks;
3) If the last low is not broken, the sale occurs when the minimum of the next candle breaks;
4) The stop loss is positioned above the candle maximum of step 2 or step 3;
9.4 Long
1) A candle generates a 9.1 short;
2) The next candle should generate a 9.1 long without losing the minimum of the previous candle, the purchase occurs when the maximum is broken;
3) The stop loss is positioned at the low of the candle in step 2.
Setup 9.4 for sale
1) A candle generates a 9.1 long;
2) The next candle should generate a 9.1 short without losing the maximum of the previous candle, the sale occurs at the loss of its minimum;
3) The stop loss is positioned at the maximum of the candle in step 2.
PORTUGUÊS
Os setups da média móvel exponencial de 9 períodos são simples e eficientes em ativos em tendência de alta ou de baixa. Sua criação é atribuída ao trader Larry Williams . No Brasil é amplamente divulgado pelo trader Alexandre Fernandes (Palex).
Esse indicador foi criado para mostrar o setup que surgiu em cada candle e uma seta mostra a direção que deve ser feita operação (seta para cima, compra, e seta para baixo, venda).
Abaixo temos as regras que descreve cada setup.
Setup 9.1 de compra
1) A MME9 está descendente;
2) O candle que mudar a direção da média para cima, após o seu fechamento, ativa o setup, se sua máxima for rompida é ativada a compra;
3) O stop loss é posicionado abaixo da mínima do candle do passo 2.
Setup 9.1 de venda
1) A MME9 está ascendente;
2) O candle que mudar a direção da média para baixo, após o seu fechamento, ativa o setup, se sua mínima for perdida é ativada a venda;
3) O stop loss é posicionado acima da máxima do candle do passo 2.
Setup 9.2 de compra
1) A MME9 está ascendente;
2) O candle atual deve fechar abaixo da mínima do candle anterior, se sua máxima for rompida é ativada a compra;
4) Caso a máxima do candle do passo 2 não seja rompida, a compra o ocorrerá no rompimento da máxima do candle seguinte;
5) O stop loss é posicionado abaixo da mínima do candle do passo 2 ou do passo 3.
Setup 9.2 de venda
1) A MME9 está descendente;
2) O candle atual deve fechar acima da máxima do candle anterior, se sua mínima for perdida é ativada a venda;
4) Caso a mínima do candle do passo 2 não seja perdida, a venda ocorrerá no rompimento da mínima do candle seguinte;
5) O stop loss é posicionado na acima da máxima do candle do passo 2 ou do passo 3.
Setup 9.3 de compra
1) A MME9 está ascendente;
2) Um candle de referência deve seguido por dois fechamentos seguidos abaixo do seu fechamento, a compra ocorre no rompimento da máxima do último candle;
3) Se a última máxima não for rompida, a compra ocorre no rompimento da máxima do candle seguinte;
4) O stop loss é posicionado abaixo da mínima do candle do passo 2 ou do passo 3;
Setup 9.3 de venda
1) A MME9 está descendente;
2) Um candle de referência deve seguido por dois fechamentos seguidos acima do seu fechamento, a venda ocorre no rompimento da mínima do último candle;
3) Se a última mínima não for rompida, a venda ocorre no rompimento da mínima do candle seguinte;
4) O stop loss é posicionado acima da máxima do candle do passo 2 ou do passo 3;
Setup 9.4 de compra
1) Um candle gera um 9.1 de venda;
2) O candle seguinte deve gerar um 9.1 de compra sem perder a mínima do candle anterior, a compra ocorre no rompimento da sua máxima;
3) O stop loss é posicionado na mínima do candle do passo 2.
Setup 9.4 de venda
1) Um candle gerar um 9.1 de compra;
2) O candle seguinte deve gerar um 9.1 de venda sem perder a máxima do candle anterior, a venda ocorre na perda da sua mínima;
3) O stop loss é posicionado a máxima do candle do passo 2. Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator

Indicator
