Python TA 库,ATR 在数据帧系列中出现错误

Python TA library, ATR getting errors in dataframe series

我的代码

import ccxt
import ta
import pandas as pd

ftx = ccxt.ftx()
markets = ftx.load_markets()
df = pd.DataFrame(ftx.fetch_ohlcv(symbol, timeframe='1h'))
df.rename(columns = {0:'time', 1:'open', 2:'high', 3:'low', 4:'close', 5:'volume'}, inplace = True)    
df['atr'] = ta.volatility.AverageTrueRange(df.high,df.low,df.close, window=14, fillna=True)
#df.dropna(inplace=True)
df = df[['open','high','low','close','volume','atr']]
print(df)

我得到的输出

知道是什么原因造成的吗? (我已经测试了其他技术指标,例如 RSI 和 MACD,它们似乎可以完美地处理相同的数据集 - Link 到此技术指标 - https://technical-analysis-library-in-python.readthedocs.io/en/latest/ta.html#ta.volatility.AverageTrueRange

可以在您链接的文档中找到解决方案。本例中的关键字是 class.

来自文档:

class ta.volatility.AverageTrueRange (...)

...

average_true_range() -> pandas.core.series.Series

所以您目前只是在创建一个 class 保存参数来创建您想要的输出。但是,您没有调用实际计算的函数 (average_true_range()),并且 returns 您可以将 Series 添加到 DataFrame。 因此,如下所示更改您的代码,将 atr 系列添加到您的 DataFrame.


import ta
import pandas as pd

df = pd.DataFrame({
    'high': [10, 10, 10],
    'low': [8, 8, 8],
    'open': [9, 9, 9],
    'close': [9, 9, 9]
})

df['atr'] = ta.volatility.AverageTrueRange(
    df.high,
    df.low,
    df.close,
    window=2,
    fillna=False
).average_true_range() # <- call function


print(df)