VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 42
声望: 0

假设有2个信号先后几乎同时到达,如果有TICK触发的同时,也有一个ONE ORDER触发

那么,VNPY是等on_tick回调函数处理完了,再触发on_order回调函数.

还是两个函数双线程同时触发回调?

Member
avatar
加入于:
帖子: 42
声望: 0

追加一个问题:假设当前TICK触发,因为程序处理时长很长,还没有处理完,下一个TICK触发已经来了,那是等当前的on_tick回调函数处理完了,再回调一次吗?

还是会启动另外一个线程,同时新触发on_tick回调函数

Member
avatar
加入于:
帖子: 1487
声望: 106
  1. 事件引擎是单线程顺序处理
  2. 会等待前一个tick处理完再处理下一个
Member
avatar
加入于:
帖子: 42
声望: 0

MTF wrote:

  1. 事件引擎是单线程顺序处理
  2. 会等待前一个tick处理完再处理下一个

关于1,我现在遇到的一个问题是这样的:

因为我想实现,一点击"启动"按钮,马上就发单而不等待TICK,所以我在on_start回调函数里,把self.trading提前设置为1,然后发单

假设发了5个单子.结果第1个单子发出去后,第2-5个单子还没发完,就会触发on_order同时运行了,而并不是等待on_start函数处理完

Member
avatar
加入于:
帖子: 1487
声望: 106

18650802653 wrote:

MTF wrote:

  1. 事件引擎是单线程顺序处理
  2. 会等待前一个tick处理完再处理下一个

关于1,我现在遇到的一个问题是这样的:

因为我想实现,一点击"启动"按钮,马上就发单而不等待TICK,所以我在on_start回调函数里,把self.trading提前设置为1,然后发单

假设发了5个单子.结果第1个单子发出去后,第2-5个单子还没发完,就会触发on_order同时运行了,而并不是等待on_start函数处理完

目前策略引擎设计上应该不会,所有回调函数都必须执行完,才会处理下一个回调触发。

如果确定出现上述情况,可以贴个报错或者日志截图看下

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】