答读者问为免费文章,不计入专栏里面。本文可以在下面地址免费阅读。
在教程与股票的案例中,大部分使用的都是日线,并且数据文件都是csv与pandas,backtrader可以支持各种的数据文件,并且加载的数据,可以进行扩展,不仅仅只有高开低收成交量持仓量这些,具有很强的灵活性。本文处理的一个问题主要是如何加载分钟数据到backtrader中,这个在官网的教程中,出现的也比较少。
可以使用PandasDirectData
params = dict( fromdate = datetime.datetime(2018,1,4), # 回测开始时间 todate = datetime.datetime(2020,3,20), # 回测结束时间 timeframe = bt.TimeFrame.Minutes, compression = 1, dtformat=('%Y-%m-%d %H:%M:%S'), # 日期和时间格式 tmformat=('%H:%M:%S'), # 时间格式 datetime=0, # 下面几行是导入的数据,要和传入的数据列进行一一对应,以这个参数为准 high=2, low=3, open=1, close=4, volume=5, openinterest=6)
# 数据地址
data_path="C:/Users/WIN10/Desktop/RB8888.XSGE.csv"
# 读取数据,并整理数据,使得index是datetime格式,index对应的是参数里面的0
df=pd.read_csv(data_path,encoding='gbk')
df=df[['datetime','open','high','low','close','volume','openinterest']]
df.index=pd.to_datetime(df['datetime'])
df=df[['open','high','low','close','volume','openinterest']]
# 添加数据到cerebro中
feed = bt.feeds.PandasDirectData(dataname=df,**params)
cerebro.adddata(feed, name = "RB8888.XSGE")
系统当前共有 440 篇文章