trader_stddev

(PECL trader >= 0.2.0)

trader_stddevStandard Deviation

Description

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

Parameters

real

Array of real values.

timePeriod

Number of period. Valid range from 2 to 100000.

nbDev

Return Values

Returns an array with calculated data or false on failure.

add a note

User Contributed Notes 1 note

up
4
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