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

如何修复Pine Script中for循环跳过exit条件的问题

问题原因

你的代码核心问题是正向遍历数组时直接删除元素,导致数组索引错乱。当删除第i个元素后,数组中后续元素的索引会自动前移一位,但循环的i仍会按原顺序递增,这就会跳过下一个元素的处理,使得本该在本次exit触发时被移除的线条,要等到下一次exit触发才会被处理,出现“跳过exit条件”的现象。

修复代码
var lines = array.new_line()

entry = ta.crossover(ta.rsi(close, 5), 30) and array.size(lines) < 3
if entry
    array.push(lines, line.new(bar_index, close, bar_index, close))

exit = ta.crossunder(ta.rsi(close, 5), 90)
// 反向遍历数组,避免删除元素导致的索引错乱
for i = array.size(lines) - 1 downto 0
    line_item = array.get(lines, i)
    line.set_xy2(line_item, bar_index, close)

    if exit
        array.remove(lines, i)
修复说明
  1. 反向遍历数组:从最后一个元素(索引array.size(lines)-1)遍历到第一个元素(索引0),这样即使删除当前元素,前面未遍历的元素索引不会受到影响,确保每个线条都能被正确检查和处理。
  2. 索引获取元素:用array.get(lines, i)获取当前遍历的线条,替代原代码的解构遍历,更清晰且适配反向遍历逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 22:05:50