Python 高频量化异步协程

1.踩坑

在我刚开始用异步协程框架写策略框架爽的飞起的时候

小数据没什么问题,流畅无延迟

后面加大数据量同时创建N个任务(loop.create_task)

那么最后面创建的这个任务,会延迟好几秒才执行,直接给我整懵逼了

任务越多,延迟情况越严重,我测试,任务很少,也会有0.00几秒的延迟

再使用多线程同时创建多个任务执行就不会有延迟的问题出现

但是一个新问题出现了,不使用异步协程又没办法使用aiohttp??

答案:用threading多线程调用含asyncio异步函数

相关资料:https://blog.csdn.net/LeKZzz/article/details/127343128

2. uvloop

import uvloop

uvloop.new_event_loop()
loop.create_task(print_money())
loop.run_forever()

Ps:使用uvloop 可以使 asyncio 更快。事实上,它至少比 nodejs、gevent 和其他 Python 异步框架要快 两倍 。基于 uvloop 的 asyncio 的速度几乎接近了 Go 程序的速度。

3. 目前结构

目前我的策略框架为:

  1. 异步协程

  1. aiohttp http请求

  1. 多线程

  1. Websocket更新触发策略,而非轮训

我不但要在网络延迟和手续费上卷你们,还要在策略框架上卷你们,哇哈哈哈哈

不过还是得向c++低头

可惜c++写起来太麻烦了,c++100行,python1行

后面慢慢把核心功能用c++实现,然后用python去调用

博客原文: https://sumubai.cc/post/100

你可能感兴趣的:(量化)