function KDDot($stocknum, $var1, $var2, $var3, $kd, $period) { $close = getclose($stocknum, $period); $low = getlow($stocknum, $period); $hig = gethigh($stocknum, $period); $close[0] = 0; $low[0] = 0; $hig[0] = 0; $k = array(50); $d = array(50); for ($num = $var3; $num < count($close); $num++) { $min = $low[$num]; for ($i = $num - $var3 + 1; $i <= $num; $i++) { if ($min > $low[$i]) { $min = $low[$i]; } } $max = $hig[$num]; for ($i = $num - $var3 + 1; $i <= $num; $i++) { if ($max < $hig[$i]) { $max = $hig[$i]; } } $close[1 + $num - $var3] = ($close[$num] - $min) / ($max - $min) * 100; array_push($k, $close[1 + $num - $var3] * (1 / $var1) + $k[$num - $var3] * (1 - 1 / $var1)); array_push($d, $k[1 + $num - $var3] * (1 / $var2) + $d[$num - $var3] * (1 - 1 / $var2)); } if ($kd == 'K') { return $k; } else { return $d; } }
function testKD($stocknum, $var1, $var2, $var3, $period) { $close = getclose($stocknum, $period); $low = getlow($stocknum, $period); $hig = gethigh($stocknum, $period); $close[0] = 0; $low[0] = 0; $hig[0] = 0; $k = array(50); $d = array(50); for ($num = $var3; $num < count($close); $num++) { $min = $close[$num]; for ($i = $num - $var3 + 1; $i <= $num; $i++) { if ($min > $low[$i]) { $min = $low[$i]; } } $max = $close[$num]; for ($i = $num - $var3 + 1; $i <= $num; $i++) { if ($max < $hig[$i]) { $max = $hig[$i]; } } $close[1 + $num - $var3] = ($close[$num] - $min) / ($max - $min + 1.0E-9) * 100; array_push($k, $close[1 + $num - $var3] * (1 / $var1) + $k[$num - $var3] * (1 - 1 / $var1)); array_push($d, $k[1 + $num - $var3] * (1 / $var2) + $d[$num - $var3] * (1 - 1 / $var2)); } if ($k[count($k) - 1] > $d[count($d) - 1]) { return 1; } else { if ($k[count($k) - 1] < $d[count($d) - 1]) { return -1; } else { return 0; } } }