实盘交易接口教程

我是Mr.看海,由于我开发的看海量化交易系统是基于miniQMT的行情和交易接口,所以在此我将miniQMT的使用教程采用案例集的形式进行讲解,该手册会不断完善和丰富,为做miniQMT的开发的朋友提供便利。
需要注意的是,本手册仅作为官方手册的辅助教程,最权威的接口请以官方说明文档为准:
官方手册请点击这里


在前几篇的文章中讲到,我正在开发的看海量化交易系统,底层是使用miniQMT的Python接口实现的数据获取和交易执行。

通过前几篇文章已经基本上将行情模块XtData的主要功能讲完了,本文将系统介绍XtQuant的交易模块(XtTrade)的使用方法,对常用功能进行演示和讲解。由于行情交易模块是有机整体,所以就不再拆分章节,而是这一篇文章全讲完了。

1. 基本概念介绍

1.1 XtTrade模块概述

XtTrade是XtQuant中专门用于交易的模块。它提供了完整的交易功能接口,包括:

  • 系统设置接口:用于创建API实例、注册回调、启动交易线程等基础功能
  • 操作接口:提供下单、撤单、订阅等交易操作功能
  • 查询接口:用于查询账户资产、持仓、委托、成交等信息
  • 回调接口:用于接收交易推送信息

1.2 交易流程概述

使用XtTrade进行交易的基本流程如下:

  1. 创建API实例并注册回调
  2. 启动交易线程并建立连接
  3. 订阅账户信息
  4. 进行交易操作(下单、撤单等)
  5. 接收交易推送信息
  6. 程序结束时取消订阅并断开连接

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,可以点击此处开通,低费率、低门槛,欢迎咨询。

开发日志

我正在紧锣密鼓地开发系统,完善功能,点击此处了解最新进展。

风险提示

投资有风险,开户需谨慎。本系统仅为投资者提供量化交易相关的数据处理与分析工具,不构成任何投资建议。 请您在审慎思考后作出选择。特别声明:本系统对您与券商之间的交易、合作不承担任何法律责任。 市场有风险,投资需谨慎。

© 2024 看海量化交易系统 版权所有

官网:www.khsci.com/khQuant