3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化交易或大资金拆单交易中,直接使用普通限价单或市价单容易暴露交易意图并对市场产生较大的冲击成本。QMT 平台的 smart_algo_passorder 智能算法交易接口提供了多种高级算法,其中 PINLINE(跟价算法) 和 FLOAT(盘口算法) 是实现动态跟价与隐蔽下单的理想选择。
QMT 中通过 smart_algo_passorder 触发智能算法,其关键参数配置如下:
smart_algo_passorder(
opType, # 操作类型,如 23: 股票买入,24: 股票卖出
orderType, # 下单方式,如 1101: 单股单账号股/手下单
accountID, # 资金账号
orderCode, # 股票代码,如 '000001.SZ'
prType, # 选价类型(如 5: 最新价, 11: 指定价/模型价)
price, # 报价价格
volume, # 下单总量
strategyName, # 策略名称
quickTrade, # 触发机制 (0: 否, 1: 是)
userOrderId, # 投资备注 / 订单自定义 ID
smartAlgoType, # 智能算法类型 ('PINLINE' 或 'FLOAT')
limitOverRate, # 量比 (0-100)
minAmountPerOrder, # 单笔最小委托金额
targetPriceLevel, # 目标价格层级 (1: 己方一档, 6: 最新价, 7: 对方盘口等)
ContextInfo
)
以下策略展示了如何在 QMT 中分别配置 PINLINE 与 FLOAT 算法实现隐蔽下单:
#coding:gbk
import time
def init(ContextInfo):
# 1. 设定资金账号
ContextInfo.accID = '6000000105'
ContextInfo.set_account(ContextInfo.accID)
# 2. 设定标的股票
ContextInfo.stock = '000001.SZ'
ContextInfo.set_universe([ContextInfo.stock])
# 标记订单是否已发送
ContextInfo.order_sent = False
def handlebar(ContextInfo):
# 只在最后一根 Bar 上驱动执行
if not ContextInfo.is_last_bar() or ContextInfo.order_sent:
return
# 示例 1: 使用 PINLINE (跟价算法) 隐蔽买入
# 参数配置:买入 20000 股,设置量比上限 15%,单笔最小金额 10000 元,挂单目标层级为己方一档 (1)
smart_algo_passorder(
23, # opType: 股票买入
1101, # orderType: 单股单账号股数下单
ContextInfo.accID, # 资金账号
ContextInfo.stock, # 代码
5, # prType: 最新价
-1, # price
20000, # volume: 总量 20,000 股
"PINLINE_Buy", # strategyName
1, # quickTrade: 立即下单
"PINLINE_Order_01", # userOrderId
"PINLINE", # smartAlgoType: 跟价算法
15, # limitOverRate: 量比 15%
10000, # minAmountPerOrder: 最小金额 10,000 元
1, # targetPriceLevel: 己方盘口1档
ContextInfo
)
print("已成功提交 PINLINE 跟价算法下单任务")
# 示例 2: 使用 FLOAT (盘口算法) 隐蔽卖出
# 参数配置:卖出 30000 股,设置量比上限 20%,单笔最小金额 5000 元
smart_algo_passorder(
24, # opType: 股票卖出
1101, # orderType
ContextInfo.accID,
ContextInfo.stock,
5, # prType
-1,
30000, # volume: 总量 30,000 股
"FLOAT_Sell", # strategyName
1, # quickTrade
"FLOAT_Order_01", # userOrderId
"FLOAT", # smartAlgoType: 盘口算法
20, # limitOverRate: 量比 20%
5000, # minAmountPerOrder: 最小金额 5,000 元
7, # targetPriceLevel: 对方盘口
ContextInfo
)
print("已成功提交 FLOAT 盘口算法下单任务")
ContextInfo.order_sent = True
limitOverRate):建议将量比限制在 10% - 30% 之间,过高会导致盘口冲击过大暴露意图,过低可能导致行情剧烈变化时成交完成率不足。minAmountPerOrder):合理设置单笔最小委托金额,避免产生过多碎单,降低交易所报单频率超限风险。init 中调用 ContextInfo.set_account(),保证交易主推和任务状态的回调响应正常。