vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 13
声望: 0

VNPY的线程模型是怎样的? 具体就是VNPY运行的时候,会启动哪些线程?

我在用VPNY做火币合约,用无界面的EventEngine2引擎。在写代码调程序的过程中,还是遇到线程同步问题,特此求教。
比如:一个策略运行的时候是一个线程吗?
Tick,Order,Trade的处理在同一个线程还是多个线程?

Administrator
avatar
加入于:
帖子: 4427
声望: 253
  1. 主线程:带PyQt界面时运行Qt的循环,无界面时可以直接阻塞或者用while循环
  2. 事件引擎线程:处理事件引擎队列中的事件,并调用注册的处理函数处理,所以如果是CtaStrategy层,所有回调函数你可以认为都是单线程在驱动的(每次只有一个在调用)
  3. API层线程:不同的API不一样了,对于火币来说,Websocket需要有至少一个线程处理回调函数,Rest需要有一个线程来持续发出请求
Member
avatar
加入于:
帖子: 22
声望: 0

用Python的交易员 wrote:

  1. 主线程:带PyQt界面时运行Qt的循环,无界面时可以直接阻塞或者用while循环
  2. 事件引擎线程:处理事件引擎队列中的事件,并调用注册的处理函数处理,所以如果是CtaStrategy层,所有回调函数你可以认为都是单线程在驱动的(每次只有一个在调用)
  3. API层线程:不同的API不一样了,对于火币来说,Websocket需要有至少一个线程处理回调函数,Rest需要有一个线程来持续发出请求

CtaStrategy层,好像众多策略实例都在共用一个事件引擎和主引擎实例
dataRecorder 数据收集,应该是单独在跑一个事件和主引擎
盘中数据收集和跑策略,在一个VNPY下会有问题吗?

Administrator
avatar
加入于:
帖子: 4427
声望: 253

必然会拖慢速度,DataRecorder不应该和CtaStrategy跑在一个进程里面的。

examples目录下,有单独的无界面的DataRecording应用

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

沪公网安备 31011502017034号