3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT(Quantitative Master Trading)量化交易平台中,利用 passorder 函数进行比例下单是实现自动化仓位管理的重要手段。其中,1113 和 1123 是两种最常用的单股比例下单方式。理解它们之间的核心区别,能够帮助你在实盘中更精准地控制风险,避免因资金计算偏差导致下单失败。
在 QMT 的 passorder(opType, orderType, accountid, orderCode, prType, modelprice, volume, ...) 函数中,orderType 决定了下单的资金计算逻辑。当使用比例下单时,参数 volume 的取值范围为 [0 ~ 1](代表 0% 到 100%)。
| 下单方式代码 | 释义 | 目标下单金额计算公式 | 适用场景 |
|---|---|---|---|
| 1113 | 单股、单账号、总资产、比例方式下单 | $目标金额 = 账户总资产 \times volume$ | 适合全局资产配置、目标仓位构建 |
| 1123 | 单股、单账号、可用资金、比例方式下单 | $目标金额 = 账户可用资金 \times volume$ | 适合加仓、利用剩余闲置资金下单 |
注意:无论是 1113 还是 1123,最终折算的股票股数都会被自动向下调整为对应市场的交易单位整倍数(例如 A 股的 1 手 = 100 股)。如果折算后的资金不足以买入 1 手,或者账户实际可用资金不足,订单将不会被创建。
假设你的证券账户当前状态如下:
现在你打算对某只股票(假设当前股价为 10 元)使用 volume = 0.5(即 50% 比例)进行买入:
以下是在 QMT 策略中分别使用 1113 和 1123 下单的写法:
#coding:gbk
def init(ContextInfo):
ContextInfo.accid = '6000000248' # 您的资金账号
ContextInfo.set_account(ContextInfo.accid)
ContextInfo.stock = '600000.SH' # 目标股票
def handlebar(ContextInfo):
# 仅在最后一根Bar触发演示
if not ContextInfo.is_last_bar():
return
# 示例 A:使用 1113 按照总资产的 10% 买入浦发银行
# opType=23 (股票买入), orderType=1113, prType=5 (最新价), price=0, volume=0.1 (10%)
passorder(23, 1113, ContextInfo.accid, ContextInfo.stock, 5, 0, 0.1, '总资产比例策略', 1, ContextInfo)
# 示例 B:使用 1123 按照可用资金的 50% 买入浦发银行
# opType=23 (股票买入), orderType=1123, prType=5 (最新价), price=0, volume=0.5 (50%)
# passorder(23, 1123, ContextInfo.accid, ContextInfo.stock, 5, 0, 0.5, '可用比例策略', 1, ContextInfo)
order_target_percent 或提前计算好每只股的固定可用资金比例(1123)。