Loading... > 一套全新的, 满足个人用户全自动量投交易的框架问世了.... # Aqtrader - 量投交易框架 ## 0. 关于作者 Email: yangowen001@gmail.com Blog: michael001.cn ## 1. 介绍 aqtrader - Async Quant Trader: * 一个基于事件的数据驱动的全异步量化投资交易框架(国内A股), 可进行任意回测的同时将重心放在了实时数据, 计算分析并完成交易上. * 它是全异步实现的, 框架主流程使用协程+多线程的方式工作, 即使交易客户端不支持异步或者并发(指同花顺交易端). * 它支持分布式部署, 站在业务逻辑的角度, 由数据服务, 交易服务, 量投服务这三个模块组成, 可以任意部署在不同机器之上, 实现解耦与扩展. * 它支持海量数据的计算与存储, 底层使用ClickHouse来提供数据存储与实时分析计算功能, QPS是目前开源数据库的No.1. * 它支持Tick级别, 以及任意级别的回测与实盘交易, 可以多标的, 跨级别, 全市场扫描计算与执行. ## 2. 背景 * 我曾投身于国内A股二级市场的交易当中, 摸爬滚打, 潜心求学, 读好多卷书, 学好多技术图形, 追过涨杀过跌, 单月翻倍单月回到解放前, 经历各种起伏, 领会与体悟这个迷人的市场, 甚至是思考人生. 开始对投资这个事着迷, 并且进行反思, 期间接触到了量化投资这个概念, 再结合我个人的投资行为特点, 实在是太互补了. 然后寻找合适的能够实现自己'脑海里'的策略的开源框架, 短时间内并没有得到很好的答案(他们大多将重心放在了数字货币与期货的交易上).这就有了再开发一套的动机.没错, 当前的框架是只支持国内A股交易的, 因为我只懂A股证券, 但是就框架本身而言不妨碍将来对其他市场与品种的支持. ## 3. 架构 摘要图:  架构图:  1. data agent: 获取数据, 如果数据来自web可以类比做爬虫程序 数据清洗与加工 已接入的数据源有: 新浪财经实时Tick数据 i问财机器人接口(已绕过检测, 可获取任意你需要的数据) 2. data server: 注册所有data agent任务, 以任意频率或定时执行. 将数据封装为event事件, 发布到消息中心. 存储数据到clickhouse. 3. mq: 采用rabbitmq实现上下游消息解耦, 可对接任意量化服务和数据库, 扩展性大大增强. 4. clickhouse: OLAP库, 同时满足大数据量与即时计算, 传统大数据架构(HDFS/HIVE/HABASE/KYLIN)已过时, 一个clickhouse就能囊括 他们所有的特性, 各大头部互联网公司已经或正在往它迁移. 虽然它也有缺点, 但是在量化场景中并无过多体现. 5. quant server: 底层基于backtrader实现, 它能做的该框架全能做, 除此之外还对接国内A股实盘/涨跌停限制/买卖限制/手续费等等做了内部支持. (注: 该框架针对backtrader进行了魔改级别的扩展, 尤其是实盘模式下, 除了其基类与cerebro, 基本上你要用到的类都被重写了, 这个工作量不亚于自己写一套出来, 但是考虑到backtrader内置无数个indicator以及高可靠性, 自己暂时没必要重复造轮子) 6. trade server: 交易客户端的代理服务, 目前对接的是同花顺(ths), 接收来自quant server的操作指令然后控制ths执行. (注: 由于ths毫无并发能力可言, 该框架采用异步方式下发指令, 所以即使ths延迟在高也不会影响其他server的执行, 如果你有 任何支持高并发的交易api可用, 可以很容易将其替换掉.) ## 4. 特性 * 全异步实现 * 接入i问财机器人, 已内置当日开盘, st股, 新股等数据agent * 接入新浪A股Tick级别实时数据, 已内置tick数据agent * Tick级别回测与实盘交易. 多标的, 跨周期, 全市场监控的实盘交易 * 可方便的自定义股票池, 用于实盘加载 * 轻松实现自定义strategy, 回测与实盘同一套stragety代码 * 可任意自定义事件, 发布与实时存储, stragetey实时消费 * 可轻松对接任意交易端, 替换目前内置的trader * 完善的日志系统, 各模块间请求与操作以及实盘交易均有记录可查 * 内置pytest测试用例 * 可存储海量数据, 因子指标实时计算 * 数据压缩率接近10:1, 1T ssd就足以存储几百亿条Tick数据 ## 5. 组织结构  注: 之所以将trade server剥离开是因为该服务需要独立部署于windows环境, 而其他服务并无此限制. ## 6. 截图 dataserver:  live:  trader:  ## 7. 后续计划 1. 易用性 * docker容器化实现, 集成apscheduler后常驻在云服务 * 通过gitlab进行代码管理 * CICD集成, 开发流程自动化(提交- 测试 - 构建 - 部署 - 集成测试 - 发布) 2. 速度 * trade server服务改为rpc协议实现, 提升调用速度 * 重点提升trade server的指令执行速度, 看能否将最大延迟限制在毫秒级别 3. 可靠性 * 更多的集成测试用例, 提升测试覆盖率 * 支持data agent的热切换 * 自定义日志发送email与dingding通知 * db的高可用 * 支持服务自动重启 4. Fetures * 增加风控模块 * 支持市价单 * 更多的内置事件类型与更多的内置因子 * 策略的热更新 ## 8. Q&A © 允许规范转载