PHP Conference Japan 2024

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("陣列只有 1 個元素", 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