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

编写日内新高/新低警报脚本遇重绘问题,咨询脚本可行性

你的日内新高/新低警报脚本存在重绘问题,不可直接使用

原脚本的核心问题在于日内高低点的更新逻辑错误,以及未处理当前未完成K线的价格波动,导致严重的重绘:

  1. 你用is_first初始化每日高低点,但is_first仅指代脚本运行后的第一根K线,而非每个交易日的第一根K线,这会导致跨交易日的高低点混乱。
  2. 在非新K线(barstate.isnew为false)的阶段,当前K线的high/low还在实时变动,脚本会不断更新day_high/day_low,这会让历史上的警报信号随着当前K线的价格变化而被修改,也就是重绘。
  3. booleanhigh/booleanlow没有重置逻辑,一旦触发后会持续保持true,可能引发重复警报或错误的信号延续。

修正后的无重绘脚本

//@version=5
indicator("无重绘日内高低点警报", overlay=true)

// 识别新交易日的开始
new_day = ta.change(time("D")) != 0

// 计算日内高低点(仅在新交易日初始化,后续取历史值+当前已确认K线的极值)
var float day_high = na
var float day_low = na

if new_day
    day_high := high
    day_low := low
else
    // 仅使用已确认K线的价格更新,避免当前未完成K线的波动
    if barstate.isconfirmed
        day_high := math.max(day_high[1], high)
        day_low := math.min(day_low[1], low)

// 判断是否触发新高低点(仅在K线确认后)
booleanhigh = barstate.isconfirmed and high > day_high[1]
booleanlow = barstate.isconfirmed and low < day_low[1]

// 警报条件
alertcondition(booleanhigh, title="日内新高警报", message="触发New HOD")
alertcondition(booleanlow, title="日内新低警报", message="触发New LOD")

// 可选:在图表上标记高低点
plotshape(booleanhigh, title="HOD", location=location.belowbar, color=color.green, style=shape.labelup, text="HOD")
plotshape(booleanlow, title="LOD", location=location.abovebar, color=color.red, style=shape.labeldown, text="LOD")

关键修正说明

  • 使用time("D")判断新交易日,确保每日高低点正确初始化。
  • 加入barstate.isconfirmed限制,仅在K线完全闭合后更新高低点和触发警报,彻底避免当前未完成K线导致的重绘。
  • 用var声明day_high/day_low,确保变量值在脚本运行期间持续保留,无需每次重新赋值。
  • 重置了警报触发的判断逻辑,确保每个K线周期仅在确认突破时触发一次信号,不会持续触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 18:15:37