#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)