PHP扩展trader_stochrsi函数返回false的原因排查求助
关于trader_stochrsi()返回false的排查思路
我来帮你拆解下代码里可能导致返回bool(false)的问题,结合Trader扩展的特性来看:
输入数据长度严重不足
StochRSI指标的计算依赖足够的历史数据周期。你传入的数组只有1个元素array(5.5),但参数里指定的$timePeriod是14——这意味着函数至少需要14个连续的价格数据才能完成一次有效的计算,加上后续平滑用的周期,实际需要的数据量会更多。当输入数据长度小于指标所需的最小周期时,Trader扩展的函数通常会直接返回false。先确认Trader扩展是否正常工作
可以先简单验证扩展是否正确加载:var_dump(extension_loaded('trader')); // 正常情况下应该返回bool(true)如果返回false,说明扩展没装好或者没在php.ini里启用,这会导致函数执行失败。
检查参数是否符合函数要求
虽然你传入的周期参数(14、3、3)都是正整数,看起来合法,但还是要确认trader_stochrsi的参数顺序是否匹配:函数的定义是trader_stochrsi(array $real, int $timePeriod = 14, int $fastKPeriod = 5, int $fastDPeriod = 3),你的调用顺序是对的,但如果后续调整参数,要注意不要搞混顺序。确保输入数据都是有效数值
虽然你这次传入的是5.5没问题,但如果数组里存在非数值类型(比如字符串、null、NaN),函数也会返回false。可以先检查输入数组的元素类型,确保都是有效的float/int。
给你一个能正常运行的示例,需要传入至少14个以上的数值:
// 模拟14个连续价格数据 $prices = [5.5, 5.6, 5.4, 5.7, 5.5, 5.8, 5.6, 5.9, 5.7, 6.0, 5.8, 6.1, 5.9, 6.2]; $stochrsi = trader_stochrsi($prices, 14, 3, 3); var_dump($stochrsi);
内容的提问来源于stack exchange,提问作者gs9999
相关产品推荐
相关产品推荐

