3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化实盘交易中,当面临大单需要拆分下单以减少市场冲击成本时,选择合适的智能算法至关重要。QMT 平台提供了多种智能算法,其中**冰山算法(ICEBERG)和盘口算法(FLOAT)**是两种非常经典的拆单与盘口跟踪算法。本文将从执行效率、交易成本及参数配置三个维度为您深度解析。
在 QMT 中,这两种算法均通过 ContextInfo.smart_algo_passorder 接口执行。以下是关键参数的配置逻辑:
smartAlgoType: 算法类型。冰山算法传入 'ICEBERG',盘口算法传入 'FLOAT'。limitOverRate: 量比控制(0-100),限制算法委托量占市场成交量的最大比例,防止因自身交易占比过高推高成本。minAmountPerOrder: 智能算法单笔最小委托金额(0-100000元),用于控制拆单后的单笔下限。targetPriceLevel: 仅针对冰山算法有效。用于指定冰山公开挂单的价格档位:
1:己方盘口12:己方盘口23:己方盘口34:己方盘口45:己方盘口56:最新价7:对方盘口以下是在 QMT 中分别调用冰山算法和盘口算法进行买入的 Python 代码配置模板:
#coding:gbk
def init(ContextInfo):
# 设定交易账号
ContextInfo.accid = '6000000105'
ContextInfo.set_account(ContextInfo.accid)
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
stock_code = '000001.SZ' # 平安银行
total_volume = 100000 # 计划买入10万股
# ==========================================
# 配置 1:冰山算法(ICEBERG)—— 追求低冲击成本、高隐蔽性
# ==========================================
# 参数说明:
# smartAlgoType = 'ICEBERG'
# limitOverRate = 15 (量比控制在15%以内)
# minAmountPerOrder = 20000 (单笔委托不低于2万元)
# targetPriceLevel = 1 (挂在己方买一档,被动等待成交)
# 有效时间:09:30:00 至 14:30:00
ContextInfo.smart_algo_passorder(
23, 1101, ContextInfo.accid, stock_code, 5, -1, total_volume,
"Iceberg_Strategy", 1, "remark_iceberg",
"ICEBERG", 15, 20000, 1,
'09:30:00', '14:30:00', ContextInfo
)
# ==========================================
# 配置 2:盘口算法(FLOAT)—— 追求高执行效率、快速成交
# ==========================================
# 参数说明:
# smartAlgoType = 'FLOAT'
# limitOverRate = 25 (允许量比放大至25%)
# minAmountPerOrder = 10000 (单笔委托不低于1万元)
# targetPriceLevel = 0 (盘口算法无需此参数,可缺省或填0)
# 有效时间:09:30:00 至 14:55:00
# ContextInfo.smart_algo_passorder(
# 23, 1101, ContextInfo.accid, stock_code, 5, -1, total_volume,
# "Float_Strategy", 1, "remark_float",
# "FLOAT", 25, 10000, 0,
# '09:30:00', '14:55:00', ContextInfo
# )
limitOverRate)适当调高,确保在收盘前完成目标仓位。