获取第 n 次出现的 BarsSince() 而不是第 1 次出现

Get BarsSince() for nth occurrence instead of 1st occurrence

函数 BarsSince() 将 return 自 ARRAY 第一次出现为真(或 1)以来经过的柱数(时间段)。 https://www.amibroker.com/guide/afl/barssince.html

比如我有这样一个数组;

arr_test = [1 0 0 0 1 0 0 1 0 0 1 0 0];

BarsSince(arr_test) 将 return 3 因为这是 1 的第一次出现。

如果我想找出第 n 次出现 true 条件时经过的柱数怎么办?作为说明,我想有这样的功能 BarsSince_N(arr_test, n=2) 将 return 6.

谢谢。

我正在使用 Amibroker ver6.30.5

您可能想看看 Valuewhen

那么,你可以这样做:

bi = ValueWhen(arr_test > 0, BarIndex(), "nth occurence - 0 is the latest");
bars_since = LastValue(Close) - bi;

在这里,我只是使用 LastValue 来获取整个价格系列的最后一个 barnumber。这是未经测试的,但你应该明白了。