深入miniqmt:掌握创建交易对象的关键步骤
深入miniqmt:掌握创建交易对象的关键步骤
🚀量化软件开通
🚀量化实战教程
在量化交易的世界中,miniqmt是一个强大的工具,它允许开发者通过编程方式执行复杂的交易策略。本文将详细介绍如何在miniqmt中创建和配置交易对象,这是实现自动化交易的第一步。
技术背景与应用场景
在程序化交易系统中,交易对象是执行下单、撤单等操作的核心组件。通过创建并配置这些对象,我们可以与交易平台建立连接,订阅账户信息,并注册回调函数以处理异步事件。这一过程对于确保交易的准确性和效率至关重要。
实现思路与代码示例
建立连接与启动交易对象
首先,我们需要指定miniqmt的安装路径并创建一个唯一的session_id
来标识我们的会话。接着,使用XtQuantTrader
类初始化一个交易对象,并通过调用start()
方法启动它。最后,使用connect()
方法与客户端建立连接。
import random
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
# miniQMT安装路径
mini_qmt_path = r'D:\国金证券 QMT 交易端�serdata_mini'
session_id = int(random.randint(100000,999999))
xt_trader = XtQuantTrader(mini_qmt_path,session_id)
ext_trader.start()
connect_result = xt_trader.connect()
if connect_result ==0:
print('连接成功')
elif connect_result ==-1:
print('连接失败')
elif connect_result ==-2:
print('版本不匹配')
elif connect_result ==-3:
print('未找到客户端')
elif connect_result ==-4:
print('客户端未响应')
elif connect_result ==-5:
print("其他错误" )
account_id='1010573943'
account=StockAccount(account_id )
res=xt_trader.subscribe( account )
print( account ) ;print(res);class MyXtQuantTraderCallback(XtQuantTraderCallback):def on_disconnected(self):print("connection lost");def on_stock_order(self ,order ):print("on order callback:");print(order.stock_code ,order.order_status ,order.order_sysid );def on_stock_trade(self ,trade ):print("on trade callback");print(trade.account_id ,trade.stock_code ,trade.order_id );xt_trader.register_callback(MyXtQuantTraderCallback());error_orders=[];class MyXtQuantTraderCallback(XtQuantTraderCallback):def on_disconnected(self):print("connection lost");def on_stock_order(self ,order ):if order.order_status==50 :print(f"【已委托】 {order.order_type}代码:{order.stock_code}名称:{order.order_remark}委托价格:{order.price:.2f}委托数量:{order.order_volume}订单编号:{order.order_id}委托时间:{order.order_time}");elif order .status==53 or ord.status==54 :prnt(f"【已撤单】{ord.type }代码:{ord.code }名称:{ord.rmark }价格:{ord.price :.2f }数量{ord.vlume }编号{ord.id }时间{ord.time }") ;def n_stck_trde(slf,trade) :prnt(f"【已成交】{trd.type }代码{trd.code }名称{trd.rmark }{trd.prce :.2f }{trd.vlme }{trd.id }") ;create_trdr=lambda acct,pth:(Xttrd(pth,int(rndm.rndint(100000,999999))).strt().cnct(),StckAcct(acct));subsribe_acct=lambda trdr,acct:trdr.sbsrb(acct);regstr_cllbck=lambda trdr,cb:trdr.rgstr_cb(cb)