Как работает функция RMA TradingView Pine Script?

Я пытаюсь повторно реализовать rma функция от TradingViewpinescript но я не могу заставить его вывести тот же результат, что и исходная функция.

Вот код, который я разработал, код в основном ema функция, но она сильно отличается от rma функция plot результат при составлении графика:

//@version=3
study(title = "test", overlay=true)

rolling_moving_average(data, length) =>
    alpha = 2 / (length + 1)
    sum = 0.0
    for index = length to 0
        if sum == 0.0
            sum := data[index]
        else
            sum := alpha * data[index] + (1 - alpha) * sum

atr2 = rolling_moving_average(close, 5)
plot(atr2, title="EMAUP2", color=blue)

atr = rma(close, 5)
plot(atr, title="EMAUP", color=red)

Итак, мой вопрос, как это rma функция работает внутри, так что я могу реализовать ее клон?

PS. Вот ссылка на документацию https://www.tradingview.com/study-script-reference/ Она показывает возможную реализацию, но не работает при ее запуске.

1 ответ

Решение

Ниже приведена правильная реализация:

plot(rma(close, 15))

// same on pine, but much less efficient
pine_rma(x, y) =>
 alpha = 1/y
    sum = 0.0
    sum := alpha * x + (1 - alpha) * nz(sum[1])
plot(pine_rma(close, 15))

В коде на TradingView есть ошибка, альфа должна быть 1/y, а не y. Эта страница Википедии имеет правильную формулу для RMA Wikipedia - скользящие средние

Другие вопросы по тегам