function RSIDot($stocknum, $var, $period) { $close = getclose($stocknum, $period); $close[0] = 0; $rsiup = 0; $rsidn = 0; for ($i = 1; $i < count($close); $i++) { $t = $close[$i] - $close[$i - 1]; if ($t > 0) { $rsiup = $t * (1 / $var) + $rsiup * ($var - 1) / $var; $rsidn = 0 * (1 / $var) + $rsidn * ($var - 1) / $var; } else { $rsiup = 0 * (1 / $var) + $rsiup * ($var - 1) / $var; $rsidn = $t * -1 * (1 / $var) + $rsidn * ($var - 1) / $var; } if ($rsidn == 0) { $rs = 0; } else { $rs = $rsiup / $rsidn; } $close[$i - 1] = 100 - 100 / (1 + $rs); } unset($close[count($close) - 1]); return $close; }
function testRSI($stocknum, $var1, $var2, $period) { //var1 $close = getclose($stocknum, $period); $close[0] = 0; $rsiup = 0; $rsidn = 0; for ($i = 1; $i < count($close); $i++) { $t = $close[$i] - $close[$i - 1]; if ($t > 0) { $rsiup = $t * (1 / $var1) + $rsiup * ($var1 - 1) / $var1; $rsidn = 0 * (1 / $var1) + $rsidn * ($var1 - 1) / $var1; } else { $rsiup = 0 * (1 / $var1) + $rsiup * ($var1 - 1) / $var1; $rsidn = $t * -1 * (1 / $var1) + $rsidn * ($var1 - 1) / $var1; } if ($rsidn == 0) { $rs = 0; } else { $rs = $rsiup / $rsidn; } $rsi1 = 100 - 100 / (1 + $rs); } //var2 $close = getclose($stocknum, $period); $close[0] = 0; $rsiup = 0; $rsidn = 0; for ($i = 1; $i < count($close); $i++) { $t = $close[$i] - $close[$i - 1]; if ($t > 0) { $rsiup = $t * (1 / $var2) + $rsiup * ($var2 - 1) / $var2; $rsidn = 0 * (1 / $var2) + $rsidn * ($var2 - 1) / $var2; } else { $rsiup = 0 * (1 / $var2) + $rsiup * ($var2 - 1) / $var2; $rsidn = $t * -1 * (1 / $var2) + $rsidn * ($var2 - 1) / $var2; } if ($rsidn == 0) { $rs = 0; } else { $rs = $rsiup / $rsidn; } $rsi2 = 100 - 100 / (1 + $rs); } //判斷 if ($rsi1 > $rsi2) { return 1; } else { if ($rsi1 < $rsi2) { return -1; } else { return 0; } } }