3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在执行大额订单交易时,直接挂出大单容易暴露交易意图并引发市场跟风,从而增加冲击成本。QMT 平台提供了 algo_passorder 算法交易接口,支持通过设置 OrderType: 2(即 OTP_RANDVOLUME 随机量交易模式)实现自动拆单与随机委托,有效隐藏真实交易意图。
algo_passorder在 QMT 中,通过 algo_passorder 传入自定义参数字典 userOrderParam,可以覆盖默认的交易面板参数,实现灵活的算法拆单控制。
23 代表股票买入,24 代表股票卖出)。1101 单股单账号股/手方式下单)。'000001.SZ')。-1 时使用 userOrderParam 中指定的报价方式)。1 或 2 立即触发)。在 userOrderParam 字典中,通过配置以下关键字段来启动随机拆单逻辑:
| 参数名 | 类型 | 说明 | 示例值 |
|---|---|---|---|
OrderType |
int | 交易模式,0: 普通交易,1: 算法交易,2: 随机量交易 (OTP_RANDVOLUME) |
2 |
MaxOrderCount |
int | 最大拆单/委托次数 | 20 |
SingleNumMin |
int | 单笔下单量最小值 | 100 |
SingleNumMax |
int | 单笔下单量最大值 | 500 |
PlaceOrderInterval |
int | 下撤单时间间隔(秒) | 10 |
PriceType |
int | 报价方式(同 prType,如 5 最新价,11 指定价) |
5 |
以下是在 handlebar 中通过 algo_passorder 发起随机量隐藏拆单的完整 Python 示例:
import time
def init(ContextInfo):
# 设定股票池与交易账号
ContextInfo.set_universe(['000001.SZ'])
ContextInfo.account = '6000000001'
ContextInfo.set_account(ContextInfo.account)
def handlebar(ContextInfo):
# 仅在最后一根 K 线且为最新 Tick 时触发
if not ContextInfo.is_last_bar():
return
# 配置随机量拆单参数
user_param = {
"OrderType": 2, # 2 代表 OTP_RANDVOLUME 随机量交易模式
"MaxOrderCount": 15, # 最多拆分为 15 次委托
"SingleNumMin": 100, # 单笔最小委托量 100 股
"SingleNumMax": 500, # 单笔最大委托量 500 股
"PlaceOrderInterval": 10, # 每次下单间隔 10 秒
"PriceType": 5 # 使用最新价挂单
}
# 发起买入算法委托:以最新价买入 3000 股平安银行
algo_passorder(
23, # opType: 股票买入
1101, # orderType: 单股单账号
ContextInfo.account, # 资金账号
'000001.SZ', # 股票代码
-1, # prType: -1 表示使用 user_param 中的 PriceType
-1, # modelprice: 任意值(使用最新价时不生效)
3000, # volume: 买入总数量
'rand_volume_strategy', # strategyName: 自定义策略名
1, # quickTrade: 1 立即触发
'rand_order_001', # userOrderId: 用户自设委托ID
user_param, # 自定义算法参数
ContextInfo
)
print("已成功提交随机量拆单任务!")
algo_passorder 算法交易功能前,请确保交易柜台及客户端已开通对应的程序化算法交易权限。SingleNumMin 和 SingleNumMax 需符合交易所对单笔申报数量的限制(如 A 股需为 100 股的整数倍)。PlaceOrderInterval 设定的时间内成交,系统会自动执行撤单并重新按随机量挂单。