3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT(迅投量化交易系统)中,algo_passorder 函数允许开发者基于客户端函数交易面板中设置的参数或代码中传入的自定义字典参数,实现更精细化的算法拆单与超价委托策略。相比于普通的 passorder,algo_passorder 能有效降低大单对市场的冲击,并提高追单与成交履约率。
algo_passorder 的基本调用格式如下:
algo_passorder(opType, orderType, accountid, orderCode, prType, modelprice, volume, strategyName, quickTrade, userOrderId, userOrderParam, ContextInfo)
23 代表股票买入,24 代表股票卖出。1101(单股、单账号、普通、股/手方式下单)。prType = -1 时,系统会自动使用 userOrderParam 或交易面板中设定的报价类型与超价参数。dict),用于指定自定义的算法拆单及超价控制参数。通过配置 userOrderParam 字典,可以精细化控制委托方式:
| 参数名 (Key) | 说明 | 可选值/示例 | 说明 |
|---|---|---|---|
OrderType |
交易模式 | 0: 普通交易, 1: 算法交易, 2: 随机量交易 |
|
PriceType |
报价方式 | 数值同 prType(如 5: 最新价, 11: 指定价) |
|
SuperPriceType |
单笔超价类型 | 0: 按比例, 1: 按数值 |
|
SuperPriceValue |
单笔超价(按数值) | 如 0.02(加价 2 分钱) |
|
SuperPriceRate |
单笔超价(按比例) | 取值范围 [0 - 1] |
|
MaxOrderCount |
最大拆单/委托次数 | 如 20 |
|
PlaceOrderInterval |
下撤单时间间隔 | 单位为秒,如 15(每 15 秒检查并重新下撤单) |
以下是一个在 handlebar 中使用 algo_passorder 实现最新价超价 0.02 元买入,且每隔 15 秒重新下撤单拆单的完整策略示例:
#encoding:gbk
def init(ContextInfo):
# 设定交易资金账号
ContextInfo.accid = '6000000001'
ContextInfo.set_account(ContextInfo.accid)
# 设置股票池
ContextInfo.set_universe(['000001.SZ'])
def handlebar(ContextInfo):
# 仅在最后一根 K 线运行算法交易
if not ContextInfo.is_last_bar():
return
stock_code = '000001.SZ'
# 配置算法交易参数字典
user_params = {
"OrderType": 1, # 1: 算法交易
"PriceType": 5, # 报价方式取最新价 (5)
"SuperPriceType": 1, # 0: 按比例, 1: 按固定数值超价
"SuperPriceValue": 0.02, # 固定超价 0.02 元
"MaxOrderCount": 10, # 最大下撤单拆单次数
"PlaceOrderInterval": 15 # 下撤单间隔为 15 秒
}
# 调用 algo_passorder 下单
# 参数:股票买入(23), 单股单账号(1101), 账号, 代码, prType(-1使用user_params的报价), 价格(-1), 数量(1000股), 策略名, quickTrade(2:立即触发), 备注, 算法参数, ContextInfo
algo_passorder(
23,
1101,
ContextInfo.accid,
stock_code,
-1,
-1,
1000,
'MyAlgoStrategy',
2,
'algo_order_001',
user_params,
ContextInfo
)
print(f"已对 {stock_code} 发起 algo_passorder 算法拆单任务")
prType 填 -1:若要让 userOrderParam 中的 PriceType 和超价参数生效,algo_passorder 的第 5 个参数 prType 请传入 -1。quickTrade 模式:实盘/模拟盘中建议设置 quickTrade = 1 或 2,使策略在调用时能即时触发下单逻辑。PlaceOrderInterval 后,系统会自动在间隔时间到达后对未成交部分进行撤单并重新按超价规则申报,直到达到 MaxOrderCount 或全部成交。