You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何while循环中成交量比较始终返回false?如何找右侧首根放量Bar

问题分析与修复

你的代码始终返回_found = false的核心原因是起始检查位置错误,以及对Bar下标逻辑的理解偏差:

  1. 下标逻辑偏差
    在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。

  2. 修复后的代码
    要找到从右侧数第一根(最靠近当前的)成交量高于前一根的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
  1. 额外说明
    如果前10根Bar中确实没有满足“当前Bar成交量高于前一根”的情况,_found仍会返回false,这属于正常逻辑结果。如果需要处理这种无匹配的场景,可以在循环结束后添加判断:
if not _found
    // 无匹配时的处理逻辑,比如标记或输出
    label.new(bar_index, high, "未找到目标Bar")

内容的提问来源于stack exchange,提问作者cybtow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 22:25:15