首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >QMT如何获取行情数据

QMT如何获取行情数据

作者头像
子晓聊技术
发布2026-04-23 13:32:19
发布2026-04-23 13:32:19
2070
举报
文章被收录于专栏:子晓AI量化子晓AI量化

昨天星球同学问我,怎么通过QMT获取行情数据。 这里说明下, QMT分为大QMT 和miniQMT(独立交易) 2个版本。

先说下QMT 行情数据基础概念

QMT行情数据主要分为三种,包括本地数据全推数据订阅数据

  1. 本地数据: 指下载到本地的行情数据加密文件。包括历史数据,适合回测模式使用,对应python接口为get_market_data_ex(subscribe=False) 在新窗口打开
  2. 全推数据: 指客户端启动后, 自动接收,更新的全市场最新数据快照, 包括日线的开高低收,成交量成交额,与五档盘口(在行情界面选择了五档行情时可用五档 具体见行情常规问题3)。支持取全市场品种, 只有最新值,没有历史值,服务器对交易所下发的数据即时转发,打包增量部分发送给下游客户端。可以用get_full_tick一次性取出当前最新值,也可以用subscribe_whole_quote注册回调函数,每次处理增量的部分。 对应python接口为get_full_tick在新窗口打开,subscribe_whole_quote 在新窗口打开
  3. 订阅:指向行情服务器订阅指定品种行情, 共有四种周期(分笔 1分钟 5分钟 日线),可以订阅当日数据,当天以前的需要用 down_history_data下. 订阅有最大数量限制(例如:假设最大数量限制为300个,则可以单独订阅日线300个,若同时订阅日线和五分钟 则各150个),对应python接口为subscribe_quote在新窗口打开和get_market_data_ex(subscribe=True,)在新窗口打开其中,使用get_market_dataget_market_data_ex(subscribe=True,)时客户端会自动订阅传入的品种,不需要额外调用subscibe_quote,但这种方式订阅的品种没有订阅号,无法手动反订阅,只能通过停止策略释放可订阅数。

这里以大QMT举例, 大QMT有内置函数

代码语言:javascript
复制
# coding:gbk

def init(C):
  start_date = '20231001'# 格式"YYYYMMDD",开始下载的日期,date = ""时全量下载
  end_date = "" 
  period = "1d" 

  need_download = 1  # 取数据是空值时,将need_download赋值为1,确保正确下载了历史数据

  code_list = ["000001.SZ", "600519.SH"] # 股票列表

  if need_download: # 判断要不要下载数据, gmd系列函数都是从本地读取历史数据,从服务器订阅获取最新数据
    my_download(code_list, period, start_date, end_date)

  ############ 仅获取历史行情 #####################
  subscribe = False # 设置订阅参数,使gmd_ex仅返回本地数据
  count = -1 # 设置count参数,使gmd_ex返回全部数据
  data1 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe)

  ############ 仅获取最新行情 #####################
  subscribe = True # 设置订阅参数,使gmd_ex仅返回最新行情
  count = 1 # 设置count参数,使gmd_ex仅返回最新行情数据
  data2 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe, count = 1) # count 设置为1,使返回值只包含最新行情

  ############ 获取历史行情+最新行情 #####################
  subscribe = True # 设置订阅参数,使gmd_ex仅返回最新行情
  count = -1 # 设置count参数,使gmd_ex返回全部数据
  data3 = C.get_market_data_ex([],code_list,period = period, start_time = start_date, end_time = end_date,subscribe = subscribe, count = -1) # count 设置为-1,使返回值包含最新行情和历史行情


  print(data1[code_list[0]].tail())# 行情数据查看
  print(data2[code_list[0]].tail())
  print(data3[code_list[0]].tail())

def handlebar(C):
  return


def my_download(stock_list,period,start_date = '', end_date = ''):
  '''
  用于显示下载进度
  '''
  if "d" in period:
    period = "1d"
  elif "m" in period:
    if int(period[0]) < 5:
      period = "1m"
    else:
      period = "5m"
  elif "tick" == period:
    pass
  else:
    raise KeyboardInterrupt("周期传入错误")


  n = 1
  num = len(stock_list)
  for i in stock_list:
    print(f"当前正在下载{n}/{num}")

    download_history_data(i,period,start_date, end_date)
    n += 1
  print("下载任务结束")

其实迅投QMT知识库写的蛮详细的, 现在一些同学喜欢到网上找一些二手资料,比如我这篇文章就属于二手资料。 其实学技术最好的方法是跟着官方文档走。

QMT官方文档百度搜索一下就有地址, Ptrade一样。 如果找不到,可以加我进交流群,群公告有写。 如果会python编程,按照教程一步步做, 跑通流程没什么问题, 重点是赚钱策略需要自己多思考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-04-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 子晓聊技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 先说下QMT 行情数据基础概念
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档