事件驱动的次序

我用这个代码记录的三个时间驱动域的运行次序,显示策略运行前或者账户登录时分别先运行一次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("*************************");
    }

成交事件域驱动
新量化时代的必备交易利器——“事件驱动”
运行机制的次序
OnOrder事件驱动问题
关于事件驱动函数
事件驱动框架建议
TB系统提供的事件驱动函数能不能用return返回数据?比如onnar()
在事件驱动下如何通过亏损金额止损
巧妙利用TBQuant事件驱动针对盘中行情突发跳空
关于事件驱动及range的一些问题

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