我在做回测的时候发现,所有的的交易都从导入的历史数据的第二天开始。我用的是分钟线。这是我的代码:
def on_bar(self, bar: BarData):
self.cancel_all()
am = self.am
am.update_bar(bar)
self.buy(bar.close_price, 1)
查看交易记录都是从第二天开始的,然后后面每分钟都正常买入了。为什么第一天不能成功开仓呢?
我在做回测的时候发现,所有的的交易都从导入的历史数据的第二天开始。我用的是分钟线。这是我的代码:
def on_bar(self, bar: BarData):
self.cancel_all()
am = self.am
am.update_bar(bar)
self.buy(bar.close_price, 1)
查看交易记录都是从第二天开始的,然后后面每分钟都正常买入了。为什么第一天不能成功开仓呢?
因为回测的时候,load_bar函数需要指定用来初始化的数据日期长度,你可能数据长度正好第二天就初始化完毕了
我在on_init下面写的self.load_bar(0),而且我试过,这个self.load_bar()里面写n,成交时间就往后移n+1天。但是我明明用的是分钟线啊。
这个load_bar()最少也要载入一个交易日的历史数据:就是填入0。回测的时候问题是不大,问题是如果模拟或者实盘的时候是否也要等一个交易日才能启动交易呢?如果我需要马上进行交易怎么处理呢?
load_bar的这个参数是日期,不是多少根K线
实盘是点击启动后,立即进入交易,当然如果你数据容器ArrayManager不够的话也没法交易。