QMT 是一款本地运行的量化交易软件,所有数据都需要先下载到本地电脑才能使用。对于历史数据,用户可以提前下载好放在本地,这样用的时候直接读取就行,不会有什么问题。但如果是当天的实时数据,要是每次用的时候才临时去下载,就会因为网络传输等原因导致延迟,影响交易速度。
为了解决这个问题,QMT 设计了一种 "订阅" 机制。用户如果需要使用当天某只股票的历史数据(比如当天的 K 线、分时图等),可以先在软件里 "订阅" 这只股票。订阅之后,软件会把这只股票当天的数据实时同步到本地的一个缓存服务器里。这样一来,当用户调用 get_market_data_ex 这个函数获取数据时,实际上是直接从本地缓存服务器读取数据,而不需要再临时从网络上下载,大大提高了数据获取的速度。
一
QMT本地数据获取
QMT 作为本地客户端软件,数据处理的核心逻辑是“历史数据预下载 + 实时数据订阅缓存”。具体为:
历史数据处理:用户可以提前将历史数据下载至本地存储,使用时直接从本地调用,避免实时拉取导致的延迟,适用于回测、策略研究等需要大量历史数据的场景。
二
QMT数据订阅机制
为解决实时数据延迟问题,QMT 采用“订阅 - 缓存 - 直连” 模式,具体流程及优势如下:
1、订阅机制的核心流程
subscribe_market_data)对该标的进行订阅。get_market_data_ex 接口获取数据时,不需要重新从源端拉取,直接从缓存服务器读取,大幅提升数据获取速度。2、订阅机制的核心优势
三
QMT数据订阅机制
1、以订阅单股行情为例:
subscribe_quote(stock_code, period='1d', start_time='', end_time='', count=0, callback=None)订阅单股的行情数据,返回订阅号
订阅成功后,可以用get_market_data获取行情,同时当指定callback回调函数后,动态行情会推送到callback里。传入不同period,其callback里收到的字段有所不同。
如果只需要动态行情时,适合 count=0,这种情况不管start_time和end_time传入任何值,都不会像服务器订阅历史行情当同时需要获取历史数据和动态行情时,end_time传空字符串或当前时间且count传大于0或-1,且用get_market_data获取历史和实时行情,但是建议历史行情提前用download_history_data提前下载到本地
如果只需要历史行情时,不宜使用该接口,建议用download_history_data配合get_market_data使用
(2)实际运用——盘中均线金叉
#encoding: gb2312switch = 1def init(C):def callback_func(data):global switchif switch == 1 :datas = C.get_market_data_ex(['close'],['510310.SH'],period='1m',start_time='20250414', end_time='',count=10)close_list = datas['510310.SH']['close'].tolist()ma_5 = sum(close_list[-5:])/5ma_10 = sum(close_list)/10print('ma_5: ',ma_5,'ma_10: ',ma_10)if ma_5 > ma_10:#passorder:调用下单函数switch = 0print('ma_5上穿ma_10')C.subscribe_quote('510310.SH', period = '1m', callback = callback_func)def handlebar(C):pass

代码说明:
subscribe_quote订阅了 510310.SH 的 1 分钟 K 线数据get_market_data_ex获取当天的 1 分钟 K 线数据insert_order函数执行买入操作,并将 switch 设为 0 避免重复买入
看一下监控效果,黑色(ma_5)确实上穿了紫色(ma_10)。
四
如何开通QMT和miniQMT?
股票无条件万1,根据资金量最低可以做到万0.854
融资无条4.5%,根据资金量,最低可以做到4% 
极速柜台:普通柜台毫秒级,极速柜台微秒级延时,理论上极速柜台并发处理能力在普通柜台5倍以上。
VIP席位 :普通席位人数众多,同一价位排单量多,导致无法在理想价位买入。VIP席位人数少,可更加快实现成交。 
福利5:量化工具安装使用教程、视频
福利6:极速柜台,量化投资者专用,速度微秒级
夜雨聆风