TradingView Pine Script 三指标触发timestamp delta判定与信号触发实现
Pine Script 多指标触发逻辑整合开发可行性说明
核心问题明确答复
- 针对问题A:完全支持将timestamp赋值给自定义变量
Pine Script中所有时间戳本质是整型Unix时间值,只需用var关键字声明三个持久化的自定义整型变量,即可在对应指标的触发分支内,将当前K线的时间戳(通过time内置函数获取)赋值给关联变量。同一指标连续触发时,代码会逐次覆盖变量中存储的旧时间值,完全匹配“持续更新为最新触发时间”的预设逻辑。 - 针对问题B:完全支持计算三个timestamp的时间delta、并按预设阈值触发信号
时间戳本身是连续可计算的整型数值,两个时间戳做差即可得到二者的时间间隔,将差值换算为对应单位后就能和预设的X小时阈值做比较。实际判断时不需要两两计算差值,只需算出三个时间戳的最大值与最小值的差,当跨度小于等于X小时对应的毫秒数时,即可满足“任意两个触发时间间隔在指定范围内”的要求。
简化实现参考代码
// 声明持久化存储三个指标触发时间的变量 var int t1 = 0 var int t2 = 0 var int t3 = 0 // 配置输入:最大允许的触发时间间隔 interval_hours = input.float(title="触发最大间隔(小时)", defval=2, step=0.5) threshold_ms = interval_hours * 3600 * 1000 // 替换为三个指标自身的实际触发逻辑 cond1 = <第一个指标的触发条件> cond2 = <第二个指标的触发条件> cond3 = <第三个指标的触发条件> // 指标触发时更新对应时间戳 if cond1 t1 := time if cond2 t2 := time if cond3 t3 := time // 计算三个时间的跨度范围 max_t = math.max(t1, math.max(t2, t3)) min_t = math.min(t1, math.min(t2, t3)) // 满足触发条件时输出标记信号 // 前置判断:三个指标都已至少触发过一次,避免初始值误触发 is_valid_signal = t1 > 0 and t2 > 0 and t3 > 0 and (max_t - min_t <= threshold_ms) plotshape(is_valid_signal, title="整合触发标记", location=location.belowbar, style=shape.labelup, color=color.red, size=size.small)
开发注意事项
- 注意时间单位匹配:
time函数返回的是毫秒级Unix时间,计算差值、换算阈值时要保持单位统一,避免和秒级时间戳计算出现量级错误 - 可根据需求补充去重逻辑:如果不希望同一时间窗口内反复输出重复信号,可在触发一次信号后,将三个时间变量重置为初始值,等待下一轮触发满足条件后再出提示
- 原独立指标的展示曲线不需要保留时,直接注释掉原代码中的
plot、plotshape类绘图语句即可,不需要改动触发逻辑本身。
内容的提问来源于stack exchange,提问作者Phil
相关产品推荐
相关产品推荐

