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

如何用循环简化Pine Script中25组变量的声明代码?

在Pine Script中用循环+数组简化变量声明

可以用数组配合循环实现你的需求,避免手动声明25组重复变量。核心是用三个数组分别存储longX状态、takeprofitlongX和stoplosslongX的值,以下是具体实现方法:

1. 初始化数组

用var关键字声明数组,确保数组仅在脚本启动时初始化一次,元素初始值符合你的要求:

// 初始化三个数组,对应0-24共25组变量
var array<bool> long_states = array.new_bool(25, false)   // 所有longX初始为false
var array<float> tp_long = array.new_float(25, 0.0)       // 所有takeprofitlongX初始为0.0
var array<float> sl_long = array.new_float(25, 0.0)       // 所有stoplosslongX初始为0.0

如果需要更灵活的初始化(比如自定义逻辑),也可以在首个K线时通过循环填充数组:

var array<bool> long_states = array.new_bool()
var array<float> tp_long = array.new_float()
var array<float> sl_long = array.new_float()

// 仅在第一根K线执行填充
if barstate.isfirst
    for i = 0 to 24
        array.push(long_states, false)
        array.push(tp_long, 0.0)
        array.push(sl_long, 0.0)

2. 访问与修改数组元素

Pine Script的数组元素不能直接用:=赋值,必须用内置的数组函数操作:

  • 获取元素值:用array.get(数组名, 索引),比如获取第5组的long状态:array.get(long_states, 5)
  • 修改元素值:用array.set(数组名, 索引, 新值),比如更新第5组的止盈止损:
// 示例:当满足条件时,更新第5组的状态和止盈止损
if close > ta.sma(close, 50)
    array.set(long_states, 5, true)          // 将long5设为true
    array.set(tp_long, 5, close * 1.02)      // 止盈设为当前收盘价的1.02倍
    array.set(sl_long, 5, close * 0.98)      // 止损设为当前收盘价的0.98倍

3. 关于“沿用前值”的说明

数组元素默认会保留上一根K线的值,只要你不主动调用array.set()修改,它就会自动沿用前值,完全符合你的需求。

完整示例片段

//@version=5
indicator("简化变量声明示例", overlay=true)

// 初始化数组
var array<bool> long_states = array.new_bool(25, false)
var array<float> tp_long = array.new_float(25, 0.0)
var array<float> sl_long = array.new_float(25, 0.0)

// 示例:更新第3组的状态和止盈止损
if close > ta.sma(close, 50)
    array.set(long_states, 3, true)
    array.set(tp_long, 3, close * 1.02)
    array.set(sl_long, 3, close * 0.98)

// 示例:触发止损时重置状态
if array.get(long_states, 3) and close < array.get(sl_long, 3)
    array.set(long_states, 3, false)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:12:58