Pine Script中如何让自定义指标每小时仅触发一次警报?
Pine Script实现指定周期内仅触发一次警报
要解决短时间内重复触发警报的问题,核心思路是记录上一次发送警报的时间,只有当当前时间与上次警报时间的间隔超过设定周期时,才允许再次发送警报。具体实现如下:
关键实现步骤
- 使用
var关键字定义变量存储上次警报时间:var变量只会在脚本首次运行时初始化一次,后续不会随K线刷新重置,能持续保留历史值。 - 触发警报前,先判断当前时间与上次警报时间的间隔是否达到设定周期(比如1小时=3600000毫秒)。
- 发送警报后,立即更新上次警报时间为当前时间,避免短时间内重复触发。
修改后的完整代码
//@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
相关产品推荐
相关产品推荐

