3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在机构和量化交易中,直接挂大单容易产生较大的市场冲击成本并暴露交易意图。为了实现隐藏意图、降低冲击成本,我们可以使用 QMT 平台提供的 smart_algo_passorder 接口配置智能算法交易(如 VWAP、TWAP 等)进行自动拆单。
VWAP(Volume-Weighted Average Price,成交量加权平均价格) 是一种根据历史预测成交量分布来分割大单的拆单算法。它会在设定的时间段内,按照市场的成交量分布曲线将大单拆分并分批挂出,力求使最终的平均成交价格贴近市场的 VWAP 均价。
smart_algo_passorder(opType, orderType, accountid, orderCode, prType, modelprice, volume, strategyName, quickTrade, userOrderId, smartAlgoType, limitOverRate, minAmountPerOrder, [targetPriceLevel, startTime, endTime], ContextInfo)
23,股票卖出填 24;融资买入填 27,融券卖出填 28 等。1101,金额下单填 1102。'000001.SZ')。-1 表示按默认类型/挂单类型,5 为最新价,11 为模型指定价。-1)。'VWAP' 即开启 VWAP 算法。0 表示不限制。'09:30:00', '14:30:00'。以下是在 QMT 策略中,使用 smart_algo_passorder 接口进行 VWAP 拆单买入股票的完整策略示例:
#encoding:gbk
def init(ContextInfo):
# 设置交易账号
ContextInfo.account_id = '6000000105'
ContextInfo.set_account(ContextInfo.account_id)
# 设置股票池
ContextInfo.stock = '000001.SZ'
ContextInfo.set_universe([ContextInfo.stock])
def handlebar(ContextInfo):
# 仅在最后一根 K 线/最新 tick 触发一次下单逻辑
if not ContextInfo.is_last_bar():
return
account = ContextInfo.account_id
stock = ContextInfo.stock
# 策略参数配置
opType = 23 # 股票买入
orderType = 1101 # 单股、单账号、普通股数下单
prType = 5 # 选价类型:最新价
price = -1 # prType=5 时 price 可填 -1
total_volume = 100000 # 拟买入总股数:10万股
strategy_name = "VWAP_Strategy"
quickTrade = 1 # 立即触发下单
user_order_id = "vwap_buy_001"
# VWAP 智能算法配置
smartAlgoType = "VWAP" # 算法类型为 VWAP
limitOverRate = 15 # 限制参与量比不超过市场成交量的 15%
minAmount = 10000 # 单笔拆单最小金额 10,000 元
targetLevel = 1 # 盘口档位:己方盘口1(可缺省或按需设置)
start_time = '09:30:00' # 算法开始执行时间
end_time = '14:30:00' # 算法执行截止时间
print(f"开始发送 VWAP 智能拆单指令,标的: {stock}, 总量: {total_volume} 股")
# 调用智能算法交易接口
smart_algo_passorder(
opType,
orderType,
account,
stock,
prType,
price,
total_volume,
strategy_name,
quickTrade,
user_order_id,
smartAlgoType,
limitOverRate,
minAmount,
targetLevel,
start_time,
end_time,
ContextInfo
)
init() 中通过 ContextInfo.set_account() 绑定账号,确保能正确接收算法任务的委托主推。startTime 与 endTime,预留足够的执行窗口(如避开集合竞价或尾盘剧烈波动期),使 VWAP 拆单有充裕的时间分批平滑成交。