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

Pine Script技术问询:如何简化多根历史K线signal6的重复引用

Pine Script 简化多根历史K线信号引用的方法

你的代码里通过一堆signal6[n] or ...来判断过去41根K线(当前到往前40根)内是否出现过signal6信号,写法确实冗余。可以用两种更简洁的方式替代:

方法一:使用ta.barssince()函数(推荐)

ta.barssince(x)会返回距离上一次x为true的K线数量,如果当前K线x为true则返回0。利用这个特性,只需判断返回值是否≤40,就能覆盖原代码中0到40索引的所有情况:

signal6a = ta.barssince(signal6) <= 40 and high > ta.ema(high, 8)

这种写法最简洁,执行效率也更高,完全等价于你原来的逻辑。

方法二:使用for循环(灵活扩展场景)

如果需要动态调整检查的K线范围,或者要添加更复杂的判断逻辑,可以用循环遍历索引:

// 初始化变量存储信号是否存在
var bool hasSignal = false
hasSignal := false

// 遍历0到40的历史K线索引
for i = 0 to 40
    if signal6[i]
        hasSignal := true

signal6a = hasSignal and high > ta.ema(high, 8)

循环写法适合需要自定义遍历规则的场景,比如根据条件调整遍历的起始或结束索引。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 19:50:37