3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
limitOverRate 控制大单成交量比在执行大单交易或机构级调仓时,直接下单往往会对市场冲击过大导致不必要的滑点损失。QMT 平台提供了 smart_algo_passorder 智能算法交易函数,可以通过设置 limitOverRate 参数有效控制订单在市场中的成交量比例(量比/参与率)。
smart_algo_passordersmart_algo_passorder 是 QMT 中用于执行智能算法(如 TWAP、VWAP、跟量 VP 等)的交易函数。
smart_algo_passorder(opType, orderType, accountid, orderCode, prType, modelprice, volume, strategyName, quickTrade, userOrderId, smartAlgoType, limitOverRate, minAmountPerOrder, [targetPriceLevel], ContextInfo)
limitOverRate0 ~ 100 的整数,代表百分比 0% ~ 100%。20,表示算法在拆单执行时,下单量不会超过市场同期总成交量的 20%,能有效降低大单对市场的冲击与影响。smartAlgoType)TWAP:时间加权平均价格算法,按固定时间均匀拆单。VWAP:成交量加权平均价格算法,依据预测的市场成交量分布比例拆单。VP:跟量算法,严格按照实时市场成交量的设定比例(即 limitOverRate)跟随下单。ICEBERG:冰山算法,隐藏真实大单,仅在盘口展示小额挂单。以下示例展示了如何在 QMT 中针对股票 000001.SZ 发起一笔 50,000 股的买入任务,采用 TWAP 算法并将市场参与率/量比限制在 20% 以内:
#coding:gbk
import time
def init(ContextInfo):
# 设定交易资金账号
ContextInfo.set_account('600000105')
def handlebar(ContextInfo):
# 仅在最后一根 Bar 上触发算法交易任务
if not ContextInfo.is_last_bar():
return
account_id = '600000105'
stock_code = '000001.SZ'
# 参数定义
opType = 23 # 23: 股票买入
orderType = 1101 # 1101: 单股、单账号、普通、按股数下单
prType = 5 # 5: 最新价
price = -1 # 非指定价模式填 -1
volume = 50000 # 买入总股数
strategy_name = "TWAP_Algo"
quickTrade = 1 # 1: 立即触发下单任务
user_order_id = "remark_001"
smartAlgoType = "TWAP" # 使用 TWAP 算法
limitOverRate = 20 # 设置量比上限为 20%
minAmountPerOrder = 0 # 最小委托金额(0 表示不限制)
# 调用智能算法下单函数
smart_algo_passorder(
opType, orderType, account_id, stock_code,
prType, price, volume,
strategy_name, quickTrade, user_order_id,
smartAlgoType, limitOverRate, minAmountPerOrder,
ContextInfo
)
print(f"已成功提交 {stock_code} 的 {smartAlgoType} 智能算法交易任务,量比限制:{limitOverRate}%")
limitOverRate 主要针对股票买卖及两融交易,网格算法等特定类型无需设置此项。minAmountPerOrder 参数使用,避免因量比控制导致拆单后的单笔委托金额过小而频繁废单。startTime(如 '09:30:00')与 endTime(如 '14:30:00')。