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

TradingView网格策略:按层级设置最大开仓数技术问询

实现分层级控制最大开仓数的做空网格策略

要给每个价格层级单独设置最大开仓数,核心思路是为每个层级的订单标记唯一标识,实时统计该标识对应的当前持仓数量,开仓前判断是否达到上限。以下是具体实现方案:

步骤1:定义层级参数

为每个层级设置最大开仓数,同时给每个层级的订单分配唯一的entryid(用于后续统计持仓):

// 定义各层级最大开仓数
maxShort1 = 3
maxShort2 = 3
maxShort3 = 2  // 可根据需求设置其他层级
// ... 继续定义maxShort4到maxShort10

// 各层级订单标识
short1Id = "Short1"
short2Id = "Short2"
// ... 继续定义short3Id到short10Id

步骤2:统计层级当前持仓数

通过遍历strategy.opentrades,统计对应entryid的订单数量,得到该层级当前的实际持仓数:

// 封装统计持仓数的函数,避免重复代码
getPositionCount(entryId) =>
    count = 0
    for i = 0 to strategy.opentrades - 1
        if strategy.opentrades.entryid(i) == entryId
            count += 1
    count

// 统计各层级当前持仓数
short1Current = getPositionCount(short1Id)
short2Current = getPositionCount(short2Id)
// ... 继续统计Short3到Short10的持仓数

步骤3:修改开仓逻辑

在原有开仓条件基础上,增加当前持仓数小于层级最大开仓数的判断:

// Short1开仓逻辑(替换你原有的Short1代码)
if (short1Condition)  // short1Condition是你原有的价格触发条件
    and short1Current < maxShort1
    strategy.entry(short1Id, strategy.short)

// Short2开仓逻辑(替换你原有的Short2代码)
if (short2Condition)
    and short2Current < maxShort2
    strategy.entry(short2Id, strategy.short)

// ... 替换Short3到Short10的开仓逻辑,加入对应层级的持仓数判断

步骤4:平仓逻辑(保持原有逻辑即可)

平仓时无需额外修改计数,因为每次开仓前都会重新统计当前持仓数,确保数据实时准确。如果使用strategy.exit或strategy.close,只要指定对应层级的entryid即可:

// Short1平仓示例
if (closeShort1Condition)
    strategy.exit("Exit " + short1Id, short1Id)  // 第二个参数指定要平仓的订单标识

关键注意事项

  • 确保每个层级的订单entryid唯一,避免统计时混同不同层级的持仓。
  • 遍历strategy.opentrades统计持仓的方式,能自动处理部分平仓、强制平仓等特殊情况,比手动维护计数器更可靠。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 18:26:17