简体   繁体   English

在 backtrader 中,我无法使用 GenericCSVData 添加 1 分钟蜡烛数据

[英]In backtrader I am unable to add 1 minute candle data using GenericCSVData

My CSV looks like the following:我的 CSV 如下所示:

time,open,high,low,close
2022-05-16T09:15:00+05:30,33263.7,33284.15,33037.3,33185.95
2022-05-16T09:16:00+05:30,33187.75,33236.3,33152.3,33215
2022-05-16T09:17:00+05:30,33221.35,33250.75,33171.6,33176.4
2022-05-16T09:18:00+05:30,33173.8,33177.7,33085.55,33085.55

My Data start from 2022-05-16 09:15:00+05:30我的数据开始于2022-05-16 09:15:00+05:30

And end at 2022-07-29 15:29:00+05:30 (the last candle is of 15:29:00)并于2022-07-29 15:29:00+05:30结束(最后一根蜡烛为 15:29:00)

While adding the data uisng cerebro.adddata(data) I am getting the following error:在添加数据cerebro.adddata(data)时,我收到以下错误:

File "C:\Users\ritul\AppData\Roaming\Python\Python38\site-packages\backtrader\feed.py", line 710, in _load
    return self._loadline(linetokens)
  File "C:\Users\ritul\AppData\Roaming\Python\Python38\site-packages\backtrader\feeds\csvgeneric.py", line 148, in _loadline
    csvfield = linetokens[csvidx]

IndexError: list index out of range

I have tried following commands:我尝试了以下命令:

data = bt.feeds.GenericCSVData(
    dataname="Book1.csv",
    timeframe=bt.TimeFrame.Minutes,
    compression=1, 
    fromdate=datetime.datetime(2022, 5, 16, 9, 15),
    todate=datetime.datetime(2022, 7, 29, 15, 30),
    sessionstart=datetime.time(9, 15),
    sessionend=datetime.time(15, 30),
    dtformat='%Y-%m-%dT%H:%M:%S+05:30',
    datetime=0,
    time=-1,
    open=1,
    high=2,
    low=3,
    close=4,
    volume=5,
    openinterest=-1,
    headers=1,
    separator=",",
    reverse=True
)

data.addfilter(bt.filters.SessionFilter(data))

cerebro.adddata(data)

# Run over everything
cerebro.run()

# Plot the result
cerebro.plot(style='bar')

Apart from this I have also tried:除此之外,我还尝试过:

class CSV(bt.feeds.GenericCSVData):

params = (
    ('dtformat', '%Y-%m-%dT%H:%M:%S+05:30'),

    ('datetime', 0),
    ('open', 1),
    ('high', 2),
    ('low', 3),
    ('close', 4),
    ("compression",1),
    ('volume', -1),
    ('openintrest', -1),
    ("timeframe",bt.TimeFrame.Minutes)
)


data = bt.feeds.GenericCSVData(
    dataname='Book1.csv',
    dtformat=('%Y-%m-%dT%H:%M:%S+05:30'),
    datetime=0,
    high=2,
    low=3,
    open=1,
    close=4,
    compression=1,
    timeframe=bt.TimeFrame.Minutes,
    volume=-1,
    openinterest=-1
)

feed =  CSV(dataname ="Book1.csv")

cerebro.adddata(feed) 

cerebro.run()

cerebro.plot()

Can anyone help me to add One Minute Candle data using backtrader?谁能帮我使用 backtrader 添加一分钟蜡烛数据?

I solved my problem.我解决了我的问题。

Just added another two columns "volume" and "open interest" inside my data.刚刚在我的数据中添加了另外两列“交易量”“未平仓合约”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM