3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 策略中,要以涨停价买入或跌停价卖出,最直接的方法是使用核心交易函数 passorder,并将报价类型参数 prType 设置为 12(代表涨跌停价)。
passorderprType:设置为 12。
opType=23)时,prType=12 会自动使用涨停价报单。opType=24)时,prType=12 会自动使用跌停价报单。price:当 prType 为 12 时,具体的 price 数值会被忽略,通常填 -1 或 0 即可。以下是一个完整的策略示例,展示了如何在 handlebar 中以涨停价买入平安银行,并以跌停价卖出。
# -*- coding: gbk -*-
def init(ContextInfo):
# 1. 设置资金账号 (请替换为您真实的资金账号)
ContextInfo.accID = '6000000000'
ContextInfo.set_account(ContextInfo.accID)
print("策略初始化完成")
def handlebar(ContextInfo):
# 获取当前K线索引
index = ContextInfo.barpos
# 获取当前时间
realtime = ContextInfo.get_bar_timetag(index)
# 示例代码:仅在最后一根K线(实时行情)运行
if not ContextInfo.is_last_bar():
return
# ------------------------------------------------------------------
# 场景 1:以涨停价买入 100 股 平安银行 (000001.SZ)
# ------------------------------------------------------------------
# opType=23 (买入)
# orderType=1101 (单股单账号普通股/手下单)
# prType=12 (涨跌停价 -> 买入时即为涨停价)
# price=-1 (忽略)
# volume=100 (股数)
passorder(23, 1101, ContextInfo.accID, '000001.SZ', 12, -1, 100, ContextInfo)
print("已发出涨停价买入委托")
# ------------------------------------------------------------------
# 场景 2:以跌停价卖出 100 股 平安银行 (000001.SZ)
# ------------------------------------------------------------------
# opType=24 (卖出)
# prType=12 (涨跌停价 -> 卖出时即为跌停价)
passorder(24, 1101, ContextInfo.accID, '000001.SZ', 12, -1, 100, ContextInfo)
print("已发出跌停价卖出委托")
在 passorder(opType, orderType, accountID, orderCode, prType, price, volume, ContextInfo) 中:
opType (操作类型):
23: 股票买入24: 股票卖出prType (报价类型):
12: 涨跌停价。这是实现你需求的关键参数。40 代表涨停价,41 代表跌停价,但在 passorder 中通常使用 12 即可根据买卖方向自动匹配)。price (价格):
prType 设为 12 时,此参数无效,填 -1 即可。Q: 为什么使用涨停价买入?
A: 在实盘交易中,以涨停价挂单买入(或跌停价卖出)通常是为了确保成交(即“市价单”的一种模拟方式),系统会以对手方最优价格成交,未成交部分会继续挂在涨停价上。
Q: 这种方式支持回测吗?
A: 支持。在回测模式下,prType=12 会按照当根 K 线的涨跌停价格进行撮合逻辑处理。
Q: 如果我想用 order_shares 等辅助函数怎么办?
A: 辅助函数如 order_shares 的 style 参数虽然支持 'MARKET'(市价),但 QMT 的 passorder 更加底层和精确。如果你必须使用涨/跌停价,建议直接使用 passorder。如果使用辅助函数,通常无法直接指定“涨停价”这个概念,除非你手动计算价格并使用 'FIX' 模式。
Q: 如何手动计算涨跌停价并下单(不推荐,但可行)?
A: 你可以通过 get_instrumentdetail 获取昨收价,然后根据证券类型(主板10%,科创/创业20%)计算涨跌停价格,然后使用 prType=11 (指定价) 下单。但直接使用 prType=12 更安全且方便。