带你详细了解miniQMT的xttrader模块 (第三篇)下单接口说明,让你一看就会!

QUANT 2025-12-11 00:53:48 57 举报

miniQMT 使用的是 XtQuantTrader API,其中的下单接口有两个:


 1 order_stock() - 同步下单

 2 order_stock_async() - 异步下单


同步下单适合:价值投资、日间趋势跟踪、仓位调整等低频操作,需要确认每笔交易状态

异步下单适合:高频交易、做市策略、套利策略、量化对冲等需要快速发出大量指令的场景

1. 同步下单:order_stock()

order_id = xt_trader.order_stock(
    account,           # 账户对象
    stock_code,        # 股票代码,如 '600000.SH'
    order_type,        # 委托类型,如 STOCK_BUY(买入)
    order_volume,      # 委托数量
    price_type,        # 报价类型,如 FIX_PRICE(固定价格)
    price,             # 委托价格
    strategy_name,     # 策略名称
    order_remark       # 委托备注
)

返回值:
• 成功时:返回 order_id(订单编号),这是一个整数
• 失败时:返回 None

特点:
• 程序会阻塞,等待下单请求被发送到交易所
• 耗时较长(以本地为准)
• 适合下单量不大的场景

示例代码:

# 使用同步下单接口的完整示例
from xtquant import xtconstant
from xtquant.xttrader import XtQuantTrader
from xtquant.xttype import StockAccount

# 创建交易实例和账户对象
xt_trader = XtQuantTrader(path, session_id)
account = StockAccount("1000000365")

# 正确调用同步下单接口
order_id = xt_trader.order_stock(
    account,                # 账户对象
    "600000.SH",            # 股票代码
    xtconstant.STOCK_BUY,    # 委托类型:买入
    100,                    # 委托数量:100股
    xtconstant.FIX_PRICE,    # 报价类型:限价
    10.5,                   # 委托价格:10.5元
    "my_strategy",          # 策略名称
    "test_order"            # 委托备注
)

if order_id != -1:
    print(f"同步下单成功,订单ID: {order_id}")
else:
    print("同步下单失败")

2. 异步下单:order_stock_async()

seq = xt_trader.order_stock_async(
    account,           # 账户对象
    stock_code,        # 股票代码
    order_type,        # 委托类型
    order_volume,      # 委托数量
    price_type,        # 报价类型
    price,             # 委托价格
    strategy_name,     # 策略名称
    order_remark       # 委托备注
)

返回值:
• 成功时:返回 seq(序号),这是一个整数
• 失败时:返回 None 或负数

特点:
• 程序不阻塞,立刻返回
• 耗时极短(以本地为准)
• 需要通过 on_order_stock_async_response 回调获取 order_id
• 适合高频下单或批量下单

示例代码:

# 使用异步下单接口的完整示例
from xtquant import xtconstant
from xtquant.xttrader import XtQuantTrader
from xtquant.xttype import StockAccount

# 创建交易实例和账户对象
xt_trader = XtQuantTrader(path, session_id)
account = StockAccount("1000000365")

# 正确调用异步下单接口
seq = xt_trader.order_stock_async(
    account,                # 账户对象
    "600000.SH",            # 股票代码
    xtconstant.STOCK_BUY,    # 委托类型:买入
    100,                    # 委托数量:100股
    xtconstant.LATEST_PRICE, # 报价类型:最新价
    0,                      # 委托价格:市价单填0
    "hft_strategy",         # 策略名称
    "fast_order"            # 委托备注
)

if seq > 0:
    print(f"异步下单请求已接收,序列号: {seq}")
else:
    print("异步下单请求失败")

两者对比

后面我们会基于这两种下单方式进行逐一的剖析拆解,尽情期待!

  • QMT/miniQMT免费申请

  • QMT免费领取学习案例

  • QMT落地辅助策略代写服务

  • 需要的朋友欢迎联系  ~


尊重知识,尊重市场 1

著作权归文章作者所有。 未经作者允许禁止转载!

最新回复 ( 0 )
发新帖
0
DEPRECATED: addslashes(): Passing null to parameter #1 ($string) of type string is deprecated (/data/user/htdocs/xiunophp/xiunophp.min.php:48)