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

Pine Script中ta.highestbars/ta.lowestbars返回首次匹配,如何获取最近匹配?

问题:获取最近一次高低点的回溯K线数

当使用以下代码计算最高高点/最低低点的回溯K线数时,若存在多个匹配的K线,函数返回首次出现的回溯数,但我需要获取最近一次的匹配,是否可行?

以下代码中,barsSinceLow和barsSinceHigh始终为大于等于1的整数:

// Bars since recent low/high
barsSinceLow  = math.abs(ta.lowestbars(pullbackUpBarsToCheck))      // How many bars back is the lowest low to start the calculation of the pullback up
barsSinceHigh = math.abs(ta.highestbars(pullbackDownBarsToCheck))   // How many bars back is the highest high to start the calculation of the pullback down

我已通过数据窗口查看barsSinceLow和barsSinceHigh的输出进行调试,确认其返回的是首次出现的结果,现需将其修改为返回最近一次的匹配。


解决方案

ta.lowestbars()和ta.highestbars()默认返回区间内最早出现的高低点回溯数。要获取最近一次的匹配,可通过正向遍历(从当前K线往前找)的方式实现:

修改后的代码

// 获取最近一次低点的回溯K线数
barsSinceLow = 0.0
for i = 0 to pullbackUpBarsToCheck - 1
    if low[i] == ta.lowest(pullbackUpBarsToCheck)
        barsSinceLow := i
        break  // 找到最近的极值点后立即终止遍历

// 获取最近一次高点的回溯K线数
barsSinceHigh = 0.0
for i = 0 to pullbackDownBarsToCheck - 1
    if high[i] == ta.highest(pullbackDownBarsToCheck)
        barsSinceHigh := i
        break  // 找到最近的极值点后立即终止遍历

逻辑说明

  • 从当前K线(索引i=0)开始,向前遍历指定的区间范围
  • 一旦找到与区间内最低/最高值匹配的K线,记录其回溯数并停止遍历
  • 最终得到的barsSinceLow和barsSinceHigh即为最近一次出现极值点的回溯数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 07:43:21