TradingView Pine Script按满足条件数量设置告警优先级的实现方法
解决方案
核心思路是用数组批量存储所有判断条件,自动统计满足条件的总数,再映射到对应告警等级,后续新增条件仅需往数组中追加即可,无需修改后续判断逻辑。
完整实现代码(Pine Script v5)
首先定义你自己的K线判断条件,可无限新增:
//@version=5 indicator("多条件优先级告警", overlay=true) EMA34 = ta.ema(close, 34) // 自定义判断条件,新增条件直接在这里定义即可 aa = (close > open) and (low > low[1]) bb = (close[1] > open[1]) and (close[1] > 5) cc = (close > ((high[1] - low[1])*23.6/100 + low[1])) dd = (close > EMA34) and (close > ta.ema(close, 10)) // 更多条件ee、ff、gg...直接按上述格式新增
批量统计+告警逻辑:
// 1. 把所有判断条件存入布尔数组,新增条件仅需在这里加一行push即可 condition_arr = array.new_bool() array.push(condition_arr, aa) array.push(condition_arr, bb) array.push(condition_arr, cc) array.push(condition_arr, dd) // 2. 自动统计满足的条件数量、总条件数 satisfy_count = array.sum(condition_arr) total_count = array.size(condition_arr) // 3. 按规则匹配告警等级 alert_level = "" if satisfy_count == total_count alert_level = "A" else if satisfy_count >= 3 alert_level = "B" else if satisfy_count >= 2 alert_level = "C" else if satisfy_count >= 1 alert_level = "D" // 4. 触发告警(至少满足1个条件才触发) if alert_level != "" alert(alert_level + "- " + str.tostring(close, "#.######"), alert.freq_once_per_bar)
扩展说明
- 后续新增条件仅需两步:先定义新的布尔判断变量,再往
condition_arr中追加一行array.push即可,总条件数会自动识别,不需要手动修改判断阈值 - 如果后续条件总数调整,需要修改等级对应阈值,直接改
if分支的判断数值即可,不需要重构整体逻辑
内容的提问来源于stack exchange,提问作者CandyG80
相关产品推荐
相关产品推荐

