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

如何实现TradingView警报仅触发一次直至收到反向信号?

解决方案

问题出在alert.freq_once_per_bar_close仅限制单根K线收盘时触发一次,但如果连续多根K线都满足同一信号条件(比如连续满足buy),还是会每根K线收盘都触发警报。要实现"仅触发一次直到反向信号",需要通过状态变量跟踪当前持仓方向,仅当信号反转时才触发新警报。

修改后的代码如下:

// 定义状态变量,跟踪当前持仓方向:0=空仓,1=多仓,-1=空仓
var int currentPosition = 0

if buy and currentPosition != 1
    alert(buy_alert_string, alert.freq_once_per_bar_close)
    strategy.entry('buy', strategy.long)
    currentPosition := 1  // 更新状态为多仓

if sell and currentPosition != -1
    strategy.entry('sell', strategy.short)
    alert(sell_alert_string, alert.freq_once_per_bar_close)
    currentPosition := -1  // 更新状态为空仓

关键逻辑说明

  • var关键字让currentPosition仅在脚本初始化时赋值一次,后续K线不会重置变量值。
  • 触发buy信号前,检查当前是否不是多仓状态(currentPosition != 1),避免连续触发多单警报。
  • 触发sell信号前,检查当前是否不是空仓状态(currentPosition != -1),避免连续触发空单警报。
  • 每次开仓后更新状态变量,确保只有反向信号出现时才会再次触发警报。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 17:25:21