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

代码大概的逻辑如下:

def __init__():
    cnt=0
def on_tick(self,tick):
    cnt+=1
    if cnt>20:
       calculate()
def calculate(self,tick):
   dosomething
   cnt=0

请教一下如果calculate中计算逻辑复杂一点,会不会损失一些tick数据,如何加速?
可以用c++封装计算过程吗

Member
avatar
加入于:
帖子: 716
声望: 55

那得看计算需要的时间。tick数据是不会低丢失的,但是会被阻塞住。因为策略处理是同步的,所以如果在下一个tick达到时,上一个tick还在计算,那么就会等待上一个tick计算完成。计算过于复杂的话可以使用cython或者c++把计算过程封装成你这里的calculate函数,在on_tick中调用即可。

Member
加入于:
帖子: 18
声望: 0

郭易燔 wrote:

那得看计算需要的时间。tick数据是不会低丢失的,但是会被阻塞住。因为策略处理是同步的,所以如果在下一个tick达到时,上一个tick还在计算,那么就会等待上一个tick计算完成。计算过于复杂的话可以使用cython或者c++把计算过程封装成你这里的calculate函数,在on_tick中调用即可。
非常感谢,那有没有可能用asyncio来实现这一功能,或者有没有这个必要

Member
avatar
加入于:
帖子: 3469
声望: 228

没有必要,如果计算复杂想加快计算速度的话可以参考一下2楼的建议

Member
加入于:
帖子: 18
声望: 0

xiaohe wrote:

没有必要,如果计算复杂想加快计算速度的话可以参考一下2楼的建议
谢谢🙏

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

沪公网安备 31011502017034号

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