def calculate_atr(prices, period):
"""
计算ATR
"""
high = prices['high']
low = prices['low']
close = prices['close']
tr1 = high - low
tr2 = abs(high - close.shift(1))
tr3 = abs(low - close.shift(1))
tr = pd.concat([tr1, tr2, tr3], axis=1).max(axis=1)
return tr.rolling(window=period).mean()
这里的shift(1)应该改成shift(-1)吧?
计算真实波幅(True Range,TR)
首先计算以下三个值:
当前最高价与最低价之差。
当前最高价与上一交易日收盘价之差的绝对值。
当前最低价与上一交易日收盘价之差的绝对值。
然后取这三个值中的最大值作为当前交易日的真实波幅(TR)。
2025-04-30