ParabolicSAR

增量式、因果技术分析文档

摘要

ParabolicSAR 是抛物线停损转向趋势跟踪指标。

更新 API

result = rtta.ParabolicSAR().update(high, low)

update(...) 每次接收 highlow;只推进状态时可调用 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.cppclass ParabolicSAR 中实现。发生反转后, 实现会用新极值和重置后的加速因子预先计算下一根 K 线的候选 SAR,因此反转后 的序列也与经典算法一致。

参考资料