如何在PineScript中声明条件的考量周期?周度双指标验证
PineScript实现周内双条件检查逻辑
核心实现思路
- 利用
ta.change(timeframe.weekly)识别每周的起始节点,重置周期内的条件追踪标记 - 分别维护两个布尔变量,记录本周内RSI是否曾突破20、MACD是否曾突破25
- 每周切换时,若上周两个条件均满足,则将
IndexValue加1
完整代码示例
//@version=5 indicator("周内双条件索引计算", overlay=false) // 计算基础指标 rsiValue = ta.rsi(close, 14) [macdLine, signalLine, _] = ta.macd(close, 12, 26, 9) // 标记新一周的开始 newWeek = ta.change(timeframe.weekly) // 声明跨周期保留的条件状态变量 var bool rsiAbove20ThisWeek = false var bool macdAbove25ThisWeek = false // 更新本周内的条件满足状态 rsiAbove20ThisWeek := newWeek ? rsiValue > 20 : rsiAbove20ThisWeek or rsiValue > 20 macdAbove25ThisWeek := newWeek ? macdLine > 25 : macdAbove25ThisWeek or macdLine > 25 // 计算索引值 var int IndexValue = 0 // 跳过第一根K线的初始检查,避免误触发 if newWeek and bar_index > 0 if rsiAbove20ThisWeek and macdAbove25ThisWeek IndexValue += 1 // 可视化输出索引值 plot(IndexValue, title="Index Value", color=color.blue, linewidth=2)
代码细节说明
var关键字:让变量在K线迭代中保留状态,不会每次都被重置,只有每周开始时才更新初始值- 条件更新逻辑:每周第一天用当前K线的指标值初始化状态,之后只要有任意一根K线满足条件,就将状态设为
true并保持到周末 - 索引更新时机:在新一周开始时检查上一周的状态,确保每一周只会触发一次索引累加
内容的提问来源于stack exchange,提问作者KarlEs
相关产品推荐
相关产品推荐

