摘要
ParabolicSAR 是抛物线停损转向趋势跟踪指标。
更新 API
result = rtta.ParabolicSAR().update(high, low)
update(...) 每次接收 high 和 low;只推进状态时可调用 advance(...)。
工作原理
每次更新用加速因子把 SAR 推向当前趋势的极值点。价格越过候选 SAR 时趋势反转,SAR 重置为此前极值,加速因子也从初始值重新开始。
递推公式
\[SAR_t=SAR_{t-1}+AF_{t-1}(EP_{t-1}-SAR_{t-1})\]
\[EP_t=\begin{cases}\max(EP_{t-1},high_t),&trend_t=1\\\min(EP_{t-1},low_t),&trend_t=-1\end{cases}\]
当前最高价或最低价先与尚未限位的候选 SAR 比较。若价格穿越该候选值, 趋势立即反转,SAR 重置到上一趋势的极值点(并受相邻最高价或最低价约束), 加速因子恢复初始值。只有在趋势没有反转时,才对候选 SAR 限位,使其不进入 当前及前一根 K 线的价格区间。这个先后顺序不可颠倒:如果先把上升趋势的 候选值压到当前最低价以下,或把下降趋势的候选值抬到当前最高价以上,反转 条件将永远无法触发。
趋势延续并出现新极值时,加速因子逐步增大,直至设定上限。
实现说明
递推公式在 src/rtta/indicator.cpp 的 class ParabolicSAR 中实现。发生反转后,
实现会用新极值和重置后的加速因子预先计算下一根 K 线的候选 SAR,因此反转后
的序列也与经典算法一致。
