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

为何不同时间框架下运行该Pine Script代码结果不一致?

问题:不同时间框架下Pine Script成交量统计结果不一致

我需要在日线时间框架中找到从右侧数起第一根成交量大于前一根K线的日线,编写了如下Pine Script代码,但在日线和4小时时间框架运行时,得到的数值并不相同,请问问题出在哪里?

getLastStrength(simple string period) =>
    volumen = request.security(syminfo.tickerid, period, volume)
    _count = 1
    _found = false
    while not _found and _count < 10
        if (volumen[_count] > volumen[_count+1])
            _found := true
        else
            _count := _count + 1
    _count

string texto = "D:"+ str.tostring(getLastStrength("1D"))
if barstate.islast
    label.new(bar_index, high, texto, color= color.red)

核心问题点

  1. 索引逻辑完全颠倒
    Pine Script中,数组索引[0]对应最新的K线,[1]是前一根,[2]是再前一根,以此类推。你的代码从_count=1开始,对比volumen[_count] > volumen[_count+1],本质是在检查“前一根日线”是否大于“再前一根日线”,完全跳过了对最新日线的检查,逻辑方向错误。

  2. 未完成K线的干扰
    在非日线框架(如4小时)中,request.security默认返回的日线volume包含当前未收盘的实时成交量(还在累加),而日线框架下的volume是已收盘的完整日线成交量。两者对比的基础数据不一致,结果自然不同。

  3. 时间框架对齐差异
    不同主图时间框架下,request.security返回的数据序列是对齐到主图K线的,这会导致volumen数组的索引对应的历史K线位置和日线框架下不一致,循环遍历的逻辑无法统一生效。


修正后的代码

//@version=5
indicator("找成交量大于前一根的日线", overlay=true)

getLastStrength() =>
    // 请求已收盘的日线成交量,关闭前瞻避免未来数据
    volumen = request.security(syminfo.tickerid, "1D", volume, barmerge.gaps_on, barmerge.lookahead_off)
    _count = 0
    _found = false
    maxLookBack = 20  // 限制最大回溯次数,防止无限循环
    // 从最新的日线开始往前找
    while not _found and _count < maxLookBack - 1
        // 检查当前日线成交量是否大于前一根
        if volumen[_count] > volumen[_count + 1]
            _found := true
        else
            _count += 1
    _count + 1  // 返回从右侧数的位置(最新的为第1根)

string texto = "D:" + str.tostring(getLastStrength())
if barstate.islast
    label.new(bar_index, high, texto, color=color.red)

修正说明

  • 调整索引逻辑:从_count=0开始,先检查最新的日线是否满足条件,符合“从右侧数”的需求。
  • 关闭前瞻并指定barmerge.gaps_on:确保只获取已收盘的完整日线成交量,避免未完成K线的干扰。
  • 限制最大回溯次数:防止极端情况下循环无法终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:17:36