不好意思!
我有一个CSV,看起来像:
date,volume,open,close,high,low
2020-11-12 13:38:00,100,1.85,1.85,1.85,1.85
2020-11-12 13:58:00,100,1.85,1.85,1.85,1.85
2020-11-12 14:03:00,100,1.85,1.85,1.85,1.85
...
我正在尝试使用backtrader的数据:
import backtrader as bt
# from strategies import AverageTrueRange
# Instantiate Cerebro engine
cerebro = bt.Cerebro()
data = bt.feeds.GenericCSVData(
dataname='data/BBIG.csv',
timeframe=bt.TimeFrame.Minutes,
datetime=0,
high=4,
low=5,
open=2,
close=3,
volume=1,
)
cerebro.adddata(data)
cerebro.run()
cerebro.plot(
style='candlestick'
)
但是我一直得到以下错误:
IndexError: list index out of range backtrader
知道我做错了什么吗?
更新:
如果我将datetime
更改为'-1',我会得到一个不同的错误:
ValueError: time data '1.85' does not match format '%Y-%m-%d %H:%M:%S'
试试这个,将openinterest=-1
添加到GenericCSVData。
data = bt.feeds.GenericCSVData(
dataname='data/BBIG.csv',
timeframe=bt.TimeFrame.Minutes,
datetime=0,
high=4,
low=5,
open=2,
close=3,
volume=1,
openinterest=-1,
)
我不熟悉反向交易。
但是我发现GenericCSVData在其源代码中有以下代码:
params = (
('nullvalue', float('NaN')),
('dtformat', '%Y-%m-%d %H:%M:%S'),
('tmformat', '%H:%M:%S'),
('datetime', 0),
('time', -1),
('open', 1),
('high', 2),
('low', 3),
('close', 4),
('volume', 5),
('openinterest', 6),
)
我只是试着添加openinterest=-1
并得到结果。
我认为类需要在你的BBIG.csv默认的开放兴趣列。
此外,我得到了另一个问题ImportError Cannot import name 'warnings' from 'matplotlib.dates
,这是解决https://stackoverflow.com/a/63974376/11004559