Saltar al contenido
Análisis Técnico con Python

Estrategias de trading basadas en indicadores técnicos

Introducción

El análisis técnico y los indicadores técnicos en el trading

El análisis técnico es una herramienta popular en el mundo del trading para tomar decisiones de compra y venta de activos financieros en base a patrones y tendencias históricas de precios. Una de las opciones más comunes dentro del análisis técnico es la utilización de indicadores técnicos, los cuales se basan en series de datos estadísticas como el precio y el volumen, con el fin de ayudar a entender el comportamiento del mercado en el futuro cercano.

Algunos de los indicadores técnicos más comunes incluyen las medias móviles, el índice de fuerza relativa (RSI) y el oscilador estocástico. Cada uno de ellos puede ser utilizado de diferentes maneras, dependiendo del objetivo y el marco de tiempo del trader.

La estrategia de trading basada en indicadores técnicos no es la única opción dentro del análisis técnico, pero es una de las más utilizadas por su accesibilidad y facilidad de uso. Sin embargo, es importante recordar que ninguna herramienta de análisis técnico es infalible y siempre existe el riesgo de pérdidas financieras en el trading.

Resumen

Estrategias de Trading Basadas en Indicadores Técnicos

Las estrategias de trading basadas en indicadores técnicos son aquellas en las que se emplean herramientas matemáticas y estadísticas para analizar el comportamiento de un activo en particular en el mercado. Los indicadores técnicos, que son fórmulas y gráficos utilizados en el análisis técnico del mercado, ofrecen una amplia gama de opciones para los traders. Algunos de los indicadores técnicos más populares son:

  • Medias móviles: Calculadas tomando la media de los precios de cierre de un activo durante un período específico, las medias móviles pueden ayudar a identificar la tendencia del mercado y señales de compra y venta.

  • Bandas de Bollinger: Estas son dos líneas trazadas alrededor de la media móvil de un activo, representando la volatilidad del mercado y ayudando a identificar puntos de entrada y salida.

  • Índice de Fuerza Relativa (RSI): Mide la fuerza de la tendencia de un activo, oscilando entre 0 y 100. Un activo se considera sobrecomprado cuando el RSI supera 70 y sobrevendido cuando está por debajo de 30.

  • Oscilador Estocástico: Utilizado para identificar la fuerza de un movimiento en una dirección específica, oscila entre 0 y 100. Un activo se considera sobrecomprado cuando el indicador supera 80 y sobrevendido cuando está por debajo de 20.

  • MACD: Mide la diferencia entre dos medias móviles y puede ayudar a identificar cambios en la tendencia del mercado.

Los traders utilizan estos indicadores técnicos y otros para desarrollar estrategias de trading, como el trading de tendencias, el trading a corto plazo y el trading de contratos de futuros. Estas estrategias ayudan a los traders a tomar decisiones informadas y a reducir el riesgo de pérdidas financieras en el mercado.

Aplicación teórica

Una estrategia de trading basada en el indicador técnico promedio móvil (MA) es muy común. Supongamos que estás interesado en el mercado de acciones y deseas operar con una acción en particular que cotiza en la bolsa de valores. La estrategia sería la siguiente:

  1. Seleccionar el período de tiempo, por ejemplo, 30 días.
  2. Decidir qué tipo de promedio móvil se quiere utilizar, si el promedio móvil simple, exponencial, ponderado, etc. En este caso, usaremos el promedio móvil simple (SMA).
  3. Establecer el período, es decir, que “n” días se usarán para el cálculo del promedio. En este caso, usaremos 50 días.
  4. Una compra se realiza cuando el precio de mercado de la acción se cruza por encima de su promedio móvil de 50 días, y una venta se realiza cuando el precio de mercado cruza por debajo de su promedio móvil de 50 días.

En Python, se puede implementar esta estrategia de la siguiente manera:

        
import pandas as pd
import yfinance as yf
import matplotlib.pyplot as plt

