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. 目前结构
目前我的策略框架为:
- 异步协程
- aiohttp http请求
- 多线程
- Websocket更新触发策略,而非轮训
我不但要在网络延迟和手续费上卷你们,还要在策略框架上卷你们,哇哈哈哈哈
不过还是得向c++低头
可惜c++写起来太麻烦了,c++100行,python1行
后面慢慢把核心功能用c++实现,然后用python去调用
Python 高频量化Http网络请求速度优化 笔记
第一:c++为底层的python库
第二:异步携程 + aiohttp + Session
第三:urllib3 PoolManager
第四:requests + Session
第五:requests
说个小知识,requests并发请求使用多线程网络请求会阻塞,多进程才不会
总结:垃圾requests
部分交易所支持Websocket下单,比http请求步骤更少,不需要再连接,理论上速度更快
相关资料:
标签: 高频速度优化
高频量化网络延迟速度优化 笔记
- aws c区最快,a区11ms,c区7ms,且系统差距就差很多延迟,最快的是ubuntu20
- python的aiohttp内部几百微妙,要用c++,招一个c++开发
- aws c5类型的cpu能快一点点
交易所:
- bian 在东京A区和C区,老服务器在C区,负载均衡达到一定程度就到A区,平时C区块
- coinex 东京C区
- okx 在阿里云香港
- bybit 在新加坡
- 火币 东京D区
标签: 高频速度优化