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

TradingView Pine脚本:空头预警异常触发问题排查

问题分析与解决

核心问题

  1. 初始值设置错误

    • bott的初始值被设为脚本加载时第一个bar的close(大概率是历史bar的收盘价),而非脚本启动后第一个实时bar的价格。当脚本启动后实时价格上涨,bott因未触发low < bott的更新条件,始终保持历史bar的收盘价,导致bear = 1 - bott / close的数值会随价格上涨持续增大,远超过0.05的阈值,直接触发空头预警。
    • topp初始值设为0,虽在第一个实时bar会被更新为当前high,但历史bar中会出现除以0的计算错误,不过因仅实时bar才会触发有效预警,所以多头预警表现正常。
  2. 计算逻辑可能不符合预期
    当前bear的计算式1 - bott / close表示的是最低价相对于收盘价的跌幅比例,而非收盘价相对于最低价的涨幅比例。例如当收盘价比最低价高5.26%时,bear才会达到0.05,和你设定的5%阈值不匹配。

修复代码

var float topp = na
var float bott = na

if barstate.isrealtime
    // 仅在第一个实时bar初始化最高最低价
    if na(topp)
        topp := high
        bott := low
    else
        if high > topp
            topp := high
        if low < bott
            bott := low

// 仅在最高最低价有效时计算差值
bull = na(topp) ? na : 1 - close / topp
// 若需收盘价较最低价涨幅达5%触发预警,改用此计算式:bear = close / bott - 1
bear = na(bott) ? na : 1 - bott / close

plot(topp)
plot(bull)
plot(close)
plot(bear)
plot(bott)

// 仅当数值有效时触发预警
alertcondition(not na(bull) and not na(bear) and (bull > 0.05 or bear > 0.05), title = "价格阈值预警", message = "收盘价距最高/最低价差值达5%")

修复说明

  • 将topp和bott初始值设为na,在第一个实时bar才将其赋值为当前的high和low,确保记录的是脚本启动以来的实时数据最高最低,而非历史bar数据。
  • 增加有效性判断,避免未初始化时的无效计算。
  • 注释了符合5%涨幅阈值的bear计算式,可根据实际需求切换。

内容的提问来源于stack exchange,提问作者Россарх

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:07:02