我是Mr.看海,由于我开发的看海量化交易系统是基于miniQMT的行情和交易接口,所以在此我将miniQMT的使用教程采用案例集的形式进行讲解,该手册会不断完善和丰富,为做miniQMT的开发的朋友提供便利。
需要注意的是,本手册仅作为官方手册的辅助教程,最权威的接口请以官方说明文档为准:
官方手册请点击这里
在前几篇的文章中讲到,我正在开发的看海量化交易系统,底层是使用miniQMT的Python接口实现的数据获取和交易执行。
通过前几篇文章已经基本上将行情模块XtData的主要功能讲完了,本文将系统介绍XtQuant的交易模块(XtTrade)的使用方法,对常用功能进行演示和讲解。由于行情交易模块是有机整体,所以就不再拆分章节,而是这一篇文章全讲完了。
1. 基本概念介绍
1.1 XtTrade模块概述
XtTrade是XtQuant中专门用于交易的模块。它提供了完整的交易功能接口,包括:
- 系统设置接口:用于创建API实例、注册回调、启动交易线程等基础功能
- 操作接口:提供下单、撤单、订阅等交易操作功能
- 查询接口:用于查询账户资产、持仓、委托、成交等信息
- 回调接口:用于接收交易推送信息
1.2 交易流程概述
使用XtTrade进行交易的基本流程如下:
- 创建API实例并注册回调
- 启动交易线程并建立连接
- 订阅账户信息
- 进行交易操作(下单、撤单等)
- 接收交易推送信息
- 程序结束时取消订阅并断开连接
2. 系统设置接口使用演示
在开始编写交易策略之前,我们需要先完成交易系统的初始化工作。这部分内容主要包括创建API实例、注册回调、启动交易线程等基础设置,属于程序运行前的准备工作,与具体的交易策略关联不大(不过部分回调功能中可以考虑与策略衔接)。
让我们按照初始化的流程,逐步了解这些基础设置:
2.1 创建API实例
创建API实例是使用XtTrade的第一步。通过XtQuantTrader类来创建实例,需要提供两个重要参数:path和session_id。前者是MiniQMT客户端安装路径中userdata_mini文件夹的完整路径,用以和miniQMT客户端建立连接;后者是与MiniQMT通信的会话ID,不同的会话要保证不重。
创建实例的写法如下,其中的session_id我用了毫秒级的时间戳,可以比较有效地防止重复,当然如果你有其他方式也可以。
from xtquant.xttrader import XtQuantTrader
import time
# 创建API实例
path = "D:\\XX证券QMT交易端\\userdata_mini" # miniQMT客户端安装目录下的userdata_mini路径
session_id = int(time.time() * 1000) # 使用毫秒级时间戳作为会话编号
trader = XtQuantTrader(path, session_id)
注意事项:1.确保path路径正确,否则无法与miniQMT建立连接,需根据本地电脑实际路径修改。2.通常一个策略只需要创建一个API实例。
2.2 创建资金账号
在进行任何交易操作之前,我们需要先创建一个资金账号对象。这个账号对象用来标识我们要操作的证券账户,需要和登录的miniQMT的账号保持一致:
from xtquant.xttype import StockAccount
# 创建证券账户对象
account = StockAccount('XXXXX') # 参数是资金账号
2.3 注册回调类
回调类是实现交易系统与用户策略之间通信的关键机制。通过回调类,我们可以实时接收交易状态变化(如委托、成交、撤单等),处理异常情况(如连接断开、委托失败等),并根据这些信息执行相应的交易逻辑。
回调类可以理解为一个”事件监听器”。当我们进行交易时,会发生各种事件:比如委托单成交了、撤单成功了、连接断开了等等。回调类就是用来接收这些事件通知的。
XtTrade模块中规定的回调包括失去连接时推送信息回调、账号状态信息变动推送等等,过会儿会详细介绍。
在使用回调函数时需要注意,所有的回调都是在主线程中执行的。这意味着如果在回调函数中执行耗时的操作,会阻塞后续回调消息的处理。当回调函数执行时间过长时,可能会错过重要的交易信息,或者导致其他回调处理发生延迟,从而影响整个交易系统的响应性。在实际开发中,建议将回调函数的实现保持简单和高效。可以在回调函数中进行必要的日志记录、状态检查等轻量级操作,但复杂的业务逻辑最好放在独立的处理线程中执行。同时,要注意做好异常处理,避免因为回调函数的异常导致整个交易系统受到影响。
下面是一个包含主要回调方法的官方示例(案例连接),其中演示的是最简单的通过打印来进行信息通知的处理方式:
from xtquant.xttrader import XtQuantTraderCallback
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)
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)
以上八种回调类是官方文档中提到了的,据我查看xtquant.xttrader的源码,所能支持的回调类应该还有以下这几种,大家可以在实战中实验甄别:
def on_stock_position(self, position):
"""
持仓变动推送,根据:https://blog.csdn.net/liuyukuan/article/details/128754695
:param position: XtPosition对象
:return:
"""
print("on position callback")
print(position.stock_code, position.volume)
def on_connected(self):
"""
连接成功推送
"""
pass
def on_stock_asset(self,asset):
"""
资金变动推送,根据:https://blog.csdn.net/liuyukuan/article/details/128754695
:param asset: XtAsset对象
:return:
"""
print("资金变动推送on asset callback")
print(asset.account_id,asset.cash,asset.total_asset)
创建好回调类后,需要将其实例注册到交易对象中才能生效。这一步通过register_callback方法完成:
# 创建并注册回调实例
callback = MyXtQuantTraderCallback()
trader.register_callback(callback)
注册完成后,当交易系统发生相应事件时,XtQuant会自动调用对应的回调方法。比如当发出一个买入委托后,交易所返回状态变化时,系统会自动调用已注册的MyXtQuantTraderCallback中的on_stock_order方法。
在使用回调时需要注意:1.建议只注册一个回调实例;2.要做好异常处理,避免影响其他回调的执行;3.可以根据需要只实现必要的回调方法,未实现的方法会被忽略。
2.4 启动交易线程并建立连接
完成回调注册,需要启动交易线程并建立连接。这两个步骤必须按顺序执行,且都成功才能进行后续操作。
此外还可以设置主动请求接口的返回是否使用专用线程。
2.4.1 启动交易线程(start)
start()方法用于启动交易线程,为后续的交易操作做准备:
# 启动交易线程
trader.start()
2.4.2 建立连接(connect)
connect()方法用于与miniQMT建立连接:
# 建立连接
connect_result = trader.connect()
if connect_result == 0:
print("连接成功")
else:
print("连接失败")
说明:
* 必须在start()之后调用
* 返回0表示连接成功,其他值表示失败
* 连接断开后需要重新调用才能恢复连接
* 不需要参数
2.4.3 设置请求线程(set_relaxed_response_order_enabled)
用于控制主动请求接口的返回是否使用专用线程,这个功能需要单独说明一下,因为根据官方文档,其是否开启需要根据策略是实际情况决定,以下是关于此功能的官方说明:
set_relaxed_response_order_enabled(enabled)
控制主动请求接口的返回是否从额外的专用线程返回,以获得宽松的数据时序
不开启(enabled=False)效果:在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数会造成回调线程卡住,后续回调会接收不到
开启效果(enabled=True)效果:在on_stock_xxx回调函数里调用XtQuantTrader.query_xxx函数不会卡住回调线程,但是查询和推送的数据在时序上会变得不确定,参考下面的备注说明
参数:
enabled – bool 是否开启,默认为False关闭
返回:无
备注:如果开启,在on_stock_order等推送回调中调用同步请求不会卡住,但查询和推送的数据在时序上会变得不确定
timeline t1 t2 t3 t4
callback push1 push2 push3 resp4
do query4 ------------------^
例如:分别在t1 t2 t3时刻到达三条委托数据,在on_push1中调用同步委托查询接口query_orders()
未开启宽松时序时,查询返回resp4会在t4时刻排队到push3完成之后处理,这使得同步等待结果的查询不能返回而卡住执行
开启宽松时序时,查询返回的resp4由专用线程返回,程序正常执行,但此时查到的resp4是push3之后的状态,也就是说resp4中的委托要比push2 push3这两个前一时刻推送的数据新,但在更早的t1时刻就进入了处理
使用中请根据策略实际情况来开启,通常情况下,推荐在on_stock_order等推送回调中使用查询接口的异步版本,如query_stock_orders_async
然而我在官方文档未找到query_stock_orders_async的更多说明。
总而言之,这里请大家根据各自策略仔细斟酌设置。
2.5 运行与停止
XtTrade提供了run_forever()函数,作为保持程序运行的方式:
#xt_trader为XtQuant API实例对象
trader.run_forever() # 会一直阻塞,直到调用stop()或按Ctrl+C
结束的也很简单,运行如下代码即可:
#xt_trader为XtQuant API实例对象
xt_trader.stop()
注意:
* run_forever(): 阻塞当前线程,适合单一策略程序
* stop(): 停止交易线程,退出程序时调用
2.6 完整的初始化示例
下面是一个完整初始化示例,为了不赘述回调类简单地列举了三个,实际使用中要根据需求添加。此外miniQMT的路径和资金账号也要根据你的实际情况填写。运行下边代码,如果连接正常将会在命令行窗口输出0。
需要注意的是,对行情数据的订阅一般也在初始化中完成,在下例中就不演示了。
from xtquant.xttrader import XtQuantTrader, XtQuantTraderCallback
from xtquant.xttype import StockAccount
import time
# 1. 创建回调类
class MyCallback(XtQuantTraderCallback):
def on_disconnected(self):
"""连接断开时回调"""
print("连接断开")
def on_stock_order(self, order):
"""委托回报推送"""
print(f"收到委托回报: {order.stock_code} {order.order_status}")
def on_stock_trade(self, trade):
"""成交回报推送"""
print(f"收到成交回报: {trade.stock_code} {trade.traded_volume}")
#还有其他回调类不一一列举,根据实际情况编写
# 2. 创建API实例
path = r'D:\XX证券QMT交易端\userdata_mini' # miniQMT客户端安装目录下的userdata_mini路径
session_id = int(time.time() * 1000) # 使用毫秒级时间戳作为会话编号
trader = XtQuantTrader(path, session_id)
# 3. 创建资金账号
account = StockAccount('XXX') # 这里填写实际的资金账号
# 4. 注册回调实例
callback = MyCallback()
trader.register_callback(callback)
# 5. 启动交易线程
trader.start()
# 6. 建立连接
connect_result = trader.connect()
print(f"连接结果: {connect_result}") # 0表示成功
# 7. 保持程序运行
try:
trader.run_forever()
except KeyboardInterrupt: #在命令行输入Ctrl+C
print("程序结束")
3. 操作接口使用演示
上边讲了初始化要用到的一系列设置。现在讲一讲在实盘操作中要用到的一些接口。
操作接口主要包括订阅账户、报单、撤单等功能。
3.1 账户订阅与反订阅
使用subscribe订阅账号信息,包括资金账号、委托信息、成交信息、持仓信息。使用unsubscribe反订阅账号信息,订阅/反订阅成功返回0,订阅/反订阅失败返回-1。
账户订阅也是必不可少的操作,可以将这一步放在初始化当中。
# 示意代码,无法直接运行
account = StockAccount('XXX')
#xt_trader为XtQuant API实例对象
subscribe_result = xt_trader.subscribe(account) #订阅
unsubscribe_result = xt_trader.unsubscribe(account) #反订阅
3.2 股票交易操作
常用的股票操作其实就两种:报单和撤单,而其中又分同步操作和异步操作两种。所以常用函数有四个:
股票同步报单(order_stock)、股票异步报单(order_stock_async)、股票同步撤单(cancel_order_stock)、股票异步撤单(cancel_order_stock_async),这几个函数接口说明见附录。
关于同步和异步的区别:同步指程序按照顺序逐步执行,直到一个操作完成后才能执行下一个操作;异步是指程序可以继续执行后续操作,不需要等待某个操作的完成。
这里引用其他文章里的一段描述(说一说qmt的运行逻辑——(附异步编程代码)):
那同步编程和异步编程有啥不一样呢?还是用我妈做饭的例子来说,同步编程是等一件事做完以后,再去做另外一件事情,异步就是可以在一件事没做完的情况下,去做其他的事情,所以异步最大的好处就是快,那相应的,也会增加做事情的复杂度,大家自己做过饭就知道,如果同时做很多事情,有可能会忙得手忙脚乱的,同步的好处就是简单,一步一步往下走,肯定不会出错。
异步交易是和之前讲到的回调相关联的:对股票进行异步下单操作,异步下单接口如果正常返回了下单请求序号seq,会收到on_order_stock_async_response的委托反馈;我猜测(因为官网文档没说),对股票进行异步撤单,如果正常返回撤单请求序号,会收到on_cancel_order_stock_async_response的委托反馈。
# 该代码仅做案例演示,不能直接运行
from xtquant import xtconstant
# 1. 同步下单
order_id = trader.order_stock(
account=account, # 账户
stock_code="XXXXXX.SH", # 股票代码
order_type=xtconstant.STOCK_BUY, # 买入
order_volume=100, # 委托数量,单位是股
price_type=xtconstant.FIX_PRICE, # 限价委托
price=10.5, # 委托价格
strategy_name="strategy1", # 策略名称
order_remark="test" # 委托备注
)
print(f"下单结果订单号: {order_id}")
# 2. 异步下单
seq = trader.order_stock_async(
account=account,
stock_code="XXXXXX.SH",
order_type=xtconstant.STOCK_BUY,
order_volume=100,
price_type=xtconstant.FIX_PRICE,
price=10.5,
strategy_name="strategy1",
order_remark="test"
)
print(f"异步下单请求序号: {seq}")
# 3. 同步撤单
cancel_result = trader.cancel_order_stock(
account=account,
order_id=order_id # 要撤销的订单号
)
print(f"撤单结果: {cancel_result}") # 0表示成功
# 4. 异步撤单
cancel_seq = trader.cancel_order_stock_async(
account=account,
order_id=order_id
)
print(f"异步撤单请求序号: {cancel_seq}")
4.查询接口使用演示
查询接口用于获取账户相关信息,包括资产、持仓、委托、成交等。查询接口的说明我附在文末了。
以下是主要查询接口的使用示例:
# 该代码仅做案例演示,不能直接运行
# 1. 查询资产
asset = trader.query_stock_asset(account)
if asset:
print(f"可用资金: {asset.cash}")
print(f"总资产: {asset.total_asset}")
# 2. 查询当日委托
orders = trader.query_stock_orders(account)
if orders:
print(f"今日委托数量: {len(orders)}")
for order in orders:
print(f"委托: {order.stock_code} {order.order_volume} {order.price}")
# 3. 查询当日成交
trades = trader.query_stock_trades(account)
if trades:
print(f"今日成交数量: {len(trades)}")
for trade in trades:
print(f"成交: {trade.stock_code} {trade.traded_volume} {trade.traded_price}")
# 4. 查询持仓
positions = trader.query_stock_positions(account)
if positions:
print(f"持仓数量: {len(positions)}")
for pos in positions:
print(f"持仓: {pos.stock_code} {pos.volume} {pos.can_use_volume}")
# 5. 查询单个股票持仓
position = trader.query_stock_position(account, "XXX.SH")
if position:
print(f"持仓数量: {position.volume}")
print(f"可用数量: {position.can_use_volume}")
以上的初始化、查询、实盘接口组合到一起就可以实现代码的实盘操作了,这里我不给大家放实盘案例代码了,以免读者误操作。
官方帮助文档中提供了几个实盘的案例,请感兴趣的朋友跳转阅读:完整实例 | 迅投知识库
5. 附录-交易模块函数接口
注意:定义可能会有变动,以官网信息为准。
5.1 股票同步报单
order_stock(account, stock_code, order_type, order_volume, price_type, price, strategy_name, order_remark)
- 释义
- 对股票进行下单操作
- 参数
- account – StockAccount 资金账号
- stock_code – str 证券代码,如’600000.SH’
- order_type – int 委托类型
- order_volume – int 委托数量,股票以’股’为单位,债券以’张’为单位
- price_type – int 报价类型
- price – float 委托价格
- strategy_name – str 策略名称
- order_remark – str 委托备注
- 返回
- 系统生成的订单编号,成功委托后的订单编号为大于0的正整数,如果为-1表示委托失败
- 备注
- 无
5.2 股票异步报单
order_stock_async(account, stock_code, order_type, order_volume, price_type, price, strategy_name, order_remark)
- 释义
- 对股票进行异步下单操作,异步下单接口如果正常返回了下单请求序号seq,会收到on_order_stock_async_response的委托反馈
- 参数
- account – StockAccount 资金账号
- stock_code – str 证券代码, 如’600000.SH’
- order_type – int 委托类型
- order_volume – int 委托数量,股票以’股’为单位,债券以’张’为单位
- price_type – int 报价类型
- price – float 委托价格
- strategy_name – str 策略名称
- order_remark – str 委托备注
- 返回
- 返回下单请求序号seq,成功委托后的下单请求序号为大于0的正整数,如果为-1表示委托失败
- 备注
- 如果失败,则通过下单失败主推接口返回下单失败信息
5.3 股票同步撤单
cancel_order_stock(account, order_id)
- 释义
- 根据订单编号对委托进行撤单操作
- 参数
- account – StockAccount 资金账号
- order_id – int 同步下单接口返回的订单编号,对于期货来说,是order结构中的order_sysid字段
- 返回
- 返回是否成功发出撤单指令,0: 成功, -1: 表示撤单失败
- 备注
- 无
5.4 股票异步撤单
cancel_order_stock_async(account, order_id)
- 释义
- 根据订单编号对委托进行异步撤单操作
- 参数
- account – StockAccount 资金账号
- order_id – int 下单接口返回的订单编号,对于期货来说,是order结构中的order_sysid
- 返回
- 返回撤单请求序号, 成功委托后的撤单请求序号为大于0的正整数, 如果为-1表示委托失败
- 备注
- 如果失败,则通过撤单失败主推接口返回撤单失败信息
5.5 资产查询
query_stock_asset(account)
- 释义
- 查询资金账号对应的资产
- 参数
- account – StockAccount 资金账号
- 返回
- 该账号对应的资产对象XtAsset在新窗口打开或者None
- 备注
- 返回None表示查询失败
5.6 委托查询
query_stock_orders(account, cancelable_only = False)
- 释义
- 查询资金账号对应的当日所有委托
- 参数
- account – StockAccount 资金账号
- cancelable_only – bool 仅查询可撤委托
- 返回
- 该账号对应的当日所有委托对象XtOrder在新窗口打开组成的list或者None
- 备注
- None表示查询失败或者当日委托列表为空
5.7 成交查询
query_stock_trades(account)
- 释义
- 查询资金账号对应的当日所有成交
- 参数
- account – StockAccount 资金账号
- 返回
- 该账号对应的当日所有成交对象XtTrade在新窗口打开组成的list或者None
- 备注
- None表示查询失败或者当日成交列表为空
5.8 持仓查询
query_stock_positions(account)
- 释义
- 查询资金账号对应的持仓
- 参数
- account – StockAccount 资金账号
- 返回
- 该账号对应的最新持仓对象XtPosition在新窗口打开组成的list或者None
- 备注
- None表示查询失败或者当日持仓列表为空
6. 相关数据字典
该部分内容比较多,但是很实用,因为目前只研究股票交易,我把相关的摘过来了。注意:定义可能会有变动,以官网信息为准。
6.1 委托类型(order_type)
- 股票
- 买入 – xtconstant.STOCK_BUY
- 卖出 – xtconstant.STOCK_SELL
6.2 报价类型(price_type)
- 最新价 – xtconstant.LATEST_PRICE
- 指定价 – xtconstant.FIX_PRICE
6.3 委托状态(order_status)
枚举变量名 | 值 | 含义 |
---|---|---|
xtconstant.ORDER_UNREPORTED | 48 | 未报 |
xtconstant.ORDER_WAIT_REPORTING | 49 | 待报 |
xtconstant.ORDER_REPORTED | 50 | 已报 |
xtconstant.ORDER_REPORTED_CANCEL | 51 | 已报待撤 |
xtconstant.ORDER_PARTSUCC_CANCEL | 52 | 部成待撤 |
xtconstant.ORDER_PART_CANCEL | 53 | 部撤(已经有一部分成交,剩下的已经撤单) |
xtconstant.ORDER_CANCELED | 54 | 已撤 |
xtconstant.ORDER_PART_SUCC | 55 | 部成(已经有一部分成交,剩下的待成交) |
xtconstant.ORDER_SUCCEEDED | 56 | 已成 |
xtconstant.ORDER_JUNK | 57 | 废单 |
xtconstant.ORDER_UNKNOWN | 255 | 未知 |
6.4 账号状态(account_status)
枚举变量名 | 值 | 含义 |
---|---|---|
xtconstant.ACCOUNT_STATUS_INVALID | -1 | 无效 |
xtconstant.ACCOUNT_STATUS_OK | 0 | 正常 |
xtconstant.ACCOUNT_STATUS_WAITING_LOGIN | 1 | 连接中 |
xtconstant.ACCOUNT_STATUSING | 2 | 登陆中 |
xtconstant.ACCOUNT_STATUS_FAIL | 3 | 失败 |
xtconstant.ACCOUNT_STATUS_INITING | 4 | 初始化中 |
xtconstant.ACCOUNT_STATUS_CORRECTING | 5 | 数据刷新校正中 |
xtconstant.ACCOUNT_STATUS_CLOSED | 6 | 收盘后 |
xtconstant.ACCOUNT_STATUS_ASSIS_FAIL | 7 | 穿透副链接断开 |
xtconstant.ACCOUNT_STATUS_DISABLEBYSYS | 8 | 系统停用(总线使用-密码错误超限) |
xtconstant.ACCOUNT_STATUS_DISABLEBYUSER | 9 | 用户停用(总线使用) |
6.5 资产XtAsset
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型 |
account_id | str | 资金账号 |
cash | float | 可用金额 |
frozen_cash | float | 冻结金额 |
market_value | float | 持仓市值 |
total_asset | float | 总资产 |
6.6 委托XtOrder
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型,参见数据字典在新窗口打开 |
account_id | str | 资金账号 |
stock_code | str | 证券代码,例如”600000.SH” |
order_id | int | 订单编号 |
order_sysid | str | 柜台合同编号 |
order_time | int | 报单时间 |
order_type | int | 委托类型,参见数据字典在新窗口打开 |
order_volume | int | 委托数量 |
price_type | int | 报价类型,该字段在返回时为柜台返回类型,不等价于下单传入的price_type,枚举值不一样功能一样,参见数据字典在新窗口打开 |
price | float | 委托价格 |
traded_volume | int | 成交数量 |
traded_price | float | 成交均价 |
order_status | int | 委托状态,参见数据字典在新窗口打开 |
status_msg | str | 委托状态描述,如废单原因 |
strategy_name | str | 策略名称 |
order_remark | str | 委托备注 |
direction | int | 多空方向,股票不适用;参见数据字典在新窗口打开 |
offset_flag | int | 交易操作,用此字段区分股票买卖,期货开、平仓,期权买卖等;参见数据字典在新窗口打开 |
6.7 成交XtTrade
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型,参见数据字典在新窗口打开 |
account_id | str | 资金账号 |
stock_code | str | 证券代码 |
order_type | int | 委托类型,参见数据字典在新窗口打开 |
traded_id | str | 成交编号 |
traded_time | int | 成交时间 |
traded_price | float | 成交均价 |
traded_volume | int | 成交数量 |
traded_amount | float | 成交金额 |
order_id | int | 订单编号 |
order_sysid | str | 柜台合同编号 |
strategy_name | str | 策略名称 |
order_remark | str | 委托备注 |
direction | int | 多空方向,股票不适用;参见数据字典在新窗口打开 |
offset_flag | int | 交易操作,用此字段区分股票买卖,期货开、平仓,期权买卖等;参见数据字典在新窗口打开 |
6.8 持仓XtPosition
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型,参见数据字典在新窗口打开 |
account_id | str | 资金账号 |
stock_code | str | 证券代码 |
volume | int | 持仓数量 |
can_use_volume | int | 可用数量 |
open_price | float | 开仓价 |
market_value | float | 市值 |
frozen_volume | int | 冻结数量 |
on_road_volume | int | 在途股份 |
yesterday_volume | int | 昨夜拥股 |
avg_price | float | 成本价 |
direction | int | 多空方向,股票不适用 |
6.9 异步下单委托反馈XtOrderResponse
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型,参见数据字典在新窗口打开 |
account_id | str | 资金账号 |
order_id | int | 订单编号 |
strategy_name | str | 策略名称 |
order_remark | str | 委托备注 |
seq | int | 异步下单的请求序号 |
6.10 异步撤单委托反馈XtCancelOrderResponse
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型,参见数据字典在新窗口打开 |
account_id | str | 资金账号 |
order_id | int | 订单编号 |
order_sysid | str | 柜台委托编号 |
cancel_result | int | 撤单结果 |
seq | int | 异步撤单的请求序号 |
6.11 下单失败错误XtOrderError
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型,参见数据字典在新窗口打开 |
account_id | str | 资金账号 |
order_id | int | 订单编号 |
error_id | int | 下单失败错误码 |
error_msg | str | 下单失败具体信息 |
strategy_name | str | 策略名称 |
order_remark | str | 委托备注 |
6.12 撤单失败错误XtCancelError
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型,参见数据字典在新窗口打开 |
account_id | str | 资金账号 |
order_id | int | 订单编号 |
market | int | 交易市场 0:上海 1:深圳 |
order_sysid | str | 柜台委托编号 |
error_id | int | 下单失败错误码 |
error_msg | str | 下单失败具体信息 |
6.13 账号信息XtAccountInfo
属性 | 类型 | 注释 |
---|---|---|
account_type | int | 账号类型,参见数据字典在新窗口打开 |
account_id | str | 资金账号 |
broker_type | int | 同 account_type |
platform_id | int | 平台号 |
account_classification | int | 账号分类 |
login_status | int | 账号状态,参见数据字典 |
开通miniQMT
如果你还没有开通miniQMT,可以点击此处开通,低费率、低门槛,欢迎咨询。
开发日志
我正在紧锣密鼓地开发系统,完善功能,点击此处了解最新进展。