Sorry, I don't believe that Howard's first solution below is correct. Consider a very simple example. Stock has a high of $3, a low of $1, and a close of $2, every one of the 20 days. The arrays of H, L, and C, have means of $3, $1, and $2 respectively. And all three arrays have STDevs (about their own means) of $0. However, all highs, lows, and closes taken as a single set have a mean of $2 and a STDev of $0.8165.

Howard's second solution is correct. However, a simpler AmiBroker form of it, without looping, is:
N=20;
STDev = ((MA(H*H,N)+MA(L*L,N)+MA(O*O,N))/3
     - ((MA(H,N)+MA(L,N)+MA(O,N))/3)^2)^0.5;

An interesting (though probably not approved by those who approve proper mathematical thingys) experiment, might be to replace MA() with EMA() above, just to see what it looks like.
I happen to be partial to EMA()s.
-- Keith

Howard B wrote:
Hi Ramon --

Try computing the standard deviation of each series separately, squaring each (those squared values are the variances), adding the variances, and taking the square root of the sum of the variances. Is that the number that agrees with what you are looking for?

If not, look up the formula for computing the standard deviation of a series of number. The program a for loop 20 days long. Within the loop you will be processing three days points (HLC) every day instead of just one (C).

Thanks,
Howard
On Tue, Sep 8, 2009 at 7:01 AM, ramoncummins <[email protected] <mailto:[email protected]>> wrote:

    Hi There

    I am trying to calculate the standard deviation of the high,low
    and close prices for the last twenty days. In effect I wait the
    stdev of 60 pieces of data (20days * 3 data points). For
    reference, I am trying to replicate highlighting 60 cells in excel
    and calculating stdev on them.

    I've thought about combing the h,l,c arrays but don't know how to
    do this.

    Please note that neither of the following are correct:

    stdev(H+L+C, 20);
    (stdev(h,20)+stdev(l,20)+stdev(c,20) / 3); //this produces similar
    result but not *exactly* the correct result

    Any help much appreciated.

    Cheers

    Ramon



Reply via email to