问题一:
在Bar第一次生成时,执行完OnBarOpen事件,在行情未刷新之前,是否还会执行一次OnBar事件?
举例来说:
实盘下,如果在Bar第一次生成时, 即在OnBarOpen 事件中,通过判定 MarketPosition==0,而发出了开仓动作;
那么在行情未刷新之前, OnBar 事件是否会执行? 如果执行的话,其中的MarketPosition是否为0?
问题二:
实盘下,OnBar事件中,如果我执行了开仓动作,那么行情未刷新之前、同在本次逻辑中时,后续的代码中MarketPosition 是否仍然是0?
1会的。bar第一次生成,先执行onbaropen,再执行onbar,如果没有其他响应的事件域,结束每次执行,等待下一次驱动
2onbar会执行,marketposition会承接onbaropen的结果,变成非0结果
问题二
onbar事件中,执行开仓动作后,在执行对应平仓指令前,marketposition肯定是非0状态
你这个三个问题都可以写诊断代码自己去验证回答
第一个问题,在两个事件域都print本次驱动的机器事件,bar数据,比较一下就知道了
第二个问题,同样的,把marketposition结果print出来就知道了
第三个也是一样的,print一下就好了
与其提问,不如自己动手写诊断,最多10分钟就有答案了。
自己写诊断验证时学习最常见的手段
好的老师,因为是周末、不开盘,想急于知道结果,所以就提问了。抱歉
quant3现在不开盘其实也能测试bar内的颗粒度了