easyquant 仓库介绍
easyquant 是一个基于 easytrader(交易)和 easyquotation(行情)构建的量化交易框架,借鉴了 vnpy 的事件引擎设计思想,主打轻量、易扩展,适配国内券商账户和免费行情源,适合快速搭建量化交易策略。
核心特性
1. 交易能力
- 支持的交易渠道:华泰、佣金宝、银河证券实盘账户,以及雪球模拟盘;
- 账户配置:通过
ht.json(华泰)、yjb.json(佣金宝)、yh.json(银河)、xq.json(雪球)填写账户信息(如用户名、加密密码等),适配 easytrader 的配置规范; - 无交易模式:也可选择不配置券商账户,仅运行行情和策略逻辑。
2. 行情能力
- 默认行情:新浪免费全市场实时行情,1秒推送一次;
- 扩展行情:支持集思路分级基金行情、leverfun(lf)免费十档行情,可通过
easyquotation对接更多行情源; - 自定义行情引擎:支持开发/接入自定义行情引擎,且可同时添加多个行情来源。
3. 事件驱动与策略体系
- 事件引擎:基于事件驱动设计,行情推送、时钟触发均以“事件”形式分发,策略按需监听事件;
- 策略开发:
- 策略文件放在
strategies目录下,继承StrategyTemplate基类即可开发; - 核心方法:
strategy()(行情推送时触发,接收全市场股票行情字典)、clock()(时钟事件触发,支持开市/收市/分钟级间隔等); - 自定义能力:支持自定义日志输出、策略初始化(
init())、关闭前清理(shutdown()); - 动态重载:支持策略文件的动态加载/卸载,无需重启引擎即可更新策略逻辑。
4. 辅助能力
- 时钟引擎:支持交易时段的定时触发(如盘尾14:56:30)、间隔触发(如1.5分钟间隔),可判断当前是否为交易时间;
- 优雅关机:支持注册“前置/主/后置”关机钩子函数,捕获 SIGINT/SIGTERM 等信号,保证策略、引擎优雅退出;
- Redis 工具:内置
RedisIo类,封装 Redis 常用操作(键值、列表、清理等); - 日志:默认日志处理,也支持策略自定义日志输出路径/方式。
仓库结构
easyquant/
├── easyquant/ # 核心代码目录
│ ├── easydealutils/ # 辅助工具(如Redis操作)
│ ├── push_engine/ # 行情推送引擎(时钟/行情基类/自定义引擎)
│ ├── main_engine.py # 主引擎(事件/行情/交易/策略加载核心)
│ └── ...
├── strategies/ # 策略目录(放自定义策略,提供Demo示例)
│ ├── 策略1_Demo.py
│ └── 策略2_Demo.py
├── custom/ # 自定义引擎示例(如FixedMainEngine/FixedDataEngine)
├── ht.json/yh.json/... # 券商账户配置文件
├── test.py # 快速启动入口
├── requirements.txt # 依赖清单
└── README.md # 使用文档
快速使用
- 环境准备:Python 3.5+,执行
pip install -r requirements.txt安装依赖; - 账户配置:在对应券商的 json 文件(如 ht.json)中填写账户信息;
- 启动运行:执行
python test.py快速启动; - 策略开发:参考
strategies下的 Demo,编写继承StrategyTemplate的策略类,放入strategies目录即可被加载。
核心依赖
核心依赖包括 easytrader(交易接口)、easyquotation(行情接口)、logbook(日志)、aiohttp(网络请求)、pytz(时区)等,完整清单见 requirements.txt。
扩展方向
- 自定义行情源:继承
BaseEngine实现自定义行情推送逻辑; - 多策略组合:在
strategies目录下编写多个策略,引擎会自动加载; - 交易逻辑扩展:基于
easytrader的接口封装更复杂的下单/风控逻辑。