- Python语言简单优雅,大部分有编程基础的人都能快速上手使用;
- 在币圈行情变化日新月异的情况下,策略也会频繁更变,Python语言开发效率相对较高,比较适合快速开发部署新策略;
- 运行速度跟不上?除了计算密集型任务之外(需要消耗大量CPU计算资源),Python能解决绝大部分问题;可以通过技术手段让Python运行效率非常高效;
- Python社区非常活跃,遇到问题的时候寻求帮助比较容易;
Python Asyncio 是Python3.x之后原生支持的异步库,底层使用操作系统内核的aio 异步函数,是真正意义上的异步事件驱动IO循环编程模型,能够最大效率完成系统IO调用、最大效率使用CPU资源。
区别于使用多线程或多进程实现的伪异步,对于系统资源的利用将大大提高,并且对于资源竞争、互斥等问题,可以更加优雅的解决。
RabbitMQ 是一个消息代理服务器,可以作为消息队列使用。
我们在框架底层封装了RabbitMQ作为 事件中心
,负责各种业务事件的发布和订阅,这些业务事件包括订单、持仓、资产、行情、配置、监控等等。
通过 事件中心
,我们可以很容易实现业务拆分,并实现分布式部署管理,比如:
- 行情系统,负责任意交易所的任意交易对的行情收集并发布行情事件到事件中心;
- 资产系统,负责任意交易所的任意账户资产收集并发布资产事件到事件中心;
- 策略系统,负责所有策略实现(量化、做市),从事件中心订阅行情事件、资产事件等,并发布订单事件、持仓事件等等;
- 风控系统,负责订阅任意感兴趣事件,比如订阅行情事件监控行情、订阅资产事件监控资产、订阅持仓监控当前持仓等等;
- ...
4. 我们与 vnpy 有什么区别 ?
vnpy底层是通过多线程实现异步,并不是真正意义的异步,我们的主要区别有:
- 基于 Python Asyncio 原生异步事件循环,处理更简洁,效率更高;
- 任意交易所的交易方式(现货、合约)统一,相同策略只需要区别不同配置,即可无缝切换任意交易所;
- 任意交易所的行情统一,并通过事件订阅的形式,回调触发策略执行不同指令;
- 支持任意多个策略协同运行;
- 支持任意多个策略分布式运行;
- 所有延迟都是毫秒级(10毫秒内,一般瓶颈在网络延迟);
- 提供任务、监控、存储、事件发布等一系列高级功能;
SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)')
- 解决方法
aiohttp在python3.7里可能有兼容性问题,需要做一下简单的处理。
MAC电脑执行以下两条命令:
cd /Applications/Python\ 3.7/
./Install\ Certificates.command