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)
我的代码
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)