港股通下单passorder参数应该使用哪个?
passorder(
24, # opType: 卖出
1101, # orderType: 信用/普通
C.account_id,
00700.HGT,
11, # prType
order_price,
amount,
'',
2, # quickTrade: 2=Python
req_id,
C
盘中能卖出港股通了。想了解下,开盘和收盘集合竞价阶段,prType 是继续用 11 还是用其它?
问题描述
解决方案
在 QMT 平台中进行港股通(沪港通/深港通)交易时,passorder 函数的参数设置与 A 股有所不同,特别是 prType(价格类型)参数。港交所对订单类型有严格的规定。
1. 港股通专属的 prType(价格类型)
根据 QMT API 文档的底层枚举定义,港股通有专属的价格类型代码:
92:港股通竞价限价(At-auction Limit Order)93:港股通增强限价(Enhanced Limit Order)94:港股通零股限价(Special Limit Order for Odd Lots)
2. 针对不同交易时段的 prType 选择
你提到盘中使用了 11(指定价/模型价)能够成交,这可能是因为券商柜台或 QMT 底层做了一定的兼容转换。但为了确保交易的稳定性和合规性,强烈建议按照港交所的规则使用专属的 prType:
A. 盘中持续交易阶段(09:30-12:00, 13:00-16:00)
- 推荐使用:
93(增强限价) - 说明:增强限价盘最多可同时与十条轮候队伍进行配对,是港股盘中交易最常用的订单类型。
B. 开盘集合竞价(09:00-09:20)与 收盘集合竞价(16:00-16:10)
- 必须使用:
92(竞价限价) - 说明:在港股的开市前时段和收市竞价交易时段,系统只接受竞价盘及竞价限价盘。如果你在这个阶段继续使用
11或93,极大概率会被交易所拒单(废单)。
C. 碎股/零股卖出
- 必须使用:
94(零股限价) - 说明:港股通买入必须是整手,但因为分红等原因产生的零股(不足一手),卖出时必须使用零股限价盘。
3. 代码示例调整
为了让你的策略在全时段都能稳定运行,建议在代码中加入时间判断,动态传入 prType:
import datetime
def handlebar(ContextInfo):
# 获取当前时间
now_time = datetime.datetime.now().strftime('%H%M')
# 判断交易时段以确定 prType
if ('0900' <= now_time <= '0920') or ('1600' <= now_time <= '1610'):
# 集合竞价阶段:使用竞价限价
pr_type = 92
else:
# 盘中持续交易阶段:使用增强限价
pr_type = 93
# 港股通卖出 opType 为 24 (买入为 23)
passorder(
24, # opType: 24=港股通卖出
1101, # orderType: 单股单账号普通
ContextInfo.account_id,
'00700.HK', # 注意:港股通后缀通常为 .HK,具体请参考 QMT 市场代码表
pr_type, # 动态传入的价格类型
order_price, # 委托价格
amount, # 委托数量
'HGT_Sell_Strategy',# strategyName
2, # quickTrade
req_id, # userOrderId
ContextInfo
)
总结:盘中请改用 93,开盘和收盘集合竞价阶段必须使用 92。