一个基于迅投QMT的量化交易扩展工具包,提供简化的API接口和丰富的学习实例。
- 简化API: 封装复杂的QMT接口,提供易用的Python API
- 真实交易: 支持通过EasyXT接口进行真实股票交易
- 数据获取: 集成qstock、akshare等多种数据源
- 技术指标: 内置常用技术指标计算
- 策略开发: 提供完整的量化策略开发框架
- 学习实例: 丰富的教学案例,从入门到高级
- 64 位 Python(建议 3.9+)
- 已安装并登录的 QMT 客户端(标准版或迷你版)
- Windows 系统(QMT 限制)
推荐固定到稳定标签 v1.0.0:
# 可选:创建虚拟环境
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip setuptools wheel
pip install "git+https://github.com/quant-king299/[email protected]"国内镜像(依赖走镜像,源码仍从 GitHub 拉取):
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple "git+https://github.com/quant-king299/[email protected]"验证安装:
python - << 'PY'
import easy_xt
print("easy_xt import OK:", easy_xt.__name__)
from easy_xt import get_api
api = get_api()
print("get_api OK:", type(api))
PY说明:pip 仅安装 Python 包,不会安装 QMT/xtquant,本地需自备。
必装的 xtquant 特殊版本(强制):请到以下 Release 页面下载附件
xtquant.rar,解压后覆盖到本项目根目录下的xtquant/目录(若不存在则直接解压到根目录会创建该目录):https://github.com/quant-king299/EasyXT/releases/tag/v1.0.0
为什么必须使用这一份 xtquant:券商侧随各自版本发布,不会与迅投官方保持一致节奏;不同券商包的 xtquant 版本、接口和行为差异会导致本项目运行报错。为确保一致性与稳定性,本项目仅支持上述 Release 附件中的 xtquant 版本,使用高/低其它版本都可能出现连接失败、字段缺失、接口不兼容等错误。
一键下载并解压(PowerShell,推荐):
$url = "https://github.com/quant-king299/EasyXT/releases/download/v1.0.0/xtquant.rar" $dest = "$PWD\xtquant.rar" Invoke-WebRequest -Uri $url -OutFile $dest -UseBasicParsing if (Test-Path "$env:ProgramFiles\7-Zip\7z.exe") { & "$env:ProgramFiles\7-Zip\7z.exe" x -y "$dest" -o"$PWD" } elseif (Get-Command 7z.exe -ErrorAction SilentlyContinue) { 7z x -y "$dest" -o"$PWD" } else { Write-Host "未检测到 7-Zip,请手动解压 $dest 到项目根目录(或安装 7-Zip 后重试)" } Remove-Item $dest -ErrorAction SilentlyContinue # 验证目录:应出现 $PWD\xtquant 目录 if (Test-Path "$PWD\xtquant") { Write-Host "xtquant 安装完成" } else { Write-Host "xtquant 目录未找到,请检查解压是否成功" }注:PowerShell 无法原生解压 .rar,需本机已安装 7-Zip(https://www.7-zip.org/)。如无 7-Zip,请手动解压
xtquant.rar到项目根目录。
git clone https://github.com/quant-king299/EasyXT.git
cd EasyXT
pip install -r requirements.txt编辑:strategies/xueqiu_follow/config/unified_config.json
关键键名:settings.account.qmt_path(若同时存在 account.qmt_path,两处保持一致)。
示例(Windows JSON 需双反斜杠或用正斜杠):
{
"settings": {
"account": {
"qmt_path": "D:\\国金证券QMT交易端\\userdata_mini",
"account_id": "你的交易账号ID"
}
}
}如何判断“正确目录”:
- 必须是 QMT 的
userdata或userdata_mini目录本身 - 目录内通常包含
xtquant,log,cfg等子目录 - 常见错写:
0MT(应为QMT)、userdata mini(应为userdata_mini)
from easy_xt import EasyXT
# 创建API实例
api = EasyXT()
# 初始化数据服务
api.init_data()
# 获取股票价格
data = api.get_price('000001.SZ', count=100)
print(data.head())# 初始化交易服务
api.init_trade(USERDATA_PATH)
api.add_account(ACCOUNT_ID)
# 买入股票
order_id = api.buy(
account_id=ACCOUNT_ID,
code='000001.SZ',
volume=100,
price_type='market'
)方式一:批处理脚本(Windows)
.\strategies\xueqiu_follow\启动雪球跟单.bat方式二:Python 入口脚本
python strategies\xueqiu_follow\start_xueqiu_follow_easyxt.py- 01_基础入门.py - 学习基本的数据获取和API使用
- 02_交易基础.py - 掌握基础交易操作
- 05_数据周期详解.py - 了解不同数据周期的使用
- 03_高级交易.py - 学习高级交易功能
- 04_策略开发.py - 开发量化交易策略
- 06_扩展API学习实例.py - 掌握扩展功能
- 07_qstock数据获取学习案例.py - 真实数据获取
- 08_数据获取与交易结合案例.py - 数据与交易结合
- 10_qstock真实数据交易案例_修复交易服务版.py - 完整实战案例
miniqmt扩展/
├── easy_xt/ # 核心API模块
│ ├── __init__.py
│ ├── api.py # 主API接口
│ ├── data_api.py # 数据接口
│ ├── trade_api.py # 交易接口
│ ├── advanced_trade_api.py # 高级交易接口
│ └── utils.py # 工具函数
├── 学习实例/ # 学习案例
│ ├── 01_基础入门.py
│ ├── 02_交易基础.py
│ ├── 03_高级交易.py
│ └── ...
├── config/ # 配置文件
│ ├── config_template.py
│ └── config.py
├── data/ # 数据存储目录
├── logs/ # 日志目录
├── xtquant/ # QMT相关文件
├── gui_app/ # GUI应用(可选)
├── requirements.txt # 依赖列表
├── README.md # 项目说明
└── .gitignore # Git忽略文件
- 投资风险: 量化交易存在投资风险,请谨慎操作
- 测试环境: 建议先在模拟环境中测试策略
- 资金管理: 合理控制仓位,设置止损止盈
- 合规要求: 遵守相关法律法规和交易所规则
欢迎提交Issue和Pull Request!
- Fork项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启Pull Request
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情
- 项目主页: https://github.com/quant-king299/EasyXT
- 问题反馈: https://github.com/quant-king299/EasyXT/issues
- 网站: https://www.ptqmt.com
- 初始版本发布
- 完整的EasyXT API封装
- 丰富的学习实例
- 修复交易服务初始化问题
- 诊断工具(tools/)
tools/debug_qmt_api.py:检查 easy_xt API 结构,枚举 trade/data/account 能力并做基础调用验证tools/debug_data_api.py:直连 DataAPI 验证 connect/xtquant 可用性及行情、列表获取
- 演示脚本(tools/demos/)
tools/demos/P1-006_config_demo.py:配置系统演示tools/demos/P1-009_monitor_demo.py:监控告警演示tools/demos/P1-010_validator_demo.py:配置校验器演示tools/demos/P1-011_scheduler_demo.py:任务调度器演示(定时、周期、优先级、并发、重试、统计)tools/demos/P2-011_performance_demo.py:性能/压测演示tools/demos/P2-012_error_handler_demo.py:错误处理与恢复机制(重试/降级/优雅退化、断路器)tools/demos/P2-013_log_manager_demo.py:日志管理(配置、检索/过滤、统计分析、导出)tools/demos/quick_start_monitor.py:监控告警系统快速启动(演示用)tools/demos/find_current_holdings_api.py:雪球接口探测(确定“当前持仓”来源)
运行示例(PowerShell):
# 诊断脚本
cd "c:\Users\Administrator\Desktop\miniqmt扩展\tools"
python .\debug_qmt_api.py
python .\debug_data_api.py
# 演示脚本
cd "c:\Users\Administrator\Desktop\miniqmt扩展\tools\demos"
python .\P1-006_config_demo.py
python .\P1-009_monitor_demo.py
python .\P1-010_validator_demo.py
python .\P1-011_scheduler_demo.py
python .\P2-011_performance_demo.py
python .\P2-012_error_handler_demo.py
python .\P2-013_log_manager_demo.py
python .\quick_start_monitor.py
python .\find_current_holdings_api.py依赖说明:需预先安装“xtquant 特殊版本”,并按 README 配置(或设置环境变量 XTQUANT_PATH);推荐通过 pip install -e .\easy_xt 可编辑安装后再运行脚本。
- 标准启动入口(独立服务):
python start_monitor.py --config config/monitor_config.json
# 查看状态
python start_monitor.py --status- 演示快速启动:
tools/demos/quick_start_monitor.py - 相关组件:
easy_xt/realtime_data/monitor_service.py
- 快速启动:
# 批处理脚本(Windows)
.\strategies\xueqiu_follow\启动雪球跟单.bat
# 或 Python 入口
python strategies\xueqiu_follow\start_xueqiu_follow_easyxt.py- 配置目录:
strategies/xueqiu_follow/config/ - 示例/样本数据:
strategies/xueqiu_follow/fixtures/
- Q: 连接返回 -1 / “交易服务连接失败”?
- A: 99% 为
qmt_path路径错误:请指向本机userdata或userdata_mini目录;避免0MT与userdata mini等拼写错误;确保 QMT 已登录、Python 与 QMT 权限一致(管理员/普通一致)。
- A: 99% 为
- 快速启动 QKA 服务端:
python strategies\jq2qmt\run_qka_server.py --account YOUR_ACCOUNT_ID --mini-qmt-path "C:\\Path\\To\\miniQMT" --host 127.0.0.1 --port 8000- 若使用本地 xtquant 解压目录,设置环境变量:
setx XTQUANT_PATH "C:\\xtquant_special"免责声明: 本项目仅供学习和研究使用,不构成投资建议。使用本项目进行实际交易的风险由用户自行承担。
- 关注公众号:
- 欢迎加入QQ交流群:492287081(或扫码加入)