You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何判断交易品种是否支持strategy.entry下单数量为小数?

判断交易品种是否需对下单数量取整的方法

1. 通过syminfo.minvolume自动判断

Pine Script的syminfo.minvolume字段返回当前品种的最小允许交易数量,这是判断是否需要取整的核心依据:

  • 当该值为整数且≥1时,说明品种仅支持整数合约数,必须对下单数量取整
  • 当该值为小数时,说明支持小数合约数,无需取整(或按最小单位的倍数调整即可)

示例代码:

// 计算基础下单量(示例逻辑,可根据策略调整)
baseQty = strategy.equity / close / 10

// 获取最小交易单位并判断是否需要取整
minTradingVol = syminfo.minvolume
needRound = minTradingVol == math.floor(minTradingVol) and minTradingVol >= 1

// 确定最终下单量:取整或保留小数,同时确保不低于最小交易单位
finalQty = needRound ? math.round(baseQty) : baseQty
finalQty = math.max(finalQty, minTradingVol)

// 执行下单
strategy.entry("Long", strategy.long, qty=finalQty)

2. 手动维护品种列表(应对特殊规则)

若部分品种的交易规则无法通过syminfo.minvolume准确判断(极少情况),可手动维护需要取整的品种名单,通过syminfo.ticker匹配当前品种:

示例代码:

// 定义需要取整的品种代码列表
roundRequiredTickers = ["CL1!", "ES1!", "NQ1!"]

// 判断当前品种是否在取整名单内
needRound = syminfo.ticker == roundRequiredTickers[0] or 
            syminfo.ticker == roundRequiredTickers[1] or 
            syminfo.ticker == roundRequiredTickers[2]

// 计算并调整下单量
baseQty = strategy.equity / close / 10
finalQty = needRound ? math.round(baseQty) : baseQty
finalQty = math.max(finalQty, syminfo.minvolume)

strategy.entry("Long", strategy.long, qty=finalQty)

关键注意点

  • syminfo.minvolume是交易所官方定义的参数,可靠性最高,优先采用第一种方法
  • 取整后必须确保最终下单量不小于syminfo.minvolume,避免触发下单失败
  • 部分品种可能存在最大下单量限制,必要时可结合syminfo.maxvolume做额外校验

内容的提问来源于stack exchange,提问作者Intetics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 06:42:46