3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在量化交易中,为了减少大单对市场的冲击成本(Market Impact),投资者通常会使用智能算法交易。QMT 平台提供了强大的 smart_algo_passorder 接口,支持包括 VP(跟量) 和 PINLINE(跟价) 在内的多种智能拆单算法。本文将为您详细解析这两种算法的原理、参数配置方法及 Python 代码实现。
VP(Volume Participation,跟量算法):
PINLINE(跟价算法):
在 QMT 中,智能算法交易通过以下函数触发:
smart_algo_passorder(opType, orderType, accountid, orderCode, prType, modelprice, volume, strageName, quickTrade, userid, smartAlgoType, limitOverRate, minAmountPerOrder, [targetPriceLevel], ContextInfo)
23,股票卖出填 24;信用账户买入填 33,卖出填 34。1101(单股单账号股数下单)或 1102(金额下单)。"VP",PINLINE 算法填 "PINLINE"。0 - 100(代表 0% - 100%)。对于 VP 算法,此参数决定了跟单的比例。0 - 100000,默认填 0。"09:30:00", "14:30:00"。以下是在 QMT 策略中配置 VP 跟量 和 PINLINE 跟价 的完整 Python 示例:
#coding:gbk
def init(ContextInfo):
# 设定交易账号
ContextInfo.accid = '6000000105'
ContextInfo.set_account(ContextInfo.accid)
ContextInfo.stock = '000001.SZ' # 平安银行
ContextInfo.set_universe([ContextInfo.stock])
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
# 示例 1:配置 VP(跟量)算法
# 目标:买入 50000 股,使用 VP 算法,设定量比(参与率)为 15%,最小委托金额为 0
# 运行时间限制在 09:30:00 至 14:30:00
print("触发 VP 跟量算法交易...")
smart_algo_passorder(
23, # opType: 股票买入
1101, # orderType: 按股数下单
ContextInfo.accid, # 资金账号
ContextInfo.stock, # 股票代码
5, # prType: 最新价
-1, # modelprice: 非指定价填 -1
50000, # volume: 总买入量 50000 股
"VP_Strategy", # strageName: 策略名
1, # quickTrade: 1 立即触发
"remark_vp", # userid: 投资备注
"VP", # smartAlgoType: 算法类型为 VP
15, # limitOverRate: 量比 15%
0, # minAmountPerOrder: 最小委托金额 0
0, # targetPriceLevel: 缺省
'09:30:00', # startTime: 开始时间
'14:30:00', # endTime: 截止时间
ContextInfo
)
# 示例 2:配置 PINLINE(跟价)算法
# 目标:卖出 30000 股,使用 PINLINE 算法,量比设定为 10%
print("触发 PINLINE 跟价算法交易...")
smart_algo_passorder(
24, # opType: 股票卖出
1101, # orderType: 按股数下单
ContextInfo.accid, # 资金账号
ContextInfo.stock, # 股票代码
5, # prType: 最新价
-1, # modelprice: -1
30000, # volume: 总卖出量 30000 股
"Pinline_Strategy", # strageName: 策略名
1, # quickTrade: 1 立即触发
"remark_pinline", # userid: 投资备注
"PINLINE", # smartAlgoType: 算法类型为 PINLINE
10, # limitOverRate: 量比 10%
0, # minAmountPerOrder: 最小委托金额 0
ContextInfo
)
startTime 和 endTime,避开开盘集合竞价(09:15-09:25)和收盘集合竞价(14:57-15:00)等高波动、非连续双向竞价时段。