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

如何在Pine Script中获取条件第二次触发时间及两次触发K线间隔

解决两次条件触发间隔K线数计算问题

你的代码逻辑存在问题:(ta.barssince(condition))[bars_since]实际取的是最近一次触发K线位置的ta.barssince(condition)值,而该位置的barssince结果本身就是0,所以得到的结果自然为0。

正确的做法是通过记录触发点的全局K线索引来计算间隔,具体代码如下:

//@version=5
indicator("两次触发间隔K线数", overlay=true)

deliveryVolumePercentage = input.float(60, "阈值")
condition = ta.cross(deliveryVolumePercentage, 60)

// 定义存储触发点K线索引的数组,var确保仅初始化一次
var int[] triggerBars = array.new_int()

// 条件触发时,将当前K线的全局索引存入数组
if condition
    array.push(triggerBars, bar_index)

// 计算最后两次触发的间隔K线数
last_two_diff = 0
if array.size(triggerBars) >= 2
    // 获取最后一次和倒数第二次触发的K线索引
    last_trigger_idx = array.get(triggerBars, array.size(triggerBars) - 1)
    second_last_trigger_idx = array.get(triggerBars, array.size(triggerBars) - 2)
    // 索引差值即为间隔的K线数量
    last_two_diff = last_trigger_idx - second_last_trigger_idx

// 绘制计算结果
plot(last_two_diff, title="最后两次触发间隔K线数", color=color.red, linewidth=2)

核心逻辑说明

  • 用var关键字定义数组,避免每次K线刷新时重置数组内容。
  • 每次条件触发时,将bar_index(全局唯一的K线索引)存入数组,完整保留所有触发点的位置信息。
  • 当数组中至少有两个触发点时,取最后两个索引的差值,直接得到两次触发之间的K线数量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 01:15:43