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

如何在最近5根非当前K线中找到最低红K的bar_index?

解决Pine Script中寻找最近5根K线(不含当前)最低红K的问题

原代码存在的问题

  • lowest(5)[1]取的是过去5根K线的整体最低价,但该价格对应的K线可能不是红K(收盘价<开盘价),导致循环无法匹配到符合条件的K线,返回na
  • 循环参数no未固定为5,若传入值不符,会超出目标范围或遍历不完整
  • 若有多根红K的最低价等于minValue,循环会保留最后遍历到的那一根,无法精准控制要选取的目标K线

修正后的代码

// 寻找最近5根K线(不含当前)中最低价红K的bar偏移量
findLowestRedBar() =>
    int targetBar = na
    float lowestRedLow = na
    // 遍历前1到前5根K线
    for i = 1 to 5
        isRed = close[i] < open[i]
        if isRed
            // 初始化或更新最低红K的价格与对应偏移量
            if na(lowestRedLow) or low[i] < lowestRedLow
                lowestRedLow := low[i]
                targetBar := i
    targetBar

// 调用函数获取结果
redBarOffset = findLowestRedBar()
// 示例:在目标K线位置标注偏移量
if not na(redBarOffset)
    label.new(bar_index - redBarOffset, low[redBarOffset], str.tostring(redBarOffset), color=color.red, textcolor=color.white)

修正说明

  1. 先筛选红K再找最低价:遍历过程中先判断K线是否为红K,再记录其中的最低价,避免原代码中整体最低价对应非红K的情况
  2. 固定遍历范围:直接遍历1到5,确保只检查最近5根不含当前的K线
  3. 精准控制目标K线:若需选取最早出现的同价红K,可将遍历顺序改为for i = 5 to 1,并将判断条件改为low[i] <= lowestRedLow

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:15:29