Variable Moving Average Calculation  [SOLVED]

Questions about MultiCharts and user contributed studies. earmarques
Posts: 13
Joined: 07 Dec 2013
Has thanked: 1 time
Been thanked: 1 time

Variable Moving Average Calculation

Hi, I've tried to create a indicator for the VMA but without success, using the below formula:

Code: Select all

VMA = (0.78*(volatility index) * close) + (1-0.078 * volatility index)*yesterday’s VMA
For the volatility index I've choosed the CMO of length 9, function below:

Code: Select all

Input: LENGTH(Numeric);

CMO =100*((C-C[LENGTH])/ (SUMMATION(ABSVALUE((C-C)),LENGTH)));
Then the complete formula for my VMA is:

Code: Select all

VMA = (0.78*CMO(9) * close) + (1-0.078 * CMO(9))*VMA
This looks wrong? I put this formula and Multicharts64 return big numbers, far from a moving average. I put this formula in excel with the values of CMO(9) and don't return big numbers. Can anyone help me please?

And sorry by the bad english!

TJ
Posts: 7210
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 991 times
Been thanked: 2052 times

Re: Variable Moving Average Calculation

::
And sorry by the bad english!
No apology needed for bad english; we are from all over the world.

TJ
Posts: 7210
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 991 times
Been thanked: 2052 times

Re: Variable Moving Average Calculation

you can debug by breaking down all the variables and
printing out each value:

eg.

VMA1 = (0.78*(volatility index) * close)
VMA2 = (1-0.078 * volatility index)*yesterday’s VMA

plot CMO
plot VMA1
plot VMA2

plot VMA1+VMA2 earmarques
Posts: 13
Joined: 07 Dec 2013
Has thanked: 1 time
Been thanked: 1 time

Re: Variable Moving Average Calculation

Yes, but the problem arrives when I reference the VMA. When I change this to Close the number isn't so bigger. And I can't do this test without sum the two formulas:

Code: Select all

VMA1 = (0.78*(volatility index) * close)
VMA2 = (1-0.078 * volatility index)*VMA<-------this part must be calculated

plot CMO
plot VMA1
plot VMA2

plot VMA1+VMA2
This is why this debug is so dificult. When I replace VMA by Close is ok, but this variable must be calculated. earmarques
Posts: 13
Joined: 07 Dec 2013
Has thanked: 1 time
Been thanked: 1 time

Re: Variable Moving Average Calculation  [SOLVED]

T, thanks for the help. I made a search for this indy and found this:

Code: Select all

Inputs: Price(c), Period(9), CMOPeriod(9);
Variables: VI(0), factor(0), VMA(0);
factor = 2/(Period+1);
VI = AbsValue(CMO(Price, CMOPeriod)/100);
if CurrentBar <= 1 then
begin
VMA = Price;
end
else
begin
VMA = (factor*VI*Price) + ((1-factor*VI)*VMA);
end;

plot1(vma);
It's perfect!
Thanks.

TJ
Posts: 7210
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 991 times
Been thanked: 2052 times

Re: Variable Moving Average Calculation

Good. Thanks for letting us know.

TJ
Posts: 7210
Joined: 29 Aug 2006
Location: Global Citizen
Has thanked: 991 times
Been thanked: 2052 times

Re: Variable Moving Average Calculation

An easier way would be to initialize the VMA to Close.

VMA will start with the value of "Close",
after the first bar, VMA will be determined by your code.
This method works if you are only referencing one bar back;

Code: Select all

Inputs: Price(c), Period(9), CMOPeriod(9);
Variables: VI(0), factor(0), VMA( CLOSE );

factor = 2/(Period+1);
VI = AbsValue(CMO(Price, CMOPeriod)/100);

VMA = (factor*VI*Price) + ((1-factor*VI)*VMA);

plot1(vma); filippo.milano
Posts: 42
Joined: 02 Jan 2015

Re: Variable Moving Average Calculation

Sorry, but it's not working tis code...
Could you please post the correct code for VMA and also for CMO function code?

Many thanks in advance

Filippo