Tendencia basada en el MACD y el RSI tras una estrategia de inversión

El autor:¿ Qué pasa?, Fecha: 2023-12-18 17:53:38
Las etiquetas:

img

Resumen general

Esta estrategia combina los indicadores MACD, EMA y RSI para implementar el seguimiento de tendencias y el comercio de reversión. Genera señales de compra cuando el MACD sube a través de la línea de señal y el precio de cierre está por encima de la EMA; y vende señales cuando el MACD cae por debajo de la línea de señal y el precio de cierre está por debajo de la EMA para capturar tendencias. Mientras tanto, opera reversiones cuando el RSI alcanza niveles de sobrecompra o sobreventa.

Estrategia lógica

  1. Calcular las diferencias MACD y la EMA.

    fastMA = ema(close, fast)
    slowMA = ema(close, slow) 
    macd = fastMA - slowMA
    signal = sma(macd, 9)
    ema = ema(close, input(200))
    
  2. Generar una señal de compra: el MACD diff (macd - señal) va por encima de 0 y el precio de cierre está por encima de la EMA.

    delta = macd - signal
    buy_entry= close>ema and delta > 0 
    
  3. Generar una señal de venta: la diferencia MACD cae por debajo de 0 y el precio de cierre está por debajo de la EMA.

    sell_entry = close<ema and delta<0
    
  4. Reversión de las operaciones cuando el índice RSI alcanza niveles de sobrecompra o sobreventa.

    if (rsi > 70 or rsi < 30)
        reversal := true
    

Análisis de ventajas

  1. Combinar el seguimiento de tendencias y el comercio de reversión para beneficiarse tanto de tendencias como de reversiones.
  2. Utilice el MACD para juzgar las direcciones de la tendencia y evitar falsas rupturas.
  3. Filtra el ruido con EMA.
  4. Mejorar la rentabilidad con el RSI para operaciones de reversión.

Análisis de riesgos

  1. Las operaciones de reversión pueden incurrir en pérdidas en mercados con tendencias fuertes.
  2. El ajuste incorrecto de los parámetros puede aumentar la frecuencia de negociación y los costes de deslizamiento.
  3. Las señales de reversión pueden tener algún retraso, perdiendo los mejores precios de entrada.

Soluciones:

  1. Optimice los parámetros para encontrar la mejor combinación.
  2. Ajuste adecuadamente los umbrales de reversión del RSI.
  3. Considere la posibilidad de añadir un stop loss a las pérdidas de control.

Direcciones de optimización

  1. Prueba las longitudes EMA.
  2. Optimice los parámetros del MACD.
  3. Prueba diferentes umbrales de inversión del RSI.
  4. Considere combinarlo con otros indicadores.

Resumen de las actividades

Esta estrategia combina el MACD, EMA y RSI para implementar orgánicamente el seguimiento de tendencias y la inversión de operaciones. El MACD juzga las direcciones de tendencias, el EMA filtra el ruido y el RSI captura los puntos de inversión. Tal combinación de múltiples indicadores puede determinar mejor los movimientos del mercado, mejorando la rentabilidad al tiempo que reduce las falsas señales. La optimización de parámetros y la gestión de stop loss podrían mejorarse aún más para reducir las pérdidas innecesarias. En general, este es un marco de estrategia sólido con potencial para obtener ganancias constantes.


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © mbuthiacharles4

//Good with trending markets
//@version=4
strategy("CHARL MACD EMA RSI")

fast = 12, slow = 26
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)

ema = ema(close, input(200))

rsi = rsi(close, input(14))
//when delta > 0  and close above ema buy

delta = macd - signal

buy_entry= close>ema and delta > 0
sell_entry = close<ema and delta<0 
var bought = false
var sold = false
var reversal = false
if (buy_entry and bought == false and rsi <= 70) 
    strategy.entry("Buy",true , when=buy_entry)
    bought := true
    
strategy.close("Buy",when= delta<0 or rsi > 70)
if (delta<0 and bought==true)
    bought := false

//handle sells

if (sell_entry and sold == false and rsi >= 30)
    strategy.entry("Sell",false , when=sell_entry)
    sold := true

strategy.close("Sell",when= delta>0 or rsi < 30)
if (delta>0 and sold==true)
    sold := false
    
if (rsi > 70 or rsi < 30)
    reversal := true
    placing = rsi > 70 ? high :low
    label.new(bar_index, placing, style=label.style_flag, color=color.blue, size=size.tiny)
if (reversal == true)
    if (rsi < 70 and sold == false and delta < 0)
        strategy.entry("Sell",false , when= delta < 0)
        sold := true
        reversal := false
    else if (rsi > 30 and bought == false and delta > 0)
        strategy.entry("Buy",true , when= delta > 0)
        bought := true
        reversal := false



Más.