trader_stddev

(PECL trader >= 0.2.0)

trader_stddev标准差

描述

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

参数

real

实数值数组。

timePeriod

周期数。有效范围从 2 到 100000。

nbDev

返回值

返回包含计算数据的数组,或在失败时返回 false。

添加注释

用户贡献的注释 1 个注释

nijatasadov at gmail dot com
5 年前
trader_stddev 不起作用。这也是 trader_bbands 不起作用的原因。

function standard_deviation(array $a, $sample = false)
{
$n = count($a);
if ($n === 0) {
trigger_error("数组中没有元素", E_USER_WARNING);

return false;
}
if ($sample && $n === 1) {
trigger_error("数组中只有一个元素", 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