为何Trading View中自定义交叉警报未触发显示?
警报未触发的排查要点
语法错误导致脚本失效
你的alert字符串拼接存在语法错误:str.tostring(h, "#.00)")里的格式字符串引号未闭合,应该改成str.tostring(h, "#.00"),同理l的那行也要修正。错误的字符串语法会导致脚本无法正常编译运行,自然不会触发警报。修正后的代码片段:if a1 alert("BUY CALL (Price above buy level " + str.tostring(h, "#.00") + ")", freq = alert.freq_all) if a2 alert("BUY PUT (Price below sell level " + str.tostring(l, "#.00") + ")", freq = alert.freq_all)变量h/l的定义逻辑错误
你提到h是首个5分钟K线的高点,但代码中未给出h和l的具体定义。如果h/l未正确获取到目标K线的高低点(比如引用5分钟数据时request.security参数错误,或者“首个5分钟K线”的判定逻辑有误),会导致a1/a2的交叉条件永远无法满足,警报不会触发。需要确认h/l的赋值逻辑是否正确,示例参考:// 获取当前交易日的首个5分钟K线高点(需根据实际需求调整) five_min_high = request.security(syminfo.tickerid, "5", high) is_first_five_min = ta.barssince(time("5") == ta.pivothigh(5, 0, 0)) == 0 h = is_first_five_min ? five_min_high : h[1]TradingView警报设置未配置正确
即使代码逻辑正确,也需要确保:- 创建警报时选择了你的目标脚本
- 触发条件设置为「任何警报条件」
- 勾选了需要的通知方式(弹窗、邮件、推送等)
- 警报频率设置与代码中的
alert.freq_all匹配,未误设为「仅一次」
K线周期与数据引用不匹配
如果当前图表周期不是5分钟,且未通过request.security正确引用5分钟数据,h的值会不符合预期,导致交叉条件无法触发。需确认数据引用逻辑适配当前图表周期。回测/实时行情的触发时机问题
- 回测时:确保回测时间范围内存在满足a1/a2交叉条件的K线,且脚本计算周期正确
- 实时行情时:需等待价格真正突破h或跌破l,触发
ta.crossover/ta.crossunder条件后,警报才会触发,不会在脚本加载时立即生效
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

