easyquant-量化交易框架


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           # 使用文档

快速使用

  1. 环境准备:Python 3.5+,执行 pip install -r requirements.txt 安装依赖;
  2. 账户配置:在对应券商的 json 文件(如 ht.json)中填写账户信息;
  3. 启动运行:执行 python test.py 快速启动;
  4. 策略开发:参考 strategies 下的 Demo,编写继承 StrategyTemplate 的策略类,放入 strategies 目录即可被加载。

核心依赖

核心依赖包括 easytrader(交易接口)、easyquotation(行情接口)、logbook(日志)、aiohttp(网络请求)、pytz(时区)等,完整清单见 requirements.txt

扩展方向

  • 自定义行情源:继承 BaseEngine 实现自定义行情推送逻辑;
  • 多策略组合:在 strategies 目录下编写多个策略,引擎会自动加载;
  • 交易逻辑扩展:基于 easytrader 的接口封装更复杂的下单/风控逻辑。

Github