Centred Moving AverageBased around the Centered Moving Average as published by Vailant-Hero this script is revised and improved to aid with execution time & server load. For full description follow the link as above, as Valiant-Hero explains the idea perfectly well.
While the original script worked fine for small values of length, once length was extended significantly or chart timeframe set to short values then the script is prone to exceeding computation requirements. The original script was attempting to delete and re-draw (length x 3) lines on the chart for each tick. In addition to server load, once length is greater than 167 (500/3) then the first drawn lines start disappearing, so the predicted values no longer appear connected to the offset averages calculated from the candle data. A further error resulted with larger values of "length" and future data selected, in that the script would try and move lines more than 500 bars into the future.
Improvements and major code changes
All values for the predicted moving average lines are calculated from a single run through of the data, rather than having to loop back through the data "length" times (and then through it again "length" times if you selected double moving average). Each loop also inefficiently calculated the sum of "length" values by recalling each one individually.
Number of lines are thus reduced so that we're never attempting to plot more than "max_lines_count" onto the chart. User is able to select the granularity of the lines - more sections will mean a smoother line but at the expense of processing speed.
No matter the combination of "length" and the selected granularity of the lines, no line will be drawn if its endpoint would be more than 500 bars in the future.
Code for "Double SMA" only affected the predicted data values, rather than affecting the historic calculations (and standard deviation calcs) as well as the predictions. This has been included and results in much smoother lines when "Double Moving Average" is selected.
Striped lines for the predicted values - firstly to make it obvious where the "predictions" begin, and also because they look funky.
Centered-sma
Centered Moving AverageThe Centered moving averages tries to resolve the problem that simple moving average are still not able to handle significant trends when forecasting.
When computing a running moving average in a centered way, placing the average in the middle time period makes sense.
If we average an even number of terms, we need to smooth the smoothed values.
Try to describe it with an example:
The following table shows the results using a centered moving average of 4.
nterim Steps
Period Value SMA Centered
1 9
1.5
2 8
2.5 9.5
3 9 9.5
3.5 9.5
4 12 10.0
4.5 10.5
5 9 10.750
5.5 11.0
6 12
6.5
7 11
This is the final table:
Period Value Centered MA
1 9
2 8
3 9 9.5
4 12 10.0
5 9 10.75
6 12
7 11
With this script we are able to process and display the centered moving average as described above.
In addition to this, however, the script is also able to estimate the potential projection of future data based on the available data by replicating where necessary the data of the last bar until the number of data necessary for the calculation of the required centered moving average is reached.
If for example I have 20 daily closings and I look for the moving average centered at 10, I receive the first data on the fifth day and the last data on the fourteenth day, so I have 5 days left uncovered, to remedy this I have to give the last value to the uncovered data the closing price of the last day.
The deviations work like the bollinger bands but must refer to the centered moving average.