3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 极速策略交易系统中,passorder() 是最核心的综合交易下单函数。为了实现精准的仓位控制,理解 orderType(下单方式)参数及其对应的 volume(下单数量)单位至关重要。本文将为您详细拆解 orderType 各个数值对应的落单单位与适用场景。
在 passorder 中,volume 参数的具体单位(是股、是元、还是比例)是由 orderType 的最后一位数字决定的:
当对单只股票/期货进行操作时,最后一位数字对应的单位如下:
1:单位为 股 / 手(股票为股,期货为手)。2:单位为 金额(元)(仅支持股票,系统会自动折算为最接近的 100 股的倍数)。3:单位为 比例 [0 ~ 1](如 0.5 代表 50%)。当进行组合(篮子)交易时,最后一位数字对应的单位如下:
1:按组合股票数量(份)方式下单,volume 单位为篮子的份数。2:按组合股票权重方式下单,volume 单位为金额(元)。3:按账号可用资金比例方式下单,volume 单位为比例 [0 ~ 1]。| orderType 数值 | 下单模式 | 资金计算基准 | volume 参数的落单单位 |
|---|---|---|---|
| 1101 | 单股、单账号 | 普通 | 股 / 手 |
| 1102 | 单股、单账号 | 普通 | 金额(元)(仅支持股票) |
| 1113 | 单股、单账号 | 总资产 | 比例 [0 ~ 1](占总资产的比例) |
| 1123 | 单股、单账号 | 可用资金 | 比例 [0 ~ 1](占可用资金的比例) |
| 1201 | 单股、账号组 | 普通 | 股 / 手 |
| 1202 | 单股、账号组 | 普通 | 金额(元)(仅支持股票) |
| 1213 | 单股、账号组 | 总资产 | 比例 [0 ~ 1] |
| 1223 | 单股、账号组 | 可用资金 | 比例 [0 ~ 1] |
| orderType 数值 | 下单模式 | 资金分配逻辑 | volume 参数的落单单位 |
|---|---|---|---|
| 2101 | 组合、单账号 | 普通 | 篮子的份数(按篮子中设定的股票数量下单) |
| 2102 | 组合、单账号 | 普通 | 金额(元)(按篮子中设定的股票权重分配金额) |
| 2103 | 组合、单账号 | 普通 | 比例 [0 ~ 1](按可用资金比例后按权重分配,仅限股票) |
| 2201 | 组合、账号组 | 普通 | 篮子的份数 |
| 2202 | 组合、账号组 | 普通 | 金额(元) |
| 2203 | 组合、账号组 | 普通 | 比例 [0 ~ 1](仅限股票) |
以下是在 QMT 策略中调用 passorder 使用不同单位下单的典型示例:
#encoding:gbk
def init(ContextInfo):
ContextInfo.accid = '6000000248' # 设定您的资金账号
def handlebar(ContextInfo):
target_stock = '600000.SH' # 浦发银行
# 示例 1:使用 1101 按【股数】买入 1000 股
passorder(23, 1101, ContextInfo.accid, target_stock, 5, -1, 1000, ContextInfo)
# 示例 2:使用 1102 按【金额】买入 20000 元的股票
# 系统会自动根据最新价折算成最接近 100 股整倍数的股数
passorder(23, 1102, ContextInfo.accid, target_stock, 5, -1, 20000, ContextInfo)
# 示例 3:使用 1123 按【可用资金比例】买入,占用 20% 的可用资金
passorder(23, 1123, ContextInfo.accid, target_stock, 5, -1, 0.2, ContextInfo)
1102 和 1202(金额方式下单)只支持股票,期货不支持此方式。volume 的取值范围是 [0 ~ 1],例如 0.5 代表 50%,请勿写成 50。