Как работает функция RMA TradingView Pine Script?
Я пытаюсь повторно реализовать rma
функция от TradingView
pinescript
но я не могу заставить его вывести тот же результат, что и исходная функция.
Вот код, который я разработал, код в основном 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 - скользящие средние