Estrategia de ruptura del rango de las estadísticas del MACD

El autor:¿ Qué pasa?, Fecha: 2023-12-11 11:48:27
Las etiquetas:

img

Resumen general

La estrategia de ruptura del rango de estocásticos del MACD combina los indicadores MACD y estocásticos en una estrategia de negociación cuantitativa.

Al tomar posiciones, esta estrategia considera las señales tanto del MACD como del Estocástico para mejorar la calidad de las entradas.

Estrategia lógica

La estrategia de ruptura del intervalo del estocástico del MACD se basa principalmente en los siguientes principios:

  1. El indicador MACD puede identificar eficazmente la dirección y el impulso de las tendencias de los precios
  2. El indicador estocástico puede detectar condiciones de sobrecompra o sobreventa de una acción
  3. Cuando el precio de las acciones ha estado variando durante un período de tiempo, es probable que ocurra un movimiento direccional significativo después de romper el rango anterior
  4. La combinación de las señales del MACD y el Estocástico en los intervalos de ruptura permite entradas oportunas y mejora la calidad

Específicamente, la estrategia utiliza la línea MACDDIFF cruzando la línea DEA para determinar señales de tendencia alcista o bajista.

Mientras tanto, los cruces entre la línea K y la línea D de Stochastics alrededor de las áreas de sobrecompra/sobreventa (default 30 y 70) también producen señales comerciales.

Cuando el MACD y el Estocástico dan señales alineadas, la estrategia tomará una posición.

Después de ingresar, los puntos de stop loss y take profit se establecen para controlar racionalmente la pérdida de una sola operación y bloquear las ganancias.

Los puntos fuertes

La estrategia de ruptura del rango del estocástico del MACD tiene las siguientes fortalezas:

  1. La combinación de indicadores mejora la calidad de la señal

    Utilizando tanto el MACD como el Estocástico se filtran algunas señales falsas y permite una mejor calidad de entrada.

  2. Captura de movimientos de ruptura y negociación de tendencias

    La estrategia se especializa en atrapar movimientos de fuga significativos después de un rango.

  3. Mecanismo de stop loss/take profit optimizado para controlar eficazmente los riesgos

    La lógica de stop loss/take profit incorporada limita razonablemente las pérdidas de operaciones individuales y bloquea las ganancias a tiempo.

Los riesgos

A pesar de su diseño cuidadoso, la estrategia de ruptura del rango del estocástico del MACD tiene algunos riesgos inherentes:

  1. Falta el tiempo de entrada perfecto

    Las breakouts falsas son comunes antes de que ocurran breakouts válidos.

  2. Fracaso de la fuga

    Si bien se realizan los preparativos adecuados antes de las entradas, aún son posibles las fugas fallidas, lo que conduce a pérdidas.

  3. Optimización incorrecta de parámetros

    Los parámetros inadecuados socavan gravemente el rendimiento de la estrategia.

Para hacer frente a los riesgos anteriores, pueden adoptarse las siguientes optimizaciones:

  1. Añadir otros indicadores a las señales de filtro

  2. Intervención manual para garantizar una ruptura válida

  3. Pruebas rigurosas de optimización de parámetros de varios conjuntos

Direcciones de optimización

Queda margen para una mayor optimización de la estrategia de ruptura del rango del estocástico del MACD:

  1. Optimice los parámetros MACD para encontrar la mejor combinación

  2. Optimizar los parámetros estocásticos para encontrar la mejor combinación

  3. Incorporar otros indicadores como KDJ, BOLL para mejorar la calidad de entrada

  4. Prueba diferentes períodos de retención, optimiza el stop loss/take profit

  5. Diferencias de parámetros entre los activos de ensayo

  6. Introducir algoritmos de aprendizaje automático para la optimización automática de parámetros

Conclusión

La estrategia de ruptura de rango del Estocástico del MACD capitaliza las rupturas de rango al ingresar basándose en señales alineadas tanto del MACD como del Estocástico. El mecanismo de stop loss / take profit controla aún más los riesgos.


/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="macd stoch strategy", shorttitle="benzo MACD stoch",overlay=true)
// Getting inputs
fast_length = input(title = "Fast Length", defval = 180)
slow_length = input(title = "Slow Length", defval = 390)
src = input(title = "Source", defval = close)
signal_length = input.int(title = "Signal Smoothing",  minval = 1, maxval = 500, defval = 135)
sma_source = input.string(title = "Oscillator MA Type",  defval = "EMA", options = ["SMA", "EMA"])
sma_signal = input.string(title = "Signal Line MA Type", defval = "EMA", options = ["SMA", "EMA"])
// Calculating
fast_ma = sma_source == "SMA" ? ta.sma(src, fast_length) : ta.ema(src, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(src, slow_length) : ta.ema(src, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
hist = macd - signal

// hline(0, "Zero Line", color = color.new(#787B86, 50))
// plot(hist, title = "Histogram", style = plot.style_columns, color = (hist >= 0 ? (hist[1] < hist ? #26A69A : #B2DFDB) : (hist[1] < hist ? #FFCDD2 : #FF5252)))
// plot(macd,   title = "MACD",   color = #2962FF)

// plot(signal, title = "Signal", color = #FF6D00)

periodK = input.int(14, title="%K Length", minval=1)
smoothK = input.int(1, title="%K Smoothing", minval=1)
periodD = input.int(3, title="%D Smoothing", minval=1)
k = ta.sma(ta.stoch(close, high, low, periodK), smoothK)
d = ta.sma(k, periodD)
// plot(k, title="%K", color=#2962FF)
// plot(d, title="%D", color=#FF6D00)
// h0 = hline(80, "Upper Band", color=#787B86)
// hline(50, "Middle Band", color=color.new(#787B86, 50))
// h1 = hline(20, "Lower Band", color=#787B86)
// fill(h0, h1, color=color.rgb(33, 150, 243, 90), title="Background")


// Make inputs that set the take profit % (optional)
longProfitPerc = input.float(3, title="Long Take Profit (%)", minval=0.0, step=0.1) * 0.01

shortProfitPerc = input.float(3, title="Short Take Profit (%)",minval=0.0, step=0.1) * 0.01

// Calculate trading conditions
enterLong  = macd>signal and ta.crossover(k,30)
enterShort = macd<signal and ta.crossunder(k,70)

// Figure out take profit price
longExitPrice  = strategy.position_avg_price * (1 + longProfitPerc)
shortExitPrice = strategy.position_avg_price * (1 - shortProfitPerc)

// Plot take profit values for confirmation
plot(strategy.position_size > 0 ? longExitPrice : na,
     color=color.green, style=plot.style_circles,
     linewidth=3, title="Long Take Profit")

plot(strategy.position_size < 0 ? shortExitPrice : na,
     color=color.red, style=plot.style_circles,
     linewidth=3, title="Short Take Profit")

// Submit entry orders
if enterLong
    strategy.entry("long", strategy.long)

if enterShort
    strategy.entry("short", strategy.short)

// STEP 3:
// Submit exit orders based on take profit price
if strategy.position_size > 0
    strategy.exit("long TP", limit=longExitPrice)

if strategy.position_size < 0
    strategy.exit("short TP", limit=shortExitPrice)

Más.