万一免五开户,联系微信:golangsysu

miniQMT 数据获取实操讲解

量化程序 女子经理 2℃

为什么选择 miniQMT 量化 API?

在量化交易的实践中,高效的 API 工具是连接策略与市场的核心桥梁。miniQMT 提供的量化交易 API 接口,凭借其完整的功能模块和简洁的调用方式,成为许多量化开发者的首选。本文将从实际应用出发,带您一步步掌握从环境搭建到数据获取的全流程,让量化交易开发变得简单高效。

imgimage

一、从零开始:API 连接的完整步骤

想要使用 miniQMT API 进行开发,首先需要完成 API 的连接与初始化。这一过程分为 5 个关键环节,环环相扣,缺一不可。

1.1 创建 API 实例:搭建基础交互通道

所有操作的起点,是创建一个 API 实例对象。这个对象就像我们与 miniQMT 客户端之间的 “通讯员”,后续的所有指令都通过它传递。

创建实例需要两个核心参数:

  • path:miniQMT 客户端中 userdata_mini 文件夹的完整路径,确保程序能找到客户端位置
  • session_id:会话 ID,用于区分不同的策略进程,必须保证唯一

代码示例

python

运行

# 配置客户端路径和会话ID
path = 'D:\\迅投极速交易终端 睿智融科版\\userdata_mini'
session_id = 123456

# 初始化API实例
xt_trader = XtQuantTrader(path, session_id)

1.2 注册回调类:实时响应市场动态

量化交易中,订单状态、成交信息等实时数据至关重要。通过注册回调类,我们可以让程序自动 “监听” 并处理这些实时推送的消息。

实现方式

python

运行

from xtquant import XtQuantTraderCallback

# 自定义回调类,重写需要监听的事件方法
class MyTraderCallback(XtQuantTraderCallback):
    def __init__(self):
        super().__init__()

    # 接收订单状态回调
    def on_stock_order(self, order):
        print(f"订单更新:{order}")

    # 接收成交信息回调
    def on_stock_trade(self, trade):
        print(f"成交通知:{trade}")

# 注册回调到API实例
callback = MyTraderCallback()
xt_trader.register_callback(callback)

1.3 启动交易线程:激活 API 运行环境

创建实例并注册回调后,需要启动交易线程,为后续的连接和数据交互准备好运行环境。这一步就像给 “通讯员” 接通电源,让它进入工作状态。

代码示例

python

运行

# 启动交易线程
xt_trader.start()

1.4 建立连接:打通与客户端的通信

启动线程后,通过connect()方法正式建立与 miniQMT 客户端的连接。连接成功返回 0,失败则返回错误码,可据此排查问题(如路径错误、客户端未启动等)。

代码示例

python

运行

# 连接miniQMT客户端
connect_result = xt_trader.connect()
if connect_result == 0:
    print("连接成功!可以开始操作了")
else:
    print(f"连接失败,错误码:{connect_result}")

1.5 订阅账号:关联交易账户信息

连接成功后,需订阅具体的资金账号,才能获取该账号的持仓、委托、资金等信息。订阅时需传入账号对象,订阅结果将直接返回成功与否。

代码示例

python

运行

from xtquant import StockAccount

# 订阅指定资金账号
account = StockAccount('1000000365')  # 替换为实际账号
subscribe_result = xt_trader.subscribe(account)
if subscribe_result:
    print("账号订阅成功,可获取账户信息")
else:
    print("账号订阅失败,请检查账号有效性")

二、API 核心架构:理解背后的工作原理

在实际使用前,了解 API 的核心组件有助于更灵活地运用各类功能。miniQMT API 主要包含四大核心模块:

  • XtQuantTrader:核心实例对象,所有 API 操作的入口
  • 系统设置接口:负责初始化、连接、环境配置等基础操作
  • 操作接口:处理账号订阅、反订阅等账户相关操作
  • 数据接口:提供历史数据和实时数据的获取能力

这些模块协同工作,形成从连接到数据交互的完整闭环。

三、数据获取:从下载到读取的实操指南

获取市场数据是量化策略开发的基础。miniQMT API 提供了清晰的数据获取流程,分为 “下载” 和 “读取” 两步。

