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

如何在Pinescript中获取最近15根K线内贴近当前价的上方峰值

修正后的Pinescript代码实现需求

问题分析

原代码的核心问题在于:

  • 错误使用ta.valuewhen,无法遍历收集最近15根K线内的所有符合条件峰值;
  • 初始值设置不合理,导致无符合条件峰值时仍绘制收盘价;
  • 循环逻辑无法正确比较所有峰值与当前收盘价的差值。

修正后的代码

//@version=5
indicator(title="Closest Higher Peak in 15 Bars", overlay = true)

// 当前最新收盘价
current_close = close

// 初始化数组,用于存储最近15根K线内符合条件的峰值价格
var float[] valid_peaks = array.new_float()

// 每根新K线生成时,重新收集符合条件的峰值
if barstate.is_new
    array.clear(valid_peaks)
    // 遍历最近15根K线(从当前往前数第1到15根)
    for i = 1 to 15
        // 判断第i根K线是否为局部高点(比左右相邻K线收盘价都高)
        is_local_peak = close[i] > close[i-1] and close[i] > close[i+1]
        // 仅收集高于当前收盘价的峰值
        if is_local_peak and close[i] > current_close
            array.push(valid_peaks, close[i])

// 从符合条件的峰值中筛选出与当前收盘价最接近的价格
closest_peak = na
if array.size(valid_peaks) > 0
    min_price_diff = float.max
    // 遍历所有有效峰值,计算差值并记录最小差值对应的峰值
    for peak_price in valid_peaks
        price_diff = peak_price - current_close
        if price_diff > 0 and price_diff < min_price_diff
            min_price_diff = price_diff
            closest_peak = peak_price

// 绘制结果:仅在存在符合条件峰值时显示
plot(closest_peak, style = plot.style_linebr, color=color.red, title="Closest Higher Peak")

代码说明

  1. 峰值判断:直接在循环中检查每根过去K线是否为局部高点(close[i] > close[i-1] and close[i] > close[i+1]),确保准确识别所有峰值。
  2. 有效峰值收集:使用数组存储所有高于当前收盘价的峰值,避免遗漏。
  3. 筛选最接近峰值:遍历数组计算每个峰值与当前收盘价的差值,找出差值最小的峰值作为目标价格。
  4. 无峰值处理:当没有符合条件的峰值时,返回na,不会绘制无效数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:01:55