返回列表 发布新帖

首次使用券商版miniQMT应该如何进行配置

3935 3
发表于 2024-11-28 17:53:32 | 显示全部楼层 阅读模式

通过券商申请成功的QMT无法直接使用需要进行配置

1、安装软件

一般券商为用户开通QMT后,会通过电子邮件将下载地址发给用户,用户需要从电子邮箱的链接安装QMT软件。

如果还可以申请QMT的用户可以访问miniQMT.com网站提供下载。

2、安装软件后首次登录需要下载python库

安装配置方法如图所示:

python库安装

3、python库安装完成后就可以配置本地版的miniQMT了

python库下载完成后找到

QMT文件安装目录下//bin.x64//lib//site-packags//xtquant

将QMT目录下的python库中的xtquant包复制到本地的python环境中

xtquant配置5.gif

4、如何启动miniQMT

miniQMT启动需要登录极简模式QMT(XtMiniQmt.exe)有些券商已经变更为“独立交易”

miniQMT是QMT量化交易软件的极简模式,可以通过xtquant库实现对miniQMT客户端的本地交互。

使用xtquant的程序前需要先启动miniQMT客户端。

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

xtdata和miniQMT的数据接**互,本质是和miniQMT建立连接,由miniQMT处理行情数据请求,再把结果回传返回到python层。使用的行情服务器以及能获取到的行情数据和miniQMT是一致的,要检查数据或者切换连接时直接操作miniQMT即可。

5、启动本地的IDE(集成开发环境)工具导入xtquant

代码运行效果:

miniqmt账户查询启动交易.gif

原生python效果

miniqmt账户查询演示GIF.gif

代码示例:


# -*- coding: utf-8 -*-
"""
申请开通QMT请添加微信咨询gjquant,获取更多资料访问https://miniqmt.com/
此代码脚本仅用于软件测试,不能用于实盘交易,以此代码进行交易本人不承担任何损失
"""
import sys
import time
import pandas as pd
from xtquant.xttrader import XtQuantTrader
from datetime import datetime #时间戳改为日期时间格式的时候会用到
#---------------演示效果-------------------
from rich import pretty, print
from rich.table import Table


#——————————————————————————————————————————————————————————————————————————————————————————————————————
#设置你的path=''QMT安装路径信息,acc=''引号内填入你的账号
path = r'D:\QMT\userdata_mini'
acct = "55008888"
#创建交易对象
session_id = int(time.time())
xt_trader = XtQuantTrader(path, session_id)
#xttrader连接miniQMT终端
xt_trader.start()
if xt_trader.connect() == 0:print('【软件终端连接成功!】')
else: print('【软件终端连接失败!】','\n 请运行并登录miniQMT.EXE终端。','\n path=改成你的QMT安装路径')   
#订阅账户信息
from xtquant.xttype import StockAccount
ID = StockAccount(acct)
subscribe_result = xt_trader.subscribe(ID)
if subscribe_result == 0:print('【账户信息订阅成功!】')
else: 
    print('【账户信息订阅失败!】','\n 账户配置错误,检查账号是否正确。','\n acct=""内填加你的账号')
    sys.exit() #如果运行环境,账户都没配置好,后面的代码就不执行
#——————————————————————————————————————————————————————————————————————————————————————————————————————
# !!!注意,以下代码将启动账户进行交易,谨慎使用 
POOL = '510050.SH'  #设置股票池(POOL)
BP = 2.53         #买入价格(BP)
BQ = 1200      #买入数量(BQ) 

SP = 2.55            #卖出价格(SP)
SQ = 2100          #卖出数量(SQ)

SN = "策略"       #策略名称
PS = "备注"       #备注
# !!!注意,以下代码将启动账户进行交易,谨慎使用 
#下面两行删除"#"井号后,运行将以BP = “ ”的价格委托买入BQ = “ ” 股的,股票池为POOL = “ ” 执行交易买入/卖出委托,请谨慎使用
#from xtquant import xtconstant #执行交易的时候需要引入
#order_id = xt_trader.order_stock(ID, POOL, xtconstant.STOCK_BUY, BQ, xtconstant.FIX_PRICE, BP) #买入
#order_id2 = xt_trader.order_stock(ID, POOL, xtconstant.STOCK_SELL, SQ, xtconstant.FIX_PRICE, SP) #卖出
#——————————————————————————————————————————————————————————————————————————————————————————————————————
#自定义函数,将账户信息转为DF格式
#账户信息
def account_info_df():
    asset = xt_trader.query_stock_asset(ID)
    if asset:
        account_df = pd.DataFrame({
            'ID': [asset.account_id],
            '资产总额': [asset.total_asset],
            '持仓市值': [asset.market_value],
            '可用资金': [asset.cash],
            '在途资金': [asset.frozen_cash]
        })
    return account_df
