auto-sync: 2026-04-17 20:24:28
This commit is contained in:
@@ -214,6 +214,10 @@ class ATRIndicator:
|
||||
Returns:
|
||||
新的ATR值
|
||||
"""
|
||||
if self.method == 'sma':
|
||||
# SMA不适合增量更新,这里简化处理,用户应该重新计算完整序列
|
||||
raise ValueError("SMA方法不支持增量更新,请重新计算完整序列")
|
||||
|
||||
# 计算当前TR
|
||||
tr1 = abs(high - low)
|
||||
tr2 = abs(high - prev_close)
|
||||
@@ -221,13 +225,10 @@ class ATRIndicator:
|
||||
tr = max(tr1, tr2, tr3)
|
||||
|
||||
if self._last_atr is None:
|
||||
# 还没有足够数据,直接返回TR
|
||||
# 还没有足够数据,初始化ATR为TR
|
||||
self._last_atr = tr
|
||||
return tr
|
||||
|
||||
if self.method == 'sma':
|
||||
# SMA不适合增量更新,这里简化处理,用户应该重新计算完整序列
|
||||
raise ValueError("SMA方法不支持增量更新,请重新计算完整序列")
|
||||
else:
|
||||
# EMA支持增量更新
|
||||
alpha = 1.0 / self.period
|
||||
new_atr = self._last_atr * (1 - alpha) + tr * alpha
|
||||
|
||||
Reference in New Issue
Block a user