簡體   English   中英

在 backtrader 中,我無法使用 GenericCSVData 添加 1 分鍾蠟燭數據

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

我的 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

我的數據開始於2022-05-16 09:15:00+05:30

並於2022-07-29 15:29:00+05:30結束(最后一根蠟燭為 15:29:00)

在添加數據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

我嘗試了以下命令:

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')

除此之外,我還嘗試過:

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()

誰能幫我使用 backtrader 添加一分鍾蠟燭數據?

我解決了我的問題。

剛剛在我的數據中添加了另外兩列“交易量”“未平倉合約”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM