EasyXT可转债数据下载完全指南:从0到1搭建量化数据库
EasyXT项目介绍
EasyXT是基于miniqmt中xtquant的二次开发封装库,旨在简化xtquant的使用,提供更友好的API接口。通过统一的接口设计、智能参数处理和完善的错误处理,让量化交易开发变得更加简单高效。
项目地址: https://github.com/quant-king299/EasyXT
🛠️ 环境准备
系统要求
-
操作系统:Windows 10/11(PowerShell 7) -
Python:3.9+(建议 3.10+),并将 Python 加入 PATH
ptrade/QMT账号获取指导
📱 还没有ptrade/QMT账号的朋友,可以扫码加我微信,全程指导搞定Ptrade/QMT账号!

搞量化交易,最头疼的是什么?不是策略写不出来,而是数据下不到!
今天给大家介绍一个超实用的可转债数据下载工具,让你轻松搞定可转债数据,专注策略开发!
💡 为什么需要这个工具?
做可转债量化交易,第一步就是获取数据。但传统方式有这些问题:
❌ 手动下载:一个个去网站下载,费时费力 ❌ 数据不全:很多平台数据缺失,影响回测质量 ❌ 更新麻烦:每天手动更新,容易忘记 ❌ 代码错误:使用预留代码或已退市代码,导致策略出错
我们的解决方案: ✅ 自动从QMT实时获取最新可转债列表 ✅ 自动过滤无效代码(预留、退市等) ✅ 一键下载历史数据 ✅ 智能更新,只下载缺失部分
🎯 核心功能介绍
1️⃣ 实时获取可转债列表
动态更新,拒绝死数据!
-
直接从QMT实时获取约321只可转债 -
自动包含新上市的可转债 -
自动过滤已退市的可转债 -
失败率接近0%
2️⃣ 多种下载方式
批处理文件:适合新手和快速操作GUI界面:适合日常智能更新命令行:适合自动化脚本
3️⃣ 智能数据管理
-
自动下载到QMT本地 -
一键导入到DuckDB数据库 -
支持数据验证和查看
📖 快速开始(3步搞定)
第1步:测试连接
适合人群:第一次使用,想快速测试
操作方法:
-
找到文件: tools/cb_test.bat -
双击运行 -
等待下载完成
预期结果:
正在从QMT获取可转债列表...获取成功!当前共有 321 只可转债开始测试下载(4只样本)...✅ 113050.SH - 南银转债✅ 113061.SH - 长江转债✅ 127045.SZ - 海澜转债✅ 128136.SZ - 立讯转债下载完成!数据已保存到QMT本地目录
第2步:首次下载
适合人群:第一次使用,需要建立完整数据库
操作方法:
-
找到文件: tools/cb_quick.bat -
双击运行 -
等待下载完成(约5-10分钟)
下载内容:
-
2024年全年数据 -
约321只可转债 -
每只约200-300个交易日
预期结果:
开始下载可转债数据...时间范围:2024-01-01 至 2024-12-31可转债数量:321只下载进度:[████████████████████] 100%✅ 下载完成!成功:321只失败:0只数据已保存到 QMT本地目录
第3步:导入数据库
适合人群:所有用户(必须在第2步之后执行)
操作方法:
-
打开GUI界面
python rungui.py -
切换到「数据管理」标签页
-
找到顶部标签栏 -
点击「数据管理」 -
点击「📥 下载可转债数据」按钮
-
系统自动从QMT本地读取数据 -
自动导入到DuckDB数据库 -
显示导入进度 -
等待导入完成
正在导入可转债数据...进度:[████████████] 100%✅ 导入完成!总记录数:约80,000条数据表:convertible_bonds
🔄 日常更新(推荐)
方式1:GUI智能更新(最推荐)⭐
为什么推荐:
-
✅ 智能检测每只股票最新日期 -
✅ 只下载真正缺失的部分 -
✅ 避免重复下载,节省时间 -
✅ 自动补充到今天 -
✅ 最节省时间和资源
操作步骤:
-
打开GUI
python rungui.py -
切换到「数据管理」标签页
-
点击「🔄 更新缺失数据」按钮
-
系统自动分析缺失数据 -
只下载需要补充的部分 -
大幅减少下载时间 -
查看更新日志
正在分析数据缺失情况...发现缺失数据:- 113050.SH:缺失2天- 127045.SZ:缺失1天...开始下载缺失数据...进度:[████████] 100%✅ 更新完成!下载记录:323条耗时:约30秒
适用场景:
-
每天收盘后更新 -
周末补齐本周数据 -
长时间未使用后快速更新
方式2:批处理定期更新
适合人群:喜欢批处理,需要手动控制更新范围
操作步骤:
-
找到文件:
tools/cb_update_smart.bat -
双击运行
-
选择更新范围
请选择更新范围:[1] 最近1个月[2] 最近3个月(推荐)[3] 最近6个月[4] 全部历史请输入选项(1-4): -
选择推荐选项2
已选择:最近3个月开始时间:2024-10-22结束时间:2025-01-22正在下载...进度:[████████] 100%✅ 更新完成!
注意事项: ⚠️ 这个方式会重新下载指定时间段的所有数据,不是增量更新 ⚠️ 适合快速补数据,不适合日常频繁使用
💻 高级用法:命令行
基本用法
# 进入项目目录cd C:\Users\你的用户名\Desktop\miniqmt扩展# 下载全部数据(默认最近1年)python tools/download_all_convertible_bonds.py
指定日期范围
# 下载2024年全年数据python tools/download_all_convertible_bonds.py --start-date 20240101 --end-date 20241231# 下载最近3个月数据python tools/download_all_convertible_bonds.py --start-date 20241001 --end-date 20250101
测试模式
# 只下载4只样本,测试连接python tools/download_all_convertible_bonds.py --demo
强制重新下载
# 强制重新下载(覆盖已有数据)python tools/download_all_convertible_bonds.py --force
适用场景:
-
自动化脚本 -
定时任务(Windows计划任务) -
服务器部署
📊 数据验证
如何验证数据是否正确下载?
方法1:GUI查看
-
打开GUI:
python rungui.py -
切换到「数据查看」标签页
-
输入可转债代码(如
113061.SH) -
点击「查询」按钮
-
查看数据:
查询结果:113061.SH - 长江转债日期 开盘 最高 最低 收盘 成交量2025-01-22 125.50 126.80 125.10 126.20 5,2302025-01-21 124.80 125.90 124.50 125.60 4,8902024-01-02 120.10 121.50 119.80 121.20 6,120...✅ 数据正常,共250条记录
方法2:命令行查询
# 打开Python命令行python# 执行查询import duckdbconn = duckdb.connect('D:/StockData/stock_data.ddb')# 查询某只可转债result = conn.execute(""" SELECT COUNT(*) as count, MIN(date) as start_date, MAX(date) as end_date FROM convertible_bonds WHERE stock_id = '113061.SH'""").fetchone()print(f"记录数:{result[0]}")print(f"起始日期:{result[1]}")print(f"结束日期:{result[2]}")# 预期输出:# 记录数:250# 起始日期:2024-01-02# 结束日期:2025-01-22
⚠️ 常见问题FAQ
Q1:为什么获取到的可转债数量不是固定的?
A:因为是从QMT实时获取,数量会动态变化:
-
新上市可转债会增加 -
已退市可转债会减少 -
当前约321只(2025年1月)
优势:保证数据都是真实有效的,不会有无效代码!
Q2:下载失败怎么办?
A:按以下步骤排查:
第1步:检查QMT是否启动
确认QMT软件已启动并登录可以看到行情数据正常显示
第2步:检查网络连接
确认网络连接正常可以访问互联网
第3步:查看错误日志
查看运行窗口的错误信息常见错误:- 连接QMT失败 → 检查QMT是否启动- 网络超时 → 检查网络连接- 数据为空 → 可能是临时停牌可转债
第4步:重新下载
使用 --force 参数强制重新下载python tools/download_all_convertible_bonds.py --force
Q3:可以直接用GUI下载吗?
A:可以!而且推荐使用GUI!
GUI会自动:
-
使用相同的逻辑获取可转债列表 -
从QMT本地读取数据 -
导入到DuckDB数据库 -
验证数据完整性
优势:一键完成,无需手动操作!
Q4:下载的数据保存在哪里?
A:分两个位置:
第1步:QMT本地目录
QMT安装目录\userdata_mini\backups\例如:D:\QMT\userdata_mini\backups\
第2步:DuckDB数据库
D:/StockData/stock_data.ddb
流程:
-
先下载到QMT本地 -
再通过GUI导入到DuckDB -
删除QMT本地文件可节省空间
Q5:需要多久更新一次数据?
A:根据使用频率:
高频交易:每天收盘后更新
-
使用GUI「更新缺失数据」 -
只下载当天数据,约30秒
日内交易:盘中实时更新
-
使用GUI「更新缺失数据」 -
每小时更新一次
低频交易:每周更新一次
-
使用GUI「更新缺失数据」 -
补齐本周缺失数据
回测研究:不定期更新
-
根据需要更新 -
使用GUI智能更新
🎓 最佳实践
推荐的数据管理流程
首次使用:
第1天:运行 cb_test.bat(测试)第2天:运行 cb_quick.bat(下载2024年全年)第3天:GUI导入到DuckDB
日常使用:
每天收盘后:1. 打开GUI2. 点击「更新缺失数据」3. 等待30秒完成
周末补数据:
每周五晚上:1. 打开GUI2. 点击「更新缺失数据」3. 自动补齐本周缺失
长时间未使用:
时隔1个月以上:1. 打开GUI2. 点击「更新缺失数据」3. 自动补齐所有缺失
📈 技术细节
数据获取方式
优先级顺序:
-
QMT板块实时获取(推荐)
-
包含最新上市可转债 -
动态更新 -
数据最准确 -
预定义列表(备用)
-
当QMT连接失败时使用 -
包含常见可转债 -
可能缺少最新上市
代码验证机制
自动过滤以下无效代码:
-
❌ 尚未发行的预留代码 -
❌ 已退市的可转债 -
❌ 暂停交易的代码 -
❌ 其他无法获取数据的代码
预期结果:
-
获取数量:约321只(2025年1月) -
成功率:接近100% -
失败数量:0-5只(临时停牌等)
数据格式
下载的数据包含:
-
日期、开盘价、最高价、最低价、收盘价 -
成交量、成交额 -
涨跌幅、换手率
数据频率:日K线数据来源:QMT实时行情数据质量:与QMT完全一致
💡 总结
核心要点:
✅ 首次使用:cb_test.bat → cb_quick.bat → GUI导入 ✅ 日常更新:GUI「更新缺失数据」(最推荐) ✅ 数据验证:GUI数据查看或命令行查询 ✅ 常见问题:检查QMT连接、查看错误日志
优势:
-
🚀 快速:5分钟建立完整数据库 -
🎯 准确:实时QMT数据,失败率接近0% -
🔄 智能:自动更新,只下载缺失部分 -
💪 稳定:自动过滤无效代码
立即开始:
# 1. 测试连接双击 tools/cb_test.bat# 2. 下载2024年数据双击 tools/cb_quick.bat# 3. 导入数据库python rungui.py → 数据管理 → 下载可转债数据# 4. 日常更新python rungui.py → 数据管理 → 更新缺失数据
📞 获取帮助
遇到问题?
-
查看项目文档: docs/TROUBLESHOOTING.md -
提交Issue到GitHub仓库 -
加入量化交流群讨论
项目地址:https://github.com/quant-king299/EasyXT
🎉 恭喜!你已经掌握了EasyXT可转债数据下载的完整流程!
现在可以专注于策略开发,让数据不再是阻碍!
别忘了点赞、在看、分享三连哦! ❤️
📱 关注我们
欢迎扫码持续关注公众号,会持续分享
🔍 公众号名称: 王者quant📚 分享内容: 量化交易、Python编程、投资策略🎯 更新频率: 持续更新,干货满满
通过公众号您可以获得:
-
📈 最新的量化交易策略分享 -
💻 Python量化编程技巧 -
📊 市场分析和投资心得 -
🚀 EasyXT功能更新和使用技巧 -
💡 量化交易实战案例
本教程仅供学习参考,实际交易请谨慎操作!
夜雨聆风