3.1 下载历史数据:本地缓存关键信息

获取数据前必须先下载,使用download_history_data方法,指定股票代码、周期、时间范围等参数。下载成功后,数据将缓存到本地,供后续读取。

参数说明

  • stock_code:股票 / ETF 代码,格式如 “600001.SH”(沪市)、“000001.SZ”(深市)
  • period:数据周期,如 “tick”(逐笔)、“1min”(1 分钟线)等
  • start_time/end_time:时间范围,格式为 “YYYYMMDD”

代码示例

python

运行

import xtquant.xtdata as xtdata

# 下载600001.SH在20250709的tick数据
download_result = xtdata.download_history_data(
    '600001.SH', 
    'tick', 
    '20250709', 
    '20250709'
)
if download_result:
    print("数据下载成功")
else:
    print("数据下载失败")

3.2 读取本地数据:获取已缓存的信息

下载完成后,通过get_local_data方法读取本地缓存的数据,返回结果为 DataFrame 格式,方便后续分析处理。

代码示例

python

运行

# 读取已下载的数据
history_data = xtdata.get_local_data(
    stock_code='600001.SH',
    period='tick',
    start_time='20250709',
    end_time='20250709'
)

# 验证数据有效性
if history_data is not None and not history_data.empty:
    print(f"成功读取{len(history_data)}条数据")

四、完整实战案例:从连接到数据获取全流程

将上述步骤整合,形成一个可直接运行的完整示例,帮助快速上手:

python

运行

# -*- coding: utf-8 -*-
from xtquant import XtQuantTrader, XtQuantTraderCallback, StockAccount
import xtquant.xtdata as xtdata

def run_strategy():
    # 1. 配置基础参数
    path = 'D:\\迅投极速交易终端 睿智融科版\\userdata_mini'
    session_id = 123456
    account_id = '1000000365'  # 替换为实际账号
    stock_code = '600001.SH'

    # 2. 初始化API实例
    xt_trader = XtQuantTrader(path, session_id)

    # 3. 定义并注册回调
    class StrategyCallback(XtQuantTraderCallback):
        def on_stock_order(self, order):
            print(f"订单回调:{order}")
        def on_stock_trade(self, trade):
            print(f"成交回调:{trade}")

    xt_trader.register_callback(StrategyCallback())

    # 4. 启动并连接
    xt_trader.start()
    if xt_trader.connect() != 0:
        print("连接失败,退出程序")
        return

    # 5. 订阅账号
    if not xt_trader.subscribe(StockAccount(account_id)):
        print("账号订阅失败,退出程序")
        return

    # 6. 获取历史数据
    print("开始下载数据...")
    if xtdata.download_history_data(stock_code, 'tick', '20250709', '20250709'):
        data = xtdata.get_local_data(stock_code, 'tick', '20250709', '20250709')
        print(f"数据获取完成,共{len(data)}条")
    else:
        print("数据下载失败")

    # 7. 程序结束时停止API
    xt_trader.stop()

if __name__ == "__main__":
    run_strategy()

五、避坑指南:使用 API 的注意事项

  1. 环境配置要点
    • 客户端路径必须准确,否则会导致连接失败
    • 不同策略需使用不同的session_id,避免冲突
    • 确保程序对客户端目录有读写权限
  2. 数据操作禁忌
    • 必须先下载数据(download_history_data),再读取(get_local_data),顺序不可颠倒
    • 时间参数严格使用 “YYYYMMDD” 格式,否则会返回空数据
    • 股票代码需带市场后缀(.SH/.SZ),避免识别错误
  3. 稳定性保障
    • 连接后务必检查返回值,确认成功后再进行后续操作
    • 关键步骤建议添加 try-except 异常处理,避免程序崩溃
    • 程序退出前调用stop()方法,释放资源

通过以上内容,您可以系统掌握 miniQMT API 的使用方法。实际开发中,可根据策略需求灵活调整代码,同时建议定期查阅官方文档,了解功能更新。

需要开通低门槛量化软件带mini qmt的,欢迎加v联系,备注:量化开户