Estrategia de negociación basada en los indicadores RSI y MACD

El autor:¿ Qué pasa?, fecha: 2024-01-31 16:07:31
Las etiquetas:

img

Resumen general

Esta estrategia combina el índice de fortaleza relativa (RSI) y los indicadores de convergencia media móvil (MACD) para identificar oportunidades comerciales para BTC. Se hace largo cuando el RSI está por debajo de 30 y la línea MACD está por debajo de la línea de señal y el histograma MACD es menor que -100; se hace corto cuando el RSI está por encima de 80 y la línea MACD está por encima de la línea de señal y el histograma MACD es mayor que 250.

Estrategia lógica

  1. Utilice el indicador RSI para determinar si el mercado está sobrevendido o sobrecomprado.

  2. Cuando la línea MACD cruza por encima de la línea de señal, es una señal de compra; cuando la línea MACD cruza por debajo de la línea de señal, es una señal de venta.

  3. Combine las señales de los indicadores RSI y MACD para formar las reglas de entrada para esta estrategia.

  4. Utilice un stop loss de seguimiento para bloquear las ganancias. El stop loss de seguimiento se actualiza dinámicamente en función de la ganancia / pérdida de una posición abierta, lo que permite un control eficaz del riesgo.

Análisis de ventajas

  1. La combinación de indicadores RSI y MACD ayuda a filtrar las señales falsas de manera efectiva.

  2. El RSI es bueno para detectar condiciones de mercado sobrecompradas/sobrevendidas.

  3. El stop loss de seguimiento bloquea las ganancias de acuerdo con los movimientos del mercado en vivo, controlando el riesgo.

  4. La estrategia tiene pocos parámetros y es fácil de aplicar.

Análisis de riesgos

  1. El riesgo de un solo instrumento derivado de la negociación únicamente de BTC.

  2. Los osciladores MACD también pueden proporcionar señales erróneas en mercados agitados.

  3. El stop loss de seguimiento podría verse duramente afectado durante las grandes oscilaciones del mercado, al no controlar el riesgo.

  4. El mal ajuste de los parámetros puede conducir a un exceso de operaciones o a operaciones perdidas.

Oportunidades de mejora

  1. Considere agregar otros indicadores como bandas de Bollinger, KD, etc. para complementar las señales comerciales.

  2. Estudiar la correlación entre los mercados entre diferentes instrumentos, construir estrategias de reversión media de varios pares.

  3. Optimizar los mecanismos de stop loss, por ejemplo, stop loss oportuno, stop loss promedio, etc.

  4. Incorporar aprendizaje automático para la optimización de parámetros inteligentes.

Resumen de las actividades

Esta es una estrategia de seguimiento de tendencias basada en los indicadores RSI y MACD para determinar escenarios de sobrecompra / sobreventa. Combina bien las fortalezas de los indicadores técnicos para capturar los cambios de tendencia en el mercado. Mientras tanto, la lógica de la estrategia es simple y fácil de implementar.


/*backtest
start: 2023-01-24 00:00:00
end: 2024-01-30 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("BTC/USDT RSI and MACD Strategy", overlay = true)

// Define the RSI period
rsiPeriod = input(14, "RSI Period")

// Calculate the RSI
rsi = ta.rsi(close, rsiPeriod)

// Define the MACD parameters
macdShort = input(12, "MACD Short Period")
macdLong = input(26, "MACD Long Period")
macdSignal = input(9, "MACD Signal Period")

// Calculate the MACD
[macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal)

// Define the trailing stop level
trailing_stop_loss_factor = input.float(2.50, "Trailing Stop Loss Factor", step = 0.01)

// Define the entry and exit conditions
enterLong = ta.crossover(rsi, 30) and macdLine < signalLine and macdLine < -100
enterShort = ta.crossunder(rsi, 83) and macdLine > signalLine and macdLine > 250

// Submit the orders
if (enterLong)
    strategy.entry("Long", strategy.long)
if (enterShort)
    strategy.entry("Short", strategy.short)

// Trailing Stop Loss
longTrailingStopLoss = strategy.position_avg_price * (1 - trailing_stop_loss_factor / 100)
shortTrailingStopLoss = strategy.position_avg_price * (1 + trailing_stop_loss_factor / 100)
if strategy.position_size > 0 
    strategy.exit("Exit Long", "Long", stop  = longTrailingStopLoss)
if strategy.position_size < 0 
    strategy.exit("Exit Short", "Short", stop = shortTrailingStopLoss)

// Plot the indicators
plot(rsi, "RSI", color=color.blue)
hline(20, "RSI Lower Level", color=color.green)
hline(80, "RSI Upper Level", color=color.red)
plot(macdLine - signalLine, "MACD Histogram", color=color.red, style=plot.style_histogram)
hline(0, "Zero", color=color.gray)

Más.