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

技术问询:如何正确获取HL蜡烛形成时的移动平均值?

解决HL蜡烛对应移动平均值的获取与显示问题

原代码的核心问题是:HL标记通过offset=-Period定位到了当前K线往前6根的K线,但标签获取的SMA值却对应当前K线,导致两者不匹配。以下是修正方案:

修正后的代码

//@version=5
indicator("My script", overlay = true)
Period = 6
smalength = 20

// 确认右侧6根K线后的低点信号
float pivotLow = ta.pivotlow(6, 6)
// 对比前后低点,筛选出Higher Low
prev_low = ta.valuewhen(pivotLow, low[Period], 1)
curr_low = ta.valuewhen(pivotLow, low[Period], 0)
higherlow = na(pivotLow) ? na : (prev_low < curr_low) ? pivotLow : na

// 绘制HL标记,offset=-Period定位到实际低点所在K线
plotshape(higherlow, title='HL', style=shape.triangleup, location=location.belowbar, 
          color=color.new(color.green, 50), text='HL', textcolor=color.new(color.green, 50), 
          offset=-Period)

// 计算并绘制SMA
sma_val = ta.sma(close, smalength)
plot(sma_val)

// 触发HL时,创建标签显示对应K线的SMA值
if (not na(higherlow))
    // 获取HL所在K线的SMA值:当前K线往前Period根的SMA
    hl_sma = sma_val[Period]
    // 将标签放在HL标记下方,用ATR控制偏移避免重叠
    label.new(x=bar_index - Period, y=low[Period] - ta.atr(10)*0.2, 
              color=color.orange, textcolor=color.blue, 
              text=str.tostring(hl_sma, "#.##"), 
              style=label.style_label_up)

关键修改说明

  1. 匹配SMA与HL的K线位置:用sma_val[Period]直接获取HL标记对应K线的SMA值,解决原代码中位置错位的问题。
  2. 优化标签位置:将标签放在HL标记的下方,使用ATR动态调整偏移量,避免和K线或标记重叠,显示更清晰。
  3. 简化逻辑:去掉冗余的ta.valuewhen调用,直接在HL触发时计算对应值,代码更易读。
  4. 格式化数值:将SMA值格式化为两位小数,提升显示美观度。

内容的提问来源于stack exchange,提问作者Dolla Chandra Babu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 15:10:28