Pine Script连续涨跌streak代码调试:无法延续计数求助
Pine Script 连续涨跌(Streak)计数修复方案
原代码问题分析
- 逻辑判断偏差:需求是当日收盘价与前一日收盘价对比,原代码误将当日收盘价和开盘价做比较
- 冗余循环:
for i=0 to 0完全多余,Pine Script 本身是逐K线(bar)执行的,不需要手动循环单根K线 - Streak延续逻辑漏洞:仅简单判断前一日streak为正就加1,未关联当前K线的涨跌趋势,导致计数无法正常延续
正确实现代码
//@version=5 indicator("连续涨跌计数", overlay=false) // 初始化streak变量,跨bar保留数值 var int streak = 0 // 核心逻辑:对比当日收盘价与前一日收盘价 if close > close[1] // 当前上涨:若前一日为上涨趋势则延续计数,否则从1开始 streak := streak[1] > 0 ? streak[1] + 1 : 1 elif close < close[1] // 当前下跌:若前一日为下跌趋势则延续计数,否则从-1开始 streak := streak[1] < 0 ? streak[1] - 1 : -1 else // 收盘价相等时streak重置为0 streak := 0 // 可视化streak数值 plot(streak, title="涨跌连续计数", color=streak>0 ? color.green : streak<0 ? color.red : color.gray, linewidth=2)
代码说明
var int streak = 0:用var声明变量,确保其值在每根K线执行时不会被重置,保留上一根K线的计数结果- 分支判断逻辑:
- 当日收盘价高于前一日时,先检查前一日是否处于上涨趋势,是则延续计数加1,否则从1重新开始
- 当日收盘价低于前一日时,先检查前一日是否处于下跌趋势,是则延续计数减1,否则从-1重新开始
- 收盘价与前一日相等时,直接将streak设为0
- 可视化部分:通过
plot函数将计数结果展示,上涨为绿色、下跌为红色、平盘为灰色,便于直观观察
内容的提问来源于stack exchange,提问作者candlestickb
相关产品推荐
相关产品推荐

