{"id":"46fba9b5-d9d4-4c08-9431-4646f1097598","slug":"qmt-python-bridge","kind":"skill","name":"qmt-python-bridge","summary":"大 QMT 内置 Python 与外部 Python 的只读数据桥，面向 miniQMT / xtquant 数据通道迁移，附部署教程与 AI Agent Skill。/Read-only data bridge between QMT embedded Python and external Python, for miniQMT / xtquant migration. Includes se","owner":"YangSal","repoUrl":"https://github.com/YangSal/qmt-python-bridge","license":"MIT","licenseTier":"permissive","trust":"community","stars":11,"match":null,"fewStars":false,"format":"skill","createdAt":"2026-09-05T08:32:40.000Z","addedAt":"2026-10-30T05:48:32.284Z","logoUrl":"https://avatars.githubusercontent.com/u/44965585?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["data-analytics"],"tags":["miniqmt","qmt","quantitative-finance","xtquant","qmt-bridge"],"runtime":"python","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-30T05:48:44.773Z","sample":false,"url":"https://conduits.dev/tools/qmt-python-bridge","language":"Python","transports":["stdio"],"install":{"pypi":"bigqmt-data-bridge"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# QMT Python Bridge\n\n让外部 Python 程序通过大 QMT 内置 Python 获取行情和历史数据，保留外部环境中的 pandas、研究工具及存储方式。\n\n项目提供历史数据文件桥和本机实时行情内存通道。QMT 侧负责调用数据接口，外部程序负责数据处理、校验与保存，也可以生成统一入口，让历史与实时服务共用一个 QMT 策略。\n\n**实验性 / Alpha · 数据只读 · 不提供交易功能**\n\nGitHub：[YangSal/qmt-python-bridge](https://github.com/YangSal/qmt-python-bridge)\n\n发行包名：`bigqmt-data-bridge` · Python 导入名：`bigqmt_bridge`\n\n## 主要功能\n\n| 功能 | 说明 |\n|---|---|\n| 历史数据读取 | 从 QMT 缓存读取日线、1 分钟、5 分钟及 Tick，外部返回 pandas DataFrame |\n| 自动 K 线下载 | 显式启用后，下载股票、ETF、指数已结束交易日的日线、1 分钟和 5 分钟数据，并校验读回结果 |\n| 批量采集与续采 | 按指定证券或 QMT 板块成员建立采集计划，分片执行，保存进度、错误及文件摘要 |\n| 复权事件 | 获取事件日期及原生七字段数据；K 线归档默认保持不复权 |\n| 实时行情 | 指定证券订阅、最新快照轮询、退订与健康状态查询，通过本机命名管道传输 |\n| 磁盘归档 | 外部消费者将历史 K 线和收到的实时快照保存为 gzip JSONL，不依赖数据库 |\n| 其他只读接口 | 提供合约、板块、指数权重及财务数据的有限接口，具体可用性取决于 QMT 环境与权限 |\n\n本项目提供部分 `xtdata` 风格接口，不是完整的 `xtquant` 替代品，也不透传任意代码或交易指令。\n\n## 工作原理\n\n```text\n外部 Python                              大 QMT 内置 Python\n数据处理、校验、归档                       受控的数据接口调用\n        │                                        │\n        ├── 历史：文件请求、持久任务、结果文件 ────┤\n        └── 实时：本机命名管道、内存消息 ──────────┘\n```\n\n历史请求和缓存可以保存在磁盘。实时行情的桥接通信只使用内存通道；外部消费者接收后，可按需要另行归档。\n\n自动下载任务保留任务 ID 和处理状态，支持中断后对账续采。外部请求超时不能取消已经进入 QMT 的原生调用，不应删除未确认任务后盲目重发。\n\n## 环境要求\n\n- Windows 与已获授权、支持内置 Python 策略的大 QMT 客户端。\n- 外部 Python 3.10+，主要依赖为 pandas。\n- 内置端以 Python 3.6 为兼容目标，不向 QMT 复制外部二进制模块或安装项目依赖。\n- 外部客户端与 QMT 在同一台电脑运行；接口和数据权限由券商客户端管理。\n\n## 安装\n\n在项目根目录使用外部 Python 安装：\n\n```powershell\npython --version\npython -m venv .venv\n.\\.venv\\Scripts\\python.exe -m pip install -e .\n.\\.venv\\Scripts\\python.exe -m bigqmt_bridge --help\n```\n\n也可以使用已有 conda 或虚拟环境，无需重复创建环境。不要在 QMT 内置 Python 中执行安装命令，也不要把外部 `site-packages` 加入内置解释器路径。\n\n## 选择使用方式\n\n| 使用方式 | 入口与配置 | 使用文档 |\n|---|---|---|\n| 读取已准备的历史缓存 | `qmt_bridge/strategy.py`、`config.example.json`，默认 `cache_only` | [缓存读取与配置](docs/cache-reading.md) |\n| 自动下载历史 K 线 | `qmt_bridge/strategy_auto.py`、`config.auto.example.json`，显式启用下载 | [自动下载指南](docs/automatic-download.md) |\n| 历史批量采集与复权归档 | `python -m bigqmt_bridge.market_collector`、`config.market.example.json` | [采集计划与续采](docs/market-collector.md) |\n| 实时行情或历史与实时统一服务 | 通过 `bigqmt_bridge.memory_session` 生成独立运行包和 QMT 启动脚本 | [部署与使用](docs/memory-transport.md)、[行情接口](docs/market-memory.md) |\n\nQMT 侧策略应取消“启动本地python”，编译后选择“运行”，不是“回测”。源码目录、桥接运行目录和消费者归档目录分别配置，不要让多个策略同时占用同一历史运行目录。\n\n实时通道首次部署需按对应文档完成环境与通道检查。升级已加载的内置模块应按部署流程切换版本，修改磁盘源码不会自动更新运行中的 QMT 策略。\n\n## Python 调用示例\n\n准备 QMT 历史缓存并配置 `config.local.json` 后：\n\n```python\nfrom bigqmt_bridge.backend import create_backend\nfrom bigqmt_bridge.config import load_config\n\nclient = create_backend(load_config('config.local.json'))\nframes = client.get_market_data_ex(\n    field_list=['time', 'open', 'high', 'low', 'close', 'volume', 'amount'],\n    stock_list=['000001.SZ'],\n    period='1d',\n    start_time='20260904',  # 替换为需要读取且已准备数据的日期\n    end_time='20260904',\n    count=-1,\n    dividend_type='none',\n    subscribe=False,\n    fill_data=False,\n)\nprint(frames['000001.SZ'])\n```\n\n返回值为 `{证券代码: DataFrame}`，`time` 使用 UTC 毫秒。业务日期按北京时间处理，避免依赖机器本地时区。调用异常通过 `bigqmt_bridge.QmtDataError` 报告，不应把接口失败解释为空交易日或停牌。\n\n更多入口见[小批量历史归档](docs/collector.md)和[接口源码](bigqmt_bridge/backend.py)。\n\n## 功能边界\n\n- 自动下载只支持已结束交易日的日线、1 分钟和 5 分钟 K 线，默认关闭；不包含 Tick、财务或指数权重自动下载。\n- 实时采用 `poll_snapshot` 最新快照轮询，不保证捕获两次轮询之间的每次行情更新，不提供完整逐笔增量流。\n- 当前实时单批请求与累计订阅均最多 10 只证券。这是本项目的实现限制，不是 QMT 官方容量声明；暂不支持全市场实时采集。\n- 统一入口中的历史与实时调用串行执行，同步历史调用可能延迟实时响应，不提供硬实时延迟保证。\n- 财务、完整合约等接口可能受内置依赖、字段范围及账户权限影响；不同券商环境需要分别确认兼容性。\n- 不提供下单、撤单、账户管理或自动生产切换。运行目录、认证配置和原始行情应保留在本机，不上传公开仓库。\n\n## 项目结构\n\n```text\nbigqmt_bridge/             外部客户端、采集器、命名管道服务与 CLI\nqmt_bridge/               QMT 内置策略、worker、文件与内存协议\nconfig*.example.json      配置样例\nskills/                   仓库配套 Skill\nexperiments/              独立环境检查与验证工具\ntests/                    自动化测试\ndocs/                     使用指南、接口说明、设计与验证记录\nLICENSE                   MIT 许可证\n```\n\n开发环境安装与测试：\n\n```powershell\npython -m pip install -e \".[test]\"\npython -m pytest tests/ experiments/qualification_v1/test_qualification.py -q\n```\n\n## 许可证\n\n项目沿用原作者的 [MIT 许可证](LICENSE)，以源码形式交付。代码许可不涵盖第三方行情和券商软件；项目不附带 QMT、券商程序、账号或真实行情，也不提供权限绕过。\n\n接口背景可参阅迅投官方[内置 Python 文档](https://dict.thinktrader.net/innerApi/start_now.html)。\n"}