Подсчет количества свечей выше EMA50

#pine-script

#pine-script

Вопрос:

Нужен совет с помощью скрипта pine Я хочу написать код, подсчитывающий количество свечей выше EMA50, как только закрытие опустится ниже EMA50, этот счетчик сбрасывается на ноль :

»’

 MA_long = ema(close,50)
// Counting how many candles are above the MA_long
barsAboveMA = 0
if close > MA_long
    for i = 1 to 9999
        if close[i] < MA_long
            break
        barsAboveMA := barsAboveMA   1
  

»’

Но этот код, имеющий странную производительность, работает некорректно.

Ответ №1:

Обратите внимание, что вы не использовали оператор ссылки на историю с MA_long в вашем цикле for. Это означает, что вы сравниваете прошлые значения закрытия со значением EMA на текущем баре (также обратите внимание, что вы начинаете сравнение с close [1] и не используете значение закрытия с текущего бара).

Лучшим способом реализовать подобный счетчик в Pine было бы использовать ключевое слово var . С помощью var переменная не будет сбрасываться в 0 на каждом баре. Сделайте это, и тогда вы сможете изменить его без циклов for:

 MA_long = ema(close,50)
var barsAboveMA = 0 // when var is used, the value is not reset to 0 at the start of every bar
if close > MA_long
    barsAboveMA := barsAboveMA   1
else
    barsAboveMA := 0
plot(barsAboveMA)