data = yf.download('AAPL', start='2010-01-01', end='2021-01-01')
data['MA50'] = data['Adj Close'].rolling(window=50).mean()
data = data.dropna()

# Buy and sell signals using the SMA crossover
data['Buy'] = data['Adj Close'] > data['MA50']
data['Sell'] = data['Adj Close'] < data['MA50']
data['Position'] = data['Buy'].astype(int) - data['Sell'].astype(int)

# Plot the buy and sell signals with the stock price and the SMA
plt.figure(figsize=(10,4))
plt.plot(data['Adj Close'], label='Precio de Cierre')
plt.plot(data['MA50'], label='MA50')
plt.scatter(data.loc[data.Position == 1].index, data.loc[data.Position == 1]['Adj Close'], marker='^', c='green', label='Compra')
plt.scatter(data.loc[data.Position == -1].index, data.loc[data.Position == -1]['Adj Close'], marker='v', c='red', label='Venta')
plt.legend()
plt.title('Estrategia de Trading con Promedio Móvil')
plt.xlabel('Fecha')
plt.ylabel('Precio')
plt.show()
        
    

Este código descargaría los datos históricos de la acción AAPL desde 2010 hasta 2021 empleando la librería yfinance. A continuación, calcularía el promedio móvil simple de 50 días sobre los precios de cierre ajustados (Adj Close) y generaría señales de compra y venta en función del cruce del precio con el promedio móvil. Finalmente, se visualiza el gráfico con las señales de compra y venta marcadas con flechas verdes y rojas respectivamente, permitiéndonos así evaluar la estrategia.

Aplicación práctica

Un ejemplo de una estrategia de trading basada en el indicador técnico de media móvil. Primero, importamos las librerías necesarias:

        
import pandas as pd
import numpy as np
import yfinance as yf
import matplotlib.pyplot as plt
        
    

Luego, descargamos los datos históricos de un activo (en este caso, el índice S&P500) y calculamos la media móvil de 50 y 200 días:

        
ticker = '^GSPC'
data = yf.download(ticker, start='2010-01-01', end='2021-06-30')
data['MA_50'] = data['Adj Close'].rolling(window=50).mean()
data['MA_200'] = data['Adj Close'].rolling(window=200).mean()
data.dropna(inplace=True)
        
    

A continuación, definimos la estrategia. Cuando la media móvil de 50 días cruza por encima de la media móvil de 200 días, se activa una señal de compra. Por el contrario, cuando la media móvil de 50 días cruza por debajo de la media móvil de 200 días, se activa una señal de venta:

        
signals = pd.DataFrame(index=data.index)
signals['signal'] = 0.0
signals['MA_50'] = data['MA_50']
signals['MA_200'] = data['MA_200']
signals['signal'][50:] = np.where(signals['MA_50'][50:] > signals['MA_200'][50:], 1.0, 0.0)
signals['positions'] = signals['signal'].diff()
        
    

Finalmente, graficamos la estrategia junto con el precio de cierre del activo:

        
fig = plt.figure(figsize=(10, 6))
ax1 = fig.add_subplot(111, ylabel='Price in $')
data['Adj Close'].plot(ax=ax1, color='gray', lw=2.)
signals[['MA_50', 'MA_200']].plot(ax=ax1, lw=2.)
ax1.plot(signals.loc[signals.positions == 1.0].index, data['Adj Close'][signals.positions == 1.0], '^', markersize=10, color='g')
ax1.plot(signals.loc[signals.positions == -1.0].index, data['Adj Close'][signals.positions == -1.0], 'v', markersize=10, color='r')
plt.show()
        
    

El resultado será un gráfico con la serie histórica del activo y las medias móviles de 50 y 200 días, donde se señala con flechas verdes una compra y con flechas rojas una venta. Este es solo un ejemplo de cómo se puede utilizar un indicador técnico para generar señales de trading. Existen muchas otras estrategias y combinaciones de indicadores que pueden ser útiles, siempre y cuando se apliquen adecuadamente y se realice una gestión adecuada del riesgo.