为何while循环中成交量比较始终返回false?如何找右侧首根放量Bar
问题分析与修复
你的代码始终返回_found = false的核心原因是起始检查位置错误,以及对Bar下标逻辑的理解偏差:
下标逻辑偏差
在Pine Script中,volume[n]代表当前K线往左数第n根的成交量(n=0是当前最新K线,也就是最右侧的Bar;n=1是当前Bar的前一根,往左数1位)。你的代码从_count=1开始检查,直接跳过了最右侧的当前Bar,从“前1根”开始往旧Bar方向查找,若前10根中没有满足volume[_count] > volume[_count+1]的情况,_found就会保持false。修复后的代码
要找到从右侧数第一根(最靠近当前的)成交量高于前一根的Bar,需要从最右侧的当前Bar(_count=0)开始检查,找到满足条件的Bar后立即终止循环:
_count = 0 _found = false // 循环范围可根据需求调整,这里检查当前及往左共10根Bar while not _found and _count < 10 // 判断当前_count位置的Bar是否高于它的前一根(左侧相邻Bar) _found := volume[_count] > volume[_count + 1] _count := _count + 1
- 额外说明
如果前10根Bar中确实没有满足“当前Bar成交量高于前一根”的情况,_found仍会返回false,这属于正常逻辑结果。如果需要处理这种无匹配的场景,可以在循环结束后添加判断:
if not _found // 无匹配时的处理逻辑,比如标记或输出 label.new(bar_index, high, "未找到目标Bar")
内容的提问来源于stack exchange,提问作者cybtow
相关产品推荐
相关产品推荐

