事件驱动的次序

我用这个代码记录的三个时间驱动域的运行次序,显示策略运行前或者账户登录时分别先运行一次OnPosition,在发出订单时,运行次序依次时OnPosition, OnOrder,OnFill,OnFill之后没有OnPosition的更新过程,这样对吗? OnPosition(PositionRef pos) { LogFile("##########################"); run_id=run_id+1; LogFile("OnPosition:run_id="+text(run_id)+"; "+text(pos.flag)+"; "+pos.symbol); LogFile("OnPosition:持空仓数量="+Text(pos.shortCurrentVolume)+"; 持多仓数量="+Text(pos.longCurrentVolume)); LogFile("***************************"); } //策略账户仓更新事件函数,参数pos表示更新的账户仓结构体 OnStrategyPosition(PositionRef pos) { } //委托更新事件函数,参数ord表示更新的委托结构体 OnOrder(OrderRef ord) { LogFile("##########################"); run_id=run_id+1; LogFile("OnOrder:run_id="+text(run_id)+"; status: "+text(ord.status)+"; "+ord.symbol); LogFile("OnOrder:成交数量: "+text(ord.fillVolume)+"委托数量: "+text(ord.volume)); LogFile("***************************"); If(ord.status==Enum_Filled){ If(ord.combOffset==Enum_Entry) { If(ord.side==Enum_Buy) {If(ord.symbol == Symbol) {LogFile("1111111111"); }} Else {If(ord.symbol == symbol) {LogFile("2222222222"); }} // LogFile("onOrder:sCount="+Text(sCount)+";bCount="+Text(bCount)+";kcB="+Text(kcB)+";kcS="+Text(kcS)+"; "+TimeToString(CurrentTime)); } Else { If(ord.side==Enum_Buy) {If(ord.symbol == symbol) { LogFile("3333333333333"); }} Else {If(ord.symbol == symbol) { LogFile("444444444444444444"); }} } /*If(ord.orderId==ord_send_Id["平今仓"]) {sendtoday_Pflag=0;bCount=0;sCount=0; } //委托单是否全部成交 Else If(ord.orderId==ord_send_Id["非主力"] ) {fzl_flag=0; fzl_d=0;fzl_k=0;} Else If(ord.orderId==ord_send_Id["开今仓"] ) {sendtoday_flag=0; } */ } } //成交更新事件函数,参数ordFill表示更新的成交结构体 OnFill(FillRef ordFill) { LogFile("##########################"); run_id=run_id+1; LogFile("OnFill:run_id="+text(run_id)+";side: "+text(ordFill.side)+"; "+ordFill.symbol); LogFile("OnFill:成交数量: "+text(ordFill.fillVolume)+"; "+ordFill.symbol); LogFile("*************************"); }

除了onbar onbaropen onbarclose,其他事件域好像是按照上下顺序执行