Medias móviles
Crea líneas SMA y EMA y observa cómo cambia la ventana de cálculo.
La línea del cierre sigue el movimiento de cada vela. Si calculas la media de varios cierres consecutivos, obtienes una línea menos irregular. En este capítulo crearás dos medias móviles a partir de diez velas.
Calcula la media
La media simple de tres valores es su suma dividida entre tres. Si los valores son 100, 103 y 101, la media es:
(100 + 103 + 101) / 3 = 101.333...La ventana de una media móvil tiene un tamaño fijo, pero avanza con las velas. En la siguiente vela, una ventana de tres recibe el nuevo cierre y descarta el más antiguo.
Si el nuevo cierre es 105, la siguiente media es (103 + 101 + 105) / 3, es decir, 103. El primer cierre, 100, ya no pertenece a esa ventana.
Una media móvil simple de diez velas necesita el cierre actual y los nueve anteriores. No usamos la vela actual más diez anteriores: diez es el número total de valores incluidos.
Las funciones de ta
El espacio de nombres ta contiene cálculos ya preparados. ta.sma(close, 10) devuelve la media móvil simple de diez cierres. SMA significa «simple moving average».
La llamada tiene dos argumentos:
close: la fuente cuyos valores promediamos;10: el tamaño de la ventana en velas.
En las primeras nueve velas todavía no hay diez cierres disponibles. La SMA es na en ellas y su primer valor válido aparece en la décima. Esta fase inicial también se llama calentamiento.
El tamaño de la ventana no es una duración en segundos. Diez velas diarias y diez velas de una hora abarcan períodos distintos.
SMA y EMA juntas
La EMA, o media móvil exponencial, da más peso a los valores recientes. ta.ema(close, 10) también utiliza una longitud de diez velas, pero calcula con otra fórmula.
La EMA empieza con la media simple de la primera ventana completa. Con longitud diez, ambas líneas aparecen en la décima vela. Después, la EMA suma a su valor anterior una parte de la diferencia entre el nuevo precio y la EMA anterior. Esa proporción es 2 / (10 + 1).
Crea moving_averages.py:
"""
@pyne edge
"""
from pynecore.lib import close, color, plot, script, ta
@script.indicator("Two Moving Averages", overlay=True)
def main():
simple_average = ta.sma(close, 10)
exponential_average = ta.ema(close, 10)
plot(simple_average, "SMA 10", color=color.blue, linewidth=2)
plot(exponential_average, "EMA 10", color=color.orange, linewidth=2)Ejecútalo con los datos de demostración. La SMA azul y la EMA naranja aparecen junto a las velas de precio. Recorre el gráfico y observa las zonas donde el precio cambia bruscamente de dirección. Las dos medias no reaccionan necesariamente al mismo ritmo.

La media es una línea calculada a partir de valores pasados. Su forma más suave no indica por sí sola hacia dónde se moverá el precio.
¿Por qué calculamos en cada vela?
ta.sma y ta.ema utilizan estado de cálculo entre ejecuciones consecutivas. En este ejemplo, ambas llamadas se ejecutan en cada vela.
Más adelante escribiremos código que realiza una operación solo en determinados casos: por ejemplo, dibujar una marca si el cierre está por encima de la media. Lo aprenderás en Condiciones y marcas.
Incluso entonces, calcula la media en cada vela y decide después cómo utilizarla. Si llamas a ta.sma solo en las velas alcistas, el cálculo se omite en las demás y el resultado puede diferir del obtenido sobre toda la secuencia. Por ahora, asegúrate de que ambos cálculos se ejecuten en cada vela.
Estas líneas no necesitan una anotación Series en tus variables: dibujamos los valores actuales y no usamos simple_average[1]. Si después quieres indexar directamente el historial de una variable propia, añade Series[float].
Ventanas más largas y más cortas
Al aumentar la longitud, más precios anteriores influyen en la media. La línea suele ser más suave y seguir los cambios con más retraso. Con una longitud menor, los movimientos recientes tienen más efecto.
Pruébalo con los mismos datos:
- Ejecuta ambas medias de diez y observa un giro de precio fácil de reconocer.
- Cambia la longitud a 30 en ambas llamadas.
- Cambia también los títulos a
SMA 30yEMA 30. - Vuelve a ejecutar y busca el mismo momento.
Modificamos el título porque "SMA 10" es solo una etiqueta. Su número no modifica el cálculo. El segundo argumento de la llamada controla la ventana.
Pruébalo por tu cuenta
Crea dos medias móviles simples: una de cinco velas y otra de veinte. La corta debe ser azul y la larga naranja. Pon un título adecuado a cada una.
Solución del ejercicio
En el cuerpo de main(), sustituye los cálculos y dibujos por:
fast_average = ta.sma(close, 5)
slow_average = ta.sma(close, 20)
plot(fast_average, "SMA 5", color=color.blue, linewidth=2)
plot(slow_average, "SMA 20", color=color.orange, linewidth=2)Con longitud cinco faltan las cuatro primeras velas; con veinte, las primeras diecinueve. Después del calentamiento, ambas líneas usan la misma serie de cierres con tamaños de ventana distintos.
Comprueba la ventana
Puedes comprobar a mano una SMA de tres velas. Ajusta la longitud a tres, elige tres cierres consecutivos y calcula su media. En la tercera vela, el gráfico muestra el mismo valor. Las primeras dos no tienen una ventana completa.