请教!! 关于 OnOrder 和 OnTimer

老师好!

    在下鲁钝,虽已看过视频及PDF教程,但还有些疑惑,烦请老师不吝赐教为感!

例如:

OnBar(ArrayRef<Integer> indexs)

  {

    1  语句.....

    2  语句.....

    3  语句.....

    if(条件..... )

         {

            4  平多仓.....

         }

     if (条件.......)

        {

            5  平空仓.......

        }

      if (条件.......)

         {

            6  开多仓.......

         } 

      if (条件.......)

         {

            7   开空仓......

         }

        8  语句.......

        9  语句.......

       10  语句.......

  }

OnOrder(OrderRef ord)

  {

      接收状态发生变化的委托单

      是否重发委托

  }

OnTimer(Integer id,Integer millsecs)

  {

      同步数据

      撤单

  }

一、是不是只要有委托单就触发 OnOrder ?

二、OnTimer 是不是有最高优先级,也就是说,无论进程执行到哪,只要达到计数器的值就触发 OnTimer?

三、如果问题一成立,假如由 “5 平空仓”触发 OnOrder,当 OnOrder 和 OnTimer 都执行完后,进程在哪开始执行?是 “6 开多仓”还是从头开始,亦或其它?

四、假如在 OnOrder OnTimer 中撤单重发,是不是依然触发  OnOrder 而不会回到原进程中?

请教ontimer撤单
关于OnOrder域和OnPosition的问题
关于OnTimer的疑问
定时器/onbar和ontimer
关于OnOrder域机制的问题
再问onorder的问题
请教老师关于000和888的使用问题
onposition,onorder
请教!关于RANGE 和 IF()条件语句
请教!!!关于内嵌结构体

非常感谢!

1不是 onorder的驱动条件是有委托单发生状态变化,这个状态变化可以是创建,成交,撤单,废除等等

2不是 就算计数器的值读到了,如果现在正在运行另一个事件域,也要等当前事件域运行完才会执行ontimer

3根据下一次发生什么事件执行什么事件域

4这个问题不知道怎么回答,为什么会回到原进程?什么叫原进程?事件域的概念就是不同的事件发生,就运行对应事件域里面的代码,并不是说一次执行会把所有事件域里的代码执行一遍。比如如果当前收到了新行情数据,最新bar数据发生了变化,那么就驱动onbar事件域里的代码运行,onorder,ontimer里的代码不会运行。如果onbar里的代码执行结构导致了发单,那么onbar运行结束后会立即执行onorder接受这次创建订单的数据并运行onorder域内的代码,onbar和ontimer不会运行。如果ontimer的计数时间到点,那么直接执行ontimer域内的代码,onbar和onorder域内的代码不执行。

如果这样还没搞懂,可以看看视频区,搜索事件域,相关视频学一下,看看实际案例的解说。

再不明白那就没办法了。