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

如何通过条件[3]获取前一次交叉的K线数量?能否使用ta.barssince函数?

问题描述

图片中红色标注部分为问题点。我不清楚如何获取前一次交叉的K线长度,请问是否可以通过ta.barssince函数来获取K线数量?

提供的代码
//@version=5
indicator(title="OHLC", shorttitle="Close",overlay = true, max_bars_back = 100)

a = 44967
plot(a, '1', color.white, 3)
var int r = 0
var x = 0
var int t = 0
var int p = 0
var int p1 = 0
var int p2 = 0

var float f = 0
var l = 0
var l1 = 0
var l2 = 0

isCond11 = ta.crossover(close, a)
isCond21 = ta.crossunder(close, a) 
isCond1 = ta.cross(a, close) 

x := isCond11 ? 1 : isCond21[1] ? 0 : nz(x[1])
r := isCond21 ? 1 : 0

l := ta.barssince(isCond11) + 1
l1 := ta.barssince(isCond21) + 1
 
p := int(math.max(1, l))
p1 := int(math.max(1, l1))

//highp = ta.highest(close, int(math.max(1, nz(p))))
p2 := l1[1] - l[1]
if isCond21
    label.new(bar_index, close, str.tostring(l[1]), color = color.green)
    label.new(bar_index, close-7000, str.tostring(p2), color = color.yellow)
解答

ta.barssince可以用来计算从当前K线到最近一次交叉发生时的K线数量,但如果要获取前两次交叉之间的K线长度,仅靠ta.barssince直接计算容易出错——因为它只会追踪最近一次的交叉点。更可靠的方式是在每次交叉发生时记录当前的K线索引,后续通过索引差值来计算区间长度。

修正思路:

  • 用变量记录上一次crossover和crossunder发生的K线索引
  • 当新的交叉发生时,用当前索引减去上一次同类型交叉的索引,得到两次交叉之间的K线数量
  • 如果要获取前一次反向交叉到当前交叉的长度(比如从上次crossover到本次crossunder的长度),就用当前索引减去上次反向交叉的索引

修正后的示例代码:

//@version=5
indicator(title="OHLC", shorttitle="Close",overlay = true, max_bars_back = 100)

a = 44967
plot(a, '1', color.white, 3)

// 记录交叉发生的K线索引
var int last_crossover_bar = na
var int last_crossunder_bar = na

isCond11 = ta.crossover(close, a)
isCond21 = ta.crossunder(close, a) 

// 更新交叉索引
if isCond11
    last_crossover_bar := bar_index
if isCond21
    last_crossunder_bar := bar_index

// 计算前一次交叉到当前的K线长度(以crossunder为例)
if isCond21 and not na(last_crossover_bar)
    bar_length = bar_index - last_crossover_bar + 1 // +1是包含起始K线
    label.new(bar_index, close, str.tostring(bar_length), color = color.green)

这样就能准确获取两次交叉之间的K线数量,避免ta.barssince在多次交叉后追踪错误的问题。

内容的提问来源于stack exchange,提问作者Владислав Паршаков

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 18:23:10