Media Móvil REMA en TradingView

Media Móvil REMA en TradingView
En este artículo vamos a mostrar un código para calcular y trazar la media móvil REMA (Media Móvil Exponencial Regularizado) en un gráfico de TradingView usando el lenguaje PineScript 6. Como verán, el código es bastante simple gracias a la relativa sencillez de este lenguaje de programación.
Además, al final vamos a explicar cada parte del código para facilitar su comprensión. Pueden obtener más información sobre esta plataforma de trading en la siguiente guía: Reseña de TradingView
A continuación, vamos a explicar un poco en qué consiste este indicador:
¿Qué es la media móvil REMA?
La Media Móvil Exponencial Regularizada (Regularized EMA) es un indicador de trading introducido por Chris Satchwell en la edición de julio de 2003 de la revista Stock & Commodities.
Este indicador de análisis técnico fue diseñado para ser más suave y con menos retraso que la media móvil exponencial tradicional. El indicador utiliza el período de la EMA y el valor de Lambda (un factor que controla la cantidad de “regularización”). Cuando el valor de Lambda se establece en cero, la Media Móvil Exponencial Regularizada se convierte en la EMA estándar.
El primer argumento de la función Regularized EMA toma la serie de precios que será suavizada. Generalmente, se utiliza el precio de cierre, pero también se puede usar y calcular la Media Móvil Exponencial Regularizada de cualquier otra serie de precios o indicadores técnicos.
La fórmula de cálculo de la Media Móvil Exponencial Regularizada (Regularized EMA) se basa en una modificación de la fórmula tradicional de la EMA, incorporando un parámetro de regularización λ que ajusta el suavizado.
La fórmula de cálculo es:

Más información de este indicador técnico en: La media móvil REMA
Ahora vamos a mostrar el código el código explicado de este indicador para TradingView:
Código de la media móvil REMA para TradingView
El siguiente código básicamente lo que hace es calcular y trazar la media móvil REMA en el gráfico de precios junto con una media móvil simple del mismo periodo como comparación.
// © Desarrollado por Raúl Canessa de Tecnicasdetrading.com
//@version=6
indicator("REMA con SMA y Colores", overlay=true)
// Parámetros de entrada
length = input.int(25, title="Período de la Media Móvil")
src = input(close, title="Fuente de Precio")
// Cálculo de la SMA
sma = ta.sma(src, length)
// Cálculo de la REMA (Relative Moving Average)
var float rema = na // Declarar la variable 'rema' como flotante
volatility = ta.stdev(src, length) // Volatilidad como desviación estándar
alpha = 2 / (length + 1) // Factor de suavizado de la EMA
rema := na(rema[1]) ? sma : alpha * src + (1 - alpha) * nz(rema[1], sma) + volatility / 100
// Determinar si la REMA es alcista o bajista
is_bullish = rema > rema[1]
is_bearish = rema < rema[1]
// Trazar la REMA con colores
plot(rema, title="REMA", color=is_bullish ? color.green : is_bearish ? color.red : color.gray, linewidth=2)
// Trazar la SMA
plot(sma, title="SMA", color=color.blue, linewidth=1)
// Leyenda en el gráfico
var label lbl = na
label.delete(lbl)
lbl := label.new(x=bar_index, y=math.max(rema, sma), text="REMA: " + str.tostring(rema, "#.##") + "\nSMA: " + str.tostring(sma, "#.##"),
color=color.new(color.white, 90), textcolor=color.black, style=label.style_label_down, size=size.small)
Una vez que se aplica el indicador al gráfico se obtiene la siguiente imagen:

