trader_stddev

(PECL trader >= 0.2.0)

trader_stddevStandard Deviation

説明

trader_stddev(array $real, int $timePeriod = ?, float $nbDev = ?): array

パラメータ

real

実数値の配列。

timePeriod

Number of period. Valid range from 2 to 100000.

nbDev

戻り値

Returns an array with calculated data or false on failure.

add a note add a note

User Contributed Notes 1 note

up
1
nijatasadov at gmail dot com
5 years ago
trader_stddev doesn't work. This is why trader_bbands doesn't work as well.

function standard_deviation(array $a, $sample = false)
    {
        $n = count($a);
        if ($n === 0) {
            trigger_error("The array has zero elements", E_USER_WARNING);

            return false;
        }
        if ($sample && $n === 1) {
            trigger_error("The array has only 1 element", E_USER_WARNING);

            return false;
        }
        $mean = array_sum($a) / $n;
        $carry = 0.0;
        foreach ($a as $val) {
            $d = ((double) $val) - $mean;
            $carry += $d * $d;
        };
        if ($sample) {
            --$n;
        }

        return sqrt($carry / $n);
    }

trader_stddev($data, $period) {
       $stds = [];
        $current = [];

        foreach ($data as $i => $close) {
            $current[] = $close;
            if ($i < $period) {
                $stds[$i] = false;
            } else {
                $stds[$i] = standard_deviation($current);
                array_shift($current);
            }
        }

        return $stds;

}
To Top