乐于分享
好东西不私藏

2025最火量化软件miniQMT保姆级教程——如何使用XTquant获取交易接口?(附带最低开户佣金和门槛)

2025最火量化软件miniQMT保姆级教程——如何使用XTquant获取交易接口?(附带最低开户佣金和门槛)
MiniQMT就是通过XTquant这个python包写代码,前面也有文章介绍了XTquant的行情接口,今天给大家详细说一下QMT的API详细说明。

一

XTquant基本介绍

XtQuant是基于迅投MiniQMT衍生出来的一套完善的Python策略运行框架,对外以Python库的形式提供策略交易所需要的行情和交易相关的API接口。

二

XTquant运行逻辑

XtQuant封装了策略交易所需要的Python API接口,可以和MiniQMT客户端交互进行报单、撤单、查询资产、查询委托、查询成交、查询持仓以及收到资金、委托、成交和持仓等变动的主推消息。

三

XTquant下载路径

四

XTquantAPI说明

1、系统设置接口

(1) 创建API实例

XtQuantTrader(path, session_id)
  • 示例

path = 'D:\\迅投极速交易终端 睿智融科版\\userdata_mini'# session_id为会话编号,策略使用方对于不同的Python策略需要使用不同的会话编号session_id = 123456#后续的所有示例将使用该实例对象xt_trader = XtQuantTrader(path, session_id)

(2)注册回调类

register_callback(callback)
  • 示例

# 创建交易回调类对象,并声明接收回调class MyXtQuantTraderCallback(XtQuantTraderCallback):	...	passcallback = MyXtQuantTraderCallback()#xt_trader为XtQuant API实例对象xt_trader.register_callback(callback)

(3)准备API环境

start()
  • 示例

# 启动交易线程#xt_trader为XtQuant API实例对象xt_trader.start()

(4)创建连接

connect()

(5)停止运行

stop()
  • 示例

#xt_trader为XtQuant API实例对象xt_trader.stop()

2、操作接口

(1)订阅账号信息

subscribe(account)
  • 示例

account = StockAccount('1000000365')#xt_trader为XtQuant API实例对象subscribe_result = xt_trader.subscribe(account)

3、股票查询接口

(1)资产查询

query_stock_asset(account)
  • 示例:(查询股票资金账号1000000365对应的资产数据)

account = StockAccount('1000000365')#xt_trader为XtQuant API实例对象asset = xt_trader.query_stock_asset(account)

(2)委托查询

query_stock_orders(account, cancelable_only = False)
  • 示例(查询股票资金账号1000000365对应的当日所有委托)

account = StockAccount('1000000365')#xt_trader为XtQuant API实例对象orders = xt_trader.query_stock_orders(account, False)

(3)成交查询

query_stock_trades(account)
  • 示例(查询股票资金账号1000000365对应的当日所有成交)

account = StockAccount('1000000365')#xt_trader为XtQuant API实例对象trades = xt_trader.query_stock_trades(account)

(4)持仓查询

query_stock_positions(account)

示例:(查询股票资金账号1000000365对应的最新持仓)

account = StockAccount('1000000365')#xt_trader为XtQuant API实例对象positions = xt_trader.query_stock_positions(account)

(5)完整示例(简单买卖各一笔)

# coding:utf-8import time, datetime, traceback, sysfrom xtquant import xtdatafrom xtquant.xttrader import XtQuantTrader, XtQuantTraderCallbackfrom xtquant.xttype import StockAccountfrom xtquant import xtconstant# 定义一个类 创建类的实例 作为状态的容器class _a():    passA = _a()A.bought_list = []A.hsa = xtdata.get_stock_list_in_sector('沪深A股')def interact():    """执行后进入repl模式"""    import code    code.InteractiveConsole(locals=globals()).interact()xtdata.download_sector_data()class MyXtQuantTraderCallback(XtQuantTraderCallback):    def on_disconnected(self):        """        连接断开        :return:        """        print(datetime.datetime.now(), '连接断开回调')    def on_stock_order(self, order):        """        委托回报推送        :param order: XtOrder对象        :return:        """        print(datetime.datetime.now(), '委托回调 投资备注', order.order_remark)    def on_stock_trade(self, trade):        """        成交变动推送        :param trade: XtTrade对象        :return:        """        print(datetime.datetime.now(), '成交回调', trade.order_remark, f"委托方向(48买 49卖) {trade.offset_flag} 成交价格 {trade.traded_price} 成交数量 {trade.traded_volume}")    def on_order_error(self, order_error):        """        委托失败推送        :param order_error:XtOrderError 对象        :return:        """        # print("on order_error callback")        # print(order_error.order_id, order_error.error_id, order_error.error_msg)        print(f"委托报错回调 {order_error.order_remark}{order_error.error_msg}")    def on_cancel_error(self, cancel_error):        """        撤单失败推送        :param cancel_error: XtCancelError 对象        :return:        """        print(datetime.datetime.now(), sys._getframe().f_code.co_name)    def on_order_stock_async_response(self, response):        """        异步下单回报推送        :param response: XtOrderResponse 对象        :return:        """        print(f"异步委托回调 投资备注: {response.order_remark}")    def on_cancel_order_stock_async_response(self, response):        """        :param response: XtCancelOrderResponse 对象        :return:        """        print(datetime.datetime.now(), sys._getframe().f_code.co_name)    def on_account_status(self, status):        """        :param response: XtAccountStatus 对象        :return:        """        print(datetime.datetime.now(), sys._getframe().f_code.co_name)if __name__ == '__main__':    print("start")    # 指定客户端所在路径, 券商端指定到 userdata_mini文件夹    # 注意:如果是连接投研端进行交易,文件目录需要指定到f"{安装目录}\userdata"    path = r'D:\qmt\投研\迅投极速交易终端睿智融科版\userdata'    # 生成session id 整数类型 同时运行的策略不能重复    session_id = int(time.time())    xt_trader = XtQuantTrader(path, session_id)    # 开启主动请求接口的专用线程 开启后在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定    # 详见: http://docs.thinktrader.net/vip/pages/ee0e9b/#开启主动请求接口的专用线程    # xt_trader.set_relaxed_response_order_enabled(True)    # 创建资金账号为 800068 的证券账号对象 股票账号为STOCK 信用CREDIT 期货FUTURE    acc = StockAccount('2000128', 'STOCK')    # 创建交易回调类对象,并声明接收回调    callback = MyXtQuantTraderCallback()    xt_trader.register_callback(callback)    # 启动交易线程    xt_trader.start()    # 建立交易连接,返回0表示连接成功    connect_result = xt_trader.connect()    print('建立交易连接,返回0表示连接成功', connect_result)    # 对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功    subscribe_result = xt_trader.subscribe(acc)    print('对交易回调进行订阅,订阅后可以收到交易主推,返回0表示订阅成功', subscribe_result)    #取账号信息    account_info = xt_trader.query_stock_asset(acc)    #取可用资金    available_cash = account_info.m_dCash    print(acc.account_id, '可用资金', available_cash)    #查账号持仓    positions = xt_trader.query_stock_positions(acc)    #取各品种 总持仓 可用持仓    position_total_dict = {i.stock_code : i.m_nVolume for i in positions}    position_available_dict = {i.stock_code : i.m_nCanUseVolume for i in positions}    print(acc.account_id, '持仓字典', position_total_dict)    print(acc.account_id, '可用持仓字典', position_available_dict)    #买入 浦发银行 最新价 两万元    stock = '600000.SH'    target_amount = 20000    full_tick = xtdata.get_full_tick([stock])    print(f"{stock} 全推行情: {full_tick}")    current_price = full_tick[stock]['lastPrice']    #买入金额 取目标金额 与 可用金额中较小的    buy_amount = min(target_amount, available_cash)    #买入数量 取整为100的整数倍    buy_vol = int(buy_amount / current_price / 100) * 100    print(f"当前可用资金 {available_cash} 目标买入金额 {target_amount} 买入股数 {buy_vol}股")    async_seq = xt_trader.order_stock_async(acc, stock, xtconstant.STOCK_BUY, buy_vol, xtconstant.FIX_PRICE, current_price,                                            'strategy_name', stock)    #卖出 500股    stock = '513130.SH'    #目标数量    target_vol = 500    #可用数量    available_vol = position_available_dict[stock] if stock in position_available_dict else 0    #卖出量取目标量与可用量中较小的    sell_vol = min(target_vol, available_vol)    print(f"{stock} 目标卖出量 {target_vol} 可用数量 {available_vol} 卖出 {sell_vol}股")    if sell_vol > 0:        async_seq = xt_trader.order_stock_async(acc, stock, xtconstant.STOCK_SELL, sell_vol, xtconstant.LATEST_PRICE,                                                -1,                                                'strategy_name', stock)    print(f"下单完成 等待回调")    # 阻塞主线程退出    xt_trader.run_forever()    # 如果使用vscode pycharm等本地编辑器 可以进入交互模式 方便调试 (把上一行的run_forever注释掉 否则不会执行到这里)    interact()

五

如何开通QMT或miniQMT

◆◆开通门槛
目前限时入金10万就可以开通

◆◆QMT开通流程

  1. 开户成功后入金,第二天股东账户正常后开始走QMT申请流程
  2. 申请过程全程线上,预计3-5个工作日申请完成。
  3. 等待开通过程中,可以提供测试账号和软件给你试用,可以提供资料和安装配置流程。
  4. 开通成功后,会通过邮件发送你软件下载地址,登录账号后就可以使用。
◆◆佣金费率
  1. 股票无条件万1,根据资金量最低可以做到万0.854
  2. 融资无条4.5%,根据资金量,最低可以做到4%

福利1:量化讨论群

福利2:提供专业量化问题解答

福利3:量化工具安装使用教程、视频

福利4:极速柜台,量化投资者专用,速度微秒级

扫码获QMT(miniQMT)

阅  读  推  荐

2025最火量化软件miniQMT保姆级教程——如何使用XTquant获取行情接口?

QMT量化交易:什么是miniQMT? miniQMT如何安装和配置?如何低门槛低费率开通miniQMT?

QMT量化交易:一文详解QMT运行机制(送保姆级教程)

QMT量化交易:什么是miniQMT? miniQMT如何安装和配置?如何低门槛低费率开通miniQMT?

一文说清最火量化软件QMT VS PTRADE

相关学习资料