Media Móvil REMA en TradingView
A continuación, vamos a explicar el código en detalle:
Encabezado del Script
- //@version=6: Especifica que estamos usando la versión 6 de Pine Script.
- indicator(…): Define el nombre del indicador (“REMA con SMA y Colores”) y establece que se dibuje sobre el gráfico de precios (overlay=true).
Parámetros de Entrada
- length: Es el período de la media móvil. Por defecto es 14, pero el usuario puede cambiarlo.
- src: Es la fuente de precio que se usará para calcular las medias móviles. Por defecto es el precio de cierre (close), pero el usuario puede seleccionar otro (por ejemplo, high, low, etc
Cálculo de la SMA
- ta.sma(src, length): Calcula la Media Móvil Simple (SMA) usando la fuente de precio (src) y el período (length). La SMA es el promedio de los últimos length precios.
Cálculo de la REMA
- Declaración de la Variable rema:
- var float rema = na: Declara la variable rema como un flotante y la inicializa como na (no disponible). var asegura que la variable se inicialice solo una vez.
- Volatilidad:
- volatility = ta.stdev(src, length): Calcula la volatilidad como la desviación estándar de los precios en el período seleccionado. Esto mide cuánto varían los precios.
- Factor de Suavizado (alpha):
- alpha = 2 / (length + 1): Es el factor de suavizado utilizado en las medias móviles exponenciales (EMA). Controla cuánto peso se da al precio más reciente.
- Cálculo de la REMA:
- rema = na(rema[1]) ? sma : alpha * src + (1 – alpha) * nz(rema[1], sma) + volatility / 100:
- Si rema[1] no está disponible (na), se inicializa con el valor de la SMA.
- Si está disponible, se calcula como una combinación de:
- alpha * src: El precio actual ponderado por alpha.
- (1 – alpha) * nz(rema[1], sma): El valor anterior de la REMA (o SMA si no está disponible) ponderado por (1 – alpha).
- volatility / 100: Un ajuste basado en la volatilidad para hacer la REMA más sensible en mercados volátiles.
- rema = na(rema[1]) ? sma : alpha * src + (1 – alpha) * nz(rema[1], sma) + volatility / 100:
Determinar si la REMA es Alcista o Bajista
- is_bullish: Verdadero si la REMA actual es mayor que la REMA anterior (tendencia alcista).
- is_bearish: Verdadero si la REMA actual es menor que la REMA anterior (tendencia bajista)
Trazado de la REMA con colores
- plot(…): Dibuja la REMA en el gráfico.
- color=is_bullish ? color.green : is_bearish ? color.red : color.gray: Cambia el color de la REMA:
- Verde si es alcista.
- Rojo si es bajista.
- Gris si no hay cambio.
Trazado de la SMA
- plot(…): Dibuja la SMA en el gráfico en color azul.
Leyenda en el gráfico
- label.new(…): Crea una etiqueta en el gráfico que muestra los valores actuales de la REMA y la SMA.
- x=bar_index: Posiciona la etiqueta en la barra actual.
- y=math.max(rema, sma): Coloca la etiqueta en la parte superior de la REMA o SMA.
- text=”REMA: ” + str.tostring(rema, “#.##”) + “\nSMA: ” + str.tostring(sma, “#.##”): Muestra los valores de la REMA y SMA con dos decimales.
- color=color.new(color.white, 90): Fondo blanco semitransparente.
- textcolor=color.black: Texto en color negro.
- style=label.style_label_down: Estilo de la etiqueta (apuntando hacia abajo).
Resumen del Flujo del Código:
- Define los parámetros de entrada (length y src).
- Calcula la SMA.
- Calcula la REMA usando volatilidad y un factor de suavizado.
- Determina si la REMA es alcista o bajista.
- Traza la REMA con colores dinámicos y la SMA en azul.
- Muestra una etiqueta con los valores actuales de la REMA y SMA.
Mejoras potenciales para el indicador
El indicador que se ha creado con el código anterior es funcional, pero puede ser mejorado mediante cambios diseñados para aumentar su utilidad, precisión y adaptabilidad a diferentes estrategias de trading. A continuación, presentamos algunas ideas que desarrollaremos más adelante:
–Adición de Señales de Compra/Venta: Podríamos agregar señales visuales o alertas cuando la REMA cruza la SMA, lo cual es un evento comúnmente utilizado en distintas estrategias de trading.
–Adición de un Filtro de Tendencia: También podemos mejorar el indicador agregando un filtro de tendencia basado en otra media móvil (por ejemplo, una SMA de mayor período) con el fin de evitar operar en contra de la tendencia principal. Una SMA muy usada en este sentido es la SMA 200.
-Adición de Bandas de Volatilidad: Otra mejora interesante puede ser la adición de bandas de volatilidad alrededor de la REMA con el fin de visualizar mejor los niveles de soporte y resistencia dinámicos.
-Adición de Alertas: Otra opción es configurar alertas para notificar al trader cuando ocurren cruces entre la REMA y la SMA, o cuando la REMA cambia de color.
–Optimización del Cálculo de la REMA: Podemos experimentar con diferentes métodos para el cálculo de la REMA, como por ejemplo usar una EMA en lugar de una SMA como base, o ajustar el factor de volatilidad.
–Agregar Personalización de Colores: Otra mejora puede ser permitir que el usuario personalice los colores de la REMA, SMA y otros elementos del indicador.
–Agregar un Histograma que mida la diferencia entre la REMA y SMA: Si agregamos un histograma que presente la diferencia entre la REMA y la SMA, esto puede ayudar a identificar divergencias o convergencias entre las dos medias móviles.
–Agregar un Backtesting Básico: Podemos agregar un sistema simple de backtesting con el fin de evaluar el rendimiento del indicador en el pasado. Con esto podríamos evaluar si el indicador tiene el potencial de convertirse en la base de una estrategia de trading.
¿Tienes interés en operar con la plataforma TradingView y no sabes que broker usar? Una opción que recomendamos es IC Markets. Más información en: Análisis de IC Markets













