套利宝例子中委托单处理主函数在执行最后的返回目前状态序号之前就加了开仓和平仓函数,这样开平仓岂不是用错误的状态序号又执行一遍?具体代码及疑问如下
Integer OnNotifyOrder(OrderRef ord,Integer myStatus)//2.4.5 委托单处理主函数
{
If(myStatus==1) // 委托 B 发送中
{
myStatus = OnNotifySending(ord,True);
}else If(myStatus==2) // 委托 B 发送成功
{
myStatus = OnNotifySended(ord,True);//如果这个运行后myStatus==4,那就要运行开平仓函数了吧?
}else If(myStatus==3) // 委托 B 撤单中
{
myStatus = OnNotifyCanceling(ord,True);
}else If(myStatus==5) // 委托 A 发送中
{
myStatus = OnNotifySending(ord,False);
}else If(myStatus==6) // 委托 A 发送成功
{
myStatus = OnNotifySended(ord,False);
}Else If(myStatus==7) // 委托 A 撤单中
{
myStatus = OnNotifyCanceling(ord,False);
}
If(myStatus==4||myStatus==8) // 委托 A 或委托 B 已经成交
{
RunSpreadOrderEntry();//这里运行的时候curEntryStatus 还是之前的值吧?
RunSpreadOrderExit();
}
Return myStatus;//上面调用开平仓函数的时候这个状态序号返回值还没有赋值给curEntryStatus 和 curExitStatus吧?
}
你可以自己打个日志运行看看