# 委托信息
def orders_df():
    orders_df = pd.DataFrame([(order.order_id, order.stock_code, order.order_volume, order.traded_volume, order.price, order.order_status, 
                       (order.order_volume - order.traded_volume),
                               datetime.fromtimestamp(order.order_time).strftime('%H:%M:%S'))
                              for order in xt_trader.query_stock_orders(ID,cancelable_only = True)],
                             columns=['编号', '代码', '委托', '成交', '委价', 
                                      '状态', '未成', '报单时间'])
    return orders_df
# 成交信息
def trades_df():
    trades_df = pd.DataFrame([(trade.stock_code, trade.traded_volume, trade.traded_price,trade.traded_amount,trade.order_id, trade.traded_id, 
                               datetime.fromtimestamp(trade.traded_time).strftime('%H:%M:%S'))
                              for trade in xt_trader.query_stock_trades(ID)],
                             columns=['代码', '成交', '成交价','成交额','订单编号', '成交编号', '成交时间'])
    return trades_df

# 持仓信息
def positions_df():
    positions_df = pd.DataFrame([(position.stock_code, position.volume, position.can_use_volume, position.frozen_volume, 
                                  position.open_price, position.market_value, position.on_road_volume)
                                 for position in xt_trader.query_stock_positions(ID)],
                                columns=['代码', '持仓', '可用', '冻结', '开仓价格', '市值', '在途股份'])
    return positions_df


# 打印汇总信息
account_df = account_info_df()     #账户信息
orders_df = orders_df()            #委托信息
trades_df = trades_df()            #成交信息
positions_df = positions_df()      #持仓信息
#美化打印DF表格
def dataframe_to_rich_table(df):
    table = Table(show_header=True, header_style="bold magenta")  
    # 添加列名到表格,并允许列宽自动扩展以适应内容
    for col in df.columns:
        table.add_column(col, style="dim", max_width=None)  # 移除了overflow设置,允许内容完全显示
    # 添加数据行到表格
    for idx in range(len(df)):
        row_data = [str(item) for item in df.iloc[idx]]  # 确保所有数据都是字符串
        table.add_row(*row_data)
    return table


print("【今日汇总】",f"委托次数:{len(orders_df)}  成交次数:{len(trades_df)}  持仓数量:{len(positions_df)}")
print("【账户信息】")
print(dataframe_to_rich_table(account_df))

# 输出DataFrame
print("【订单信息】")
print(dataframe_to_rich_table(orders_df) if not orders_df.empty else "无委托信息")

print("【成交信息】")
print(dataframe_to_rich_table(trades_df) if not trades_df.empty else "无成交信息")

print( "【持仓信息】")
print(dataframe_to_rich_table(positions_df) if not positions_df.empty else "无持仓信息")

评论3

miniQMT.com申请楼主
发表于 2024-12-3 16:05:54 | 显示全部楼层
*******3690_aoHFM
发表于 2025-4-14 22:34:16 | 显示全部楼层
大佬,我按照你的方法安装后,执行python代码报错''
D:\program\python3\python.exe D:\workspace_py\test2.py
Traceback (most recent call last):
  File "D:\workspace_py\test2.py", line 3, in <module>
    from xtquant import xtdata
  File "D:\program\python3\Lib\site-packages\xtquant\xtdata.py", line 14, in <module>
    from .IPythonApiClient import IPythonApiClient as RPCClient
ModuleNotFoundError: No module named 'xtquant.IPythonApiClient'

我的python版本是3.13.2。 请问直接拷贝xtquant这样安装,还需要其他设置吗?还是说python版本不支持?
*******3690_aoHFM
发表于 2025-4-14 23:14:40 | 显示全部楼层
*******3690_aoHFM 发表于 2025-4-14 22:34
大佬,我按照你的方法安装后,执行python代码报错''

我的python版本是3.13.2。 请问直接拷贝xtquant这样安 ...

python版本降低到3.11后可以了
客服专线

400-080-8112

用思考的速度交易,用真诚的态度合作,我们是认真的!
  • 关注公众号
  • 添加微信客服
Copyright © 2001-2025 迅投QMT社区 版权所有 All Rights Reserved. 蜀ICP备19002686号-2
关灯
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表