3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您好!出现计算结果与东方财富网不一致,主要是因为参数设置错误。
在 talib.SAR 函数中,acceleration(加速因子)和 maximum(最大加速因子)的参数值应该是小数,而不是整数。
东方财富等国内主流炒股软件中,SAR 的默认参数通常显示为 (4, 2, 20),这代表:
在 TA-Lib 中,这两个参数需要传入实际的小数值,即 0.02 和 0.2。您传入了 2 和 10,这远超了 SAR 算法的正常逻辑范围(通常加速因子在 0 到 0.2 之间)。因为数值过大,SAR 在计算的第一步就直接达到了最大值,导致无论你怎么微调这两个整数,结果看起来都一样,且完全失去了 SAR 指标应有的平滑追踪特性。
请将代码修改为如下形式(同时建议将已弃用的 as_matrix() 替换为 .values):
import talib
# 正确的参数:acceleration=0.02, maximum=0.2
sar = talib.SAR(df.high.values, df.low.values, acceleration=0.02, maximum=0.2)
即使使用了正确的参数 0.02 和 0.2,您可能偶尔还是会发现与东方财富网的数值有极微小的差异。这是正常的,原因如下:
总结:请将参数改为 acceleration=0.02, maximum=0.2,结果就会与东方财富网的 SAR 指标基本吻合了。