Получить BarsSince () для n-го вхождения вместо 1-го вхождения - PullRequest
0 голосов
/ 21 мая 2019

Функция BarsSince () будет возвращать количество баров (периодов времени), прошедших с тех пор, как значение ARRAY было истинным (или 1) для 1-го появления условия true. 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) вернет 3, так как это первое вхождение 1.

Что если я хочу узнать количество баров, прошедших за n-е вхождение истинного условия? В качестве иллюстрации я хотел бы иметь такую ​​функцию, чтобы BarsSince_N(arr_test, n=2) вернет 6.

Спасибо.

Я использую Amibroker ver6.30.5

1 Ответ

1 голос
/ 27 мая 2019

Возможно, вы захотите взглянуть на Значение, когда .

Итак, вы можете сделать что-то вроде:

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

Здесь я просто использую LastValue дляполучить последний номер из всей серии цен.Это не проверено, но вы должны понять.

...