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

Pine Script中如何让自定义指标每小时仅触发一次警报?

Pine Script实现指定周期内仅触发一次警报

要解决短时间内重复触发警报的问题,核心思路是记录上一次发送警报的时间,只有当当前时间与上次警报时间的间隔超过设定周期时,才允许再次发送警报。具体实现如下:

关键实现步骤

  1. 使用var关键字定义变量存储上次警报时间:var变量只会在脚本首次运行时初始化一次,后续不会随K线刷新重置,能持续保留历史值。
  2. 触发警报前,先判断当前时间与上次警报时间的间隔是否达到设定周期(比如1小时=3600000毫秒)。
  3. 发送警报后,立即更新上次警报时间为当前时间,避免短时间内重复触发。

修改后的完整代码

//@version=5
indicator("自定义警报控制", overlay=true)

// 你的buy信号计算逻辑(此处为示例)
buy = true // 替换为你的实际计算代码

// 初始化上次警报时间变量,na表示未发送过警报
var float lastAlertTime = na
currentTime = time // 获取当前K线的时间戳(毫秒)

// 设定周期:1小时=3600000毫秒,可自行修改(如30分钟=1800000)
alertInterval = 3600000

// 触发条件:buy为true,且满足时间间隔要求
if (buy and (na(lastAlertTime) or currentTime - lastAlertTime >= alertInterval))
    alert("Buy")
    lastAlertTime := currentTime // 更新上次警报时间

自定义周期说明

  • 如果需要按自然小时触发(比如每个整点内仅发一次),可以改用小时判断:
    var int lastAlertHour = na
    currentHour = hour(time)
    
    if (buy and (na(lastAlertHour) or currentHour != lastAlertHour))
        alert("Buy")
        lastAlertHour := currentHour
    
  • 若要设置其他周期(如4小时、1天),只需修改alertInterval的毫秒值,或对应时间单位的判断逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 06:31:01