跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
Python算法

基于 QMT 免费获取全市场 Tick 级行情数据及 Python 实现

综述由AI生成介绍如何利用券商提供的 QMT 平台免费获取全市场 Tick 级行情数据。通过订阅推送模式,结合 Python 的 xtquant 库,可实现实时数据监听与历史数据下载。文章提供了环境准备、核心代码示例及历史数据下载方法,并指出了数据缺失和客户端常驻等注意事项,帮助量化开发者构建自主可控的行情系统。

蜜桃汽水发布于 2026/3/26更新于 2026/5/1220 浏览
基于 QMT 免费获取全市场 Tick 级行情数据及 Python 实现

量化开发中,数据源费用往往高于服务器成本。Wind 终端年费高昂,Tushare 积分需充值,Tick 数据源价格不菲。然而,许多用户忽略了券商免费提供的 QMT 平台,其实它可以作为免费、稳定、实时的行情数据中心。

为什么选择 QMT?

在数据获取这条路上,通常有三个选择:

  1. 爬虫:容易被封 IP,数据不稳定,且有法律风险。
  2. 第三方 API (Tushare/JoinQuant):好用但要钱,免费版有各种限制(如延迟、限流)。
  3. 券商 QMT/PTrade:完全免费,速度极快(内网专线),且包含最珍贵的 Tick 级切片数据。

很多券商为了推广量化交易,会向交易所购买 Level-2 行情。只要开通了 QMT 权限(通常门槛在 50 万 -100 万资金量),这些数据对你就是免费开放的。

核心原理:订阅 - 推送模式

QMT 获取数据的逻辑和传统的 request-response 不太一样。它采用的是订阅 (Subscribe) 模式:

  1. 你告诉 QMT:'我要订阅茅台的 Tick 数据'。
  2. QMT 客户端会在后台与券商服务器建立长连接。
  3. 一旦有新成交,QMT 会自动把数据推送到你的本地回调函数里。

这种模式的延迟通常在 毫秒级,非常适合做日内高频策略或盘口分析。

实战演示:搭建本地行情录制器

下面我们将用 Python 编写一个简单的脚本,利用 QMT (MiniQMT) 实时订阅全市场(或指定股票)的 Tick 数据,并保存为 CSV。

1. 环境准备

确保你已经登录了 QMT 客户端(极简模式),并记住了 mini_qmt_path(安装路径)。

from xtquant import xtdata
import pandas as pd
import time
import datetime

# 设定股票列表 (示例:茅台、宁德时代)
stock_list = ['600519.SH', '300750.SZ']
2. 核心代码:数据订阅与回调
def on_data(datas):
    """ 这是回调函数,当有新行情推送时会自动触发 """
    for stock_code in datas:
        data = datas[stock_code]
        # 打印实时数据 (你可以改为存入数据库)
        print(f"[{datetime.datetime.now()}] {stock_code} "
              f"价格:{data[]} 成交量: "
              )



 stock  stock_list:
    xtdata.subscribe_quote(stock, period=, count=-)  
    xtdata.subscribe_quote(stock, period=, count=-)  




()


 :
    
    tick_data = xtdata.get_full_tick(stock_list)
     stock  stock_list:
         stock  tick_data:
            info = tick_data[stock]
            ()
    time.sleep()
'lastPrice'
{data['volume']}
f"买一:{data['bidPrice'][0]} 卖一:{data['askPrice'][0]}"
# 1. 订阅全推数据 (全推模式下,不需要指定具体股票,但这需要券商权限)
# 如果没有全推权限,只能逐个订阅
for
in
'1m'
1
# 订阅 1 分钟 K 线
'tick'
1
# 订阅 Tick
# 2. 绑定回调函数
# 注意:MiniQMT 的数据推送是基于 socket 的,这里直接用 xtdata 的高级接口更简单
# 如果需要更高性能,可以使用 xtdata.get_market_data_ex 配合定时轮询
print
"数据监听已启动,按 Ctrl+C 停止..."
# 3. 阻塞主线程,防止脚本退出
while
True
# 模拟每 3 秒主动拉取一次最新 Tick (轮询模式,适合存数据)
for
in
if
in
print
f"轮询:{stock} 最新价:{info['lastPrice']}"
3
3. 进阶技巧:历史数据下载

除了实时数据,QMT 也是下载历史数据的神器。它的下载速度极快,且不限制流量。

def download_history():
    print("开始下载历史数据...")
    # 下载最近 100 天的 1 分钟 K 线
    xtdata.download_history_data('600519.SH', period='1m', start_time='20240101', end_time='20241231')
    
    # 读取并转为 DataFrame
    data = xtdata.get_market_data(
        field_list=[], 
        stock_list=['600519.SH'], 
        period='1m', 
        start_time='20240101', 
        end_time='20241231'
    )
    df = pd.DataFrame(data['600519.SH']).T
    print(df.head())
    df.to_csv('maotai_1m.csv')

if __name__ == "__main__":
    download_history()

注意事项

虽然 QMT 数据很香,但在实战中有几个常见问题需要注意:

第一,数据缺失问题。 QMT 的历史数据下载是基于 P2P 或券商缓存的,有时候会遇到某一天数据缺失的情况(比如全是 NaN)。

  • 解决方案:下载后务必做一次 dropna() 检查,如果缺失严重,尝试换个时间段重新下载,或者手动去客户端里点一下'补充数据'。

第二,客户端必须常驻。 xtdata 库的所有功能都依赖于 QMT 客户端的运行。如果你把客户端关了,Python 脚本就会立刻报错。

  • 建议:在服务器上跑的时候,不要为了省资源关掉 GUI 界面。

结语

通过 QMT,我们不仅省下了购买数据的费用,更拥有了一套自主可控的实时行情系统。

目录

  1. 为什么选择 QMT?
  2. 核心原理:订阅 - 推送模式
  3. 实战演示:搭建本地行情录制器
  4. 1. 环境准备
  5. 设定股票列表 (示例:茅台、宁德时代)
  6. 2. 核心代码:数据订阅与回调
  7. 1. 订阅全推数据 (全推模式下,不需要指定具体股票,但这需要券商权限)
  8. 如果没有全推权限,只能逐个订阅
  9. 2. 绑定回调函数
  10. 注意:MiniQMT 的数据推送是基于 socket 的,这里直接用 xtdata 的高级接口更简单
  11. 如果需要更高性能,可以使用 xtdata.getmarketdata_ex 配合定时轮询
  12. 3. 阻塞主线程,防止脚本退出
  13. 3. 进阶技巧:历史数据下载
  14. 注意事项
  15. 结语
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • DeepSeek R1 论文解读:从 Reward 设计到 AlphaGo 的启示
  • 计算机视觉基础与实战应用指南
  • 大模型幻觉问题治理:技术体系、工程实践与演进
  • Axios 错误处理的设计与进阶封装,实现网络层面的数据与状态解耦
  • 数据结构:带头双向循环链表详解与实现
  • STM32 温度采样定时器触发配置示例
  • Coze 工作流核心节点实战:逻辑控制、数据处理及多媒体生成
  • Mac Mini M4 本地 AI 模型实战:从 Ollama 到 Stable Diffusion 的配置指南
  • Spring 整合 Hibernate 与 JPA 的配置及源码示例
  • Linux 信号机制深度剖析:从信号捕捉到 SIGCHLD 处理
  • SpringBoot 核心模块 Java 源码规模统计
  • 网络安全行业发展前景与零基础转行指南
  • Python YAML 模块实战:接口测试参数存储与配置
  • LlamaIndex 中构建 RAG 应用完整指南
  • 单片机与 FPGA 通信方案:UART、SPI、并行总线及 EXMC 实现
  • Python 核心应用场景与系统化学习路径详解
  • 基于 YOLO 系列与 SpringBoot 的行人车辆检测系统实现
  • TikTok 数据抓取实战:基于 Python 的无认证方案
  • 图形管线与渲染引擎的 C++ 架构设计:模块化、跨平台与资源驱动
  • WebPShop 插件:Photoshop 支持 WebP 格式的解决方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online