python - Python TA 库,ATR 在数据框系列中出现错误
问题描述
我的代码
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,它们似乎与相同的数据集完美配合 - 链接到该技术 - 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()
实际计算并返回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)
推荐阅读
- javascript - Chrome扩展中的VueJS多个页面
- c# - DM Join 消息在 Discord C# Bot 中不起作用
- asp.net-core-mvc - User.Identity.IsAuthenticated = false 登录成功后使用 web api mvc core 3.0
- reactjs - ReactJS:从另一个子组件调用子方法?
- oracle - 创建表失败
- php - 如何计算5星总评分的平均值?
- winforms - VS2017/2017 中缺少 InvokeRequired 属性
- python-3.x - 无法在 Selenium 中使用 Python 进一步测试搜索
- angularjs - 文件上传 AngularJS 和 Django:/uploaded_file uploadFile() 处的 TypeError 缺少 1 个必需的位置参数:“请求”
- r - R optim,我可以将列表传递给参数:par 吗?