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

Pine Script 5多独立单次触发告警未生效,求问题排查

问题分析与修复

你的告警未触发主要有两个核心问题:

1. ta.cross的逻辑不符合“穿越”的完整需求

ta.cross(source1, source2)仅在source1从低于source2变为高于source2时返回true(即仅检测上穿)。如果你的“穿越”包含价格从上方跌破1.2(下穿)的场景,这个函数不会触发,直接导致告警失效。

如果需要检测双向穿越(上穿+下穿),需要同时判断ta.crossover和ta.crossunder;如果仅需要单向穿越,确保用对应函数:

  • ta.crossover(close, 1.2):收盘价上穿1.2
  • ta.crossunder(close, 1.2):收盘价下穿1.2

2. alert.freq_all参数使用不当

你已经通过var变量实现了告警仅触发一次的逻辑,alert.freq_all表示每次条件满足都触发,这会和你的变量控制逻辑冗余,甚至可能因平台告警设置的冲突导致不触发。更合适的参数是alert.freq_once_per_bar_close,确保单根K线周期内仅触发一次。

修正后的代码

以下代码实现:上穿1.2触发告警1(仅一次),下穿0.8触发告警2(仅一次),你可根据需求调整穿越方向:

//@version=5
indicator("单触发多告警示例", overlay=true)

var bool trigger_alert_1 = false
var bool trigger_alert_2 = false

// 检测收盘价上穿1.2,且未触发过告警1
if ta.crossover(close, 1.2) and not trigger_alert_1
    alert("alert 01 triggered", alert.freq_once_per_bar_close)
    trigger_alert_1 := true

// 检测收盘价下穿0.8,且未触发过告警2
if ta.crossunder(close, 0.8) and not trigger_alert_2
    alert("alert 02 triggered", alert.freq_once_per_bar_close)
    trigger_alert_2 := true

额外注意事项

  • 确保在图表的「告警设置」中启用了该脚本的告警,且触发条件选择「脚本中的条件」
  • 如果需要检测**任意价格(不限于收盘价)**穿越,将close替换为price或结合high/low判断

内容的提问来源于stack exchange,提问作者François Garcia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:25:39