Estrategia de cruce de medias móviles altas y bajas para capturar pequeñas tendencias


Fecha de creación: 2023-09-28 11:44:04 Última modificación: 2023-09-28 11:44:04
Copiar: 1 Número de Visitas: 780
1
Seguir
1617
Seguidores

Descripción general

La estrategia tiene como objetivo capturar las tendencias de divisas a corto plazo, utilizando los EMA cruzados y el RSI como señales de negociación, y en combinación con el filtro ADX para entrar en juego y bloquear las ganancias mediante el seguimiento de la tendencia de los puntos de parada. La estrategia se aplica a todos los pares de divisas, pero se aplica principalmente a los gráficos de 1 hora de las principales pares de divisas.

Principio de estrategia

La estrategia se basa en los siguientes indicadores y condiciones para generar señales de negociación:

  • 5 ciclos rápidos EMA: línea azul
  • 10 ciclos lentos EMA: línea roja
  • RSI de 10 períodos aplicado al precio medio de cierre ((máximo + mínimo / 2)
  • 14 ciclos ADX

Las señales de entrada a la bolsa:

  • Multiplicación: cuando el EMA rápido atraviesa el EMA lento desde abajo y la línea RSI se incrementa desde los mínimos hasta los 50
  • Cabeza vacía: cuando el EMA rápido atraviesa el EMA lento desde arriba hacia abajo y la línea RSI se vacía desde el punto más alto hacia abajo al romper el 50
  • ADX > 25 para hacer más vacío

La señal de salida:

  • El Stop Loss móvil, el Stop Loss de seguimiento es de 150 puntos, el Stop Win es de 400 puntos
  • Las nuevas señales hacen que las posiciones se cierren.
  • Todos los viernes por la noche, todo el dinero se vacía.

La estrategia centralizó el uso de cruce de línea media, sobreventa de RSI y el indicador de juicio de tendencia ADX, formando un mecanismo de entrada más estricto, que puede seguir el paso después de la generación de tendencias y rastrear los stop-losses para bloquear las ganancias, lo que permite capturar efectivamente las tendencias a corto plazo.

Análisis de las ventajas

La estrategia tiene las siguientes ventajas:

  1. Utilizando el cruce de la línea rápida y lenta de la EMA como base para determinar la tendencia, el cruce de la línea rápida y lenta hacia arriba indica un cambio de tendencia a la baja, mientras que el cruce hacia abajo indica un cambio de tendencia a la baja.

  2. La inclusión del indicador RSI puede filtrar algunas señales falsas de ruptura. El RSI supera las zonas de sobreventa como una señal de ajuste a corto plazo para evitar entrar en un mercado convulso.

  3. El indicador ADX se utiliza para determinar la existencia de una verdadera tendencia y puede filtrar eficazmente parte del ruido. Se considera una señal de negociación solo cuando el ADX es mayor que 25, lo que garantiza una tendencia clara.

  4. Adopta un método móvil de stop loss y stop-loss para maximizar las ganancias, control de los riesgos de la garantía de stop loss, seguimiento de la distancia de stop loss de 150 puntos y la distancia de stop stop de 400 puntos, para seguir continuamente la tendencia.

  5. Cada viernes, antes del cierre de la bolsa, se eliminaba toda la posición, evitando los riesgos del fin de semana y manteniendo la regularidad de las operaciones.

Análisis de riesgos

La estrategia también tiene los siguientes riesgos:

  1. Las estrategias de cruce de la línea media de la EMA son propensas a generar falsas brechas, y la virtualización puede generar pérdidas. Se puede ajustar adecuadamente el parámetro de la línea media o filtrar otros indicadores.

  2. El indicador RSI solo puede juzgar el estado de sobrecompra y sobreventa, no puede confirmar la reversión de la tendencia, la visualización puede perder la tendencia o invertir la entrada. Se puede considerar el uso o ajuste de parámetros en combinación con otros indicadores.

  3. El indicador ADX solo determina si existe una tendencia o no. El tiempo de entrada puede ser inexacto y se puede considerar agregar otros criterios o reducir los requisitos de filtración ADX.

  4. La configuración de la parada de pérdidas puede ser demasiado fija para adaptarse a los cambios en el mercado, se pueden probar diferentes parámetros o se puede ajustar la intervención manual a tiempo.

  5. La posición cerrada obligatoria semanal puede ser una buena oportunidad de operación de tendencia perdida, se puede considerar la posibilidad de ajustar la posición cerrada diaria o modificarla posteriormente a una posición cerrada condicional.

Dirección de optimización

La estrategia también puede ser optimizada en las siguientes direcciones:

  1. Prueba diferentes combinaciones de parámetros de la línea media para encontrar la longitud de la línea media óptima. Se puede introducir la determinación de la inclinación de la línea media.

  2. Prueba diferentes parámetros del RSI o combinación con el indicador KDJ para optimizar aún más los juicios de sobrecompra y sobreventa.

  3. Optimizar los parámetros de ADX, encontrar las condiciones de filtración ADX más adecuadas y mejorar la calidad de entrada.

  4. Prueba de la combinación de los puntos fijos de la parada de pérdida móvil con el seguimiento dinámico de la parada de pérdida ATR.

  5. Introducción de estrategias de retracción de reajustes diarios, entrando en juego después de la confirmación de la tendencia, se puede considerar un gráfico de 5 minutos o 15 minutos.

  6. Agrega un módulo de gestión de posiciones basado en la volatilidad para ajustar dinámicamente las posiciones según las fluctuaciones del mercado.

  7. Experimentar con técnicas de aprendizaje automático para optimizar los parámetros y lograr la adaptabilidad de las estrategias.

Resumir

Esta estrategia en su conjunto es una estrategia de seguimiento de tendencias muy simple y directa, que utiliza la dirección de la tendencia de juzgamiento de cruzamiento de la línea media, el filtro RSI de brechas falsas, la tendencia de juzgamiento de ADX y el stop loss para seguir la tendencia y capturar ganancias en el corto plazo. La dirección de optimización de la estrategia se centra principalmente en la búsqueda de una mejor combinación de indicadores, la flexibilidad de la determinación de la tendencia y la introducción de gestión de posiciones dinámicas.

Código Fuente de la Estrategia
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Hucklekiwi Pip - HLHB Trend-Catcher System", shorttitle="HLHB TCS", overlay=true,
  default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// -----------------------------------------------------------------------------
// HLHB Trend-Catcher System as described on BabyPips.com
//
// Strategy Author: Hucklekiwi Pip 
// Coded By: Backtest Rookies
// -----------------------------------------------------------------------------
//
// Refs:
//   - Original System: https://www.babypips.com/trading/forex-hlhb-system-explained
//   - Updated System: https://www.babypips.com/trading/forex-hlhb-system-20190311
//
//
// Description (From Hucklekiwi Pip)
// 
//   The HLHB System simply aims to catch short-term forex trends.
//   It is patterned after the Amazing Crossover System that Robopip once backtested.
//   In fact, it was one of his highest-scoring mechanical systems in 2014! 
//   The system can be applied to any pair, but since I’m into major pairs, 
//   I’m applying it to the 1-hour charts of EUR/USD and GBP/USD.
// -----------------------------------------------------------------------------
// STRATEGY REQUIREMENTS
// -----------------------------------------------------------------------------
//
// Setup
// -----
//  - EUR/USD 1-hour chart
//  - GBP/USD 1-hour chart
//  - 5 EMA: blue line
//  - 10 EMA: red line
//  - RSI (10) applied to the median price (HL/2)
//  - ADX (14)
//
// Entry
// -----
//  - BUY when the 5 EMA crosses above the 10 EMA from underneath and the RSI 
//    crosses above the 50.0 mark from the bottom.
//  - SELL when the 5 EMA crosses below the 10 EMA from the top and the RSI 
//    crosses below the 50.0 mark from the top.
//  - Make sure that the RSI did cross 50.0 from the top or bottom and not just 
//    ranging tightly around the level.
//  - ADX > 25 for Buy and Sells
//
// Exit
// ----
//  - Use a 50-pip trailing stop and a 200-pip profit target. This increases the 
//    chances of the system riding longer trends.
//  - Close the trade when a new signal materializes.
//  - Close all trades by the end of the week.
// 
// -----------------------------------------------------------------------------

// Strategy Varaibles
// -------------------
ema_fast_len = input(5, title='Fast EMA Length')
ema_slow_len = input(10 , title='Slow EMA Length')
rsi_len = input(10, title='Slow EMA Length')
session_end_hour = input(16, minval=0, maxval=23, title='Weekly Session End (Hour)')
session_end_minute = input(0, minval=0, maxval=59, title='Weekly Session End (Minute)')
// Targets taken from the update post which states 150 & 400 instead of 50 and 200.
profit_target = input(400, title='Profit Target (Pips/Points)')
trailing_stop_dist = input(150, title='Trailing Stop Distance (Pips/Points)')
adx_filt = input(true, title='User ADX Filter')
adx_min = input(25, minval=0, title='Minimum ADX Level')
adx_len = input(14, title="ADX Smoothing")
di_len = input(14, title="DI Length")

// Setup the Indicators
ema_fast = ema(close, ema_fast_len)
ema_slow = ema(close, ema_slow_len)
rsi_ind = rsi(close, rsi_len)

// ADX
adx_dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
    minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]

adx_adx(dilen, adxlen) =>
	[plus, minus] = adx_dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
	[adx, plus, minus]

[adx_sig, adx_plus, adx_minus] = adx_adx(di_len, adx_len)


// Strategy Logic
ema_long_cross = crossover(ema_fast, ema_slow)
ema_short_cross = crossunder(ema_fast, ema_slow)
rsi_long_cross = crossover(rsi_ind, 50)
rsi_short_cross = crossunder(rsi_ind, 50)
adx_check = adx_filt ? adx_sig >= adx_min : true

longCondition = ema_long_cross and rsi_long_cross and adx_check
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = ema_short_cross and rsi_short_cross and adx_check
if (shortCondition)
    strategy.entry("Short", strategy.short)

strategy.exit("SL/TP", "Long", profit=profit_target,  loss=trailing_stop_dist, trail_points=trailing_stop_dist)  
strategy.exit("SL/TP", "Short", profit=profit_target, loss=trailing_stop_dist, trail_points=trailing_stop_dist)  

// Friday = 6
// If we miss the hour for some reason (due to strange timeframe), then close immediately
// Else if we are on the closing hour, then check to see if we are on or passed the close minute
close_time = dayofweek == 6 ? 
  hour[0] > session_end_hour ? true :
  hour[0] == session_end_hour ?
      minute[0] >= session_end_minute :
  false : false

strategy.close_all(when=close_time)

// Plotting
plot(ema_fast, color=blue, title="Fast EMA")
plot(ema_slow, color=red, title="Slow EMA")

plotshape(rsi_long_cross, style=shape.triangleup, size=size.tiny, location=location.belowbar, color=green, title='RSI Long Cross Marker')
plotshape(rsi_short_cross, style=shape.triangledown, size=size.tiny, location=location.abovebar, color=red, title='RSI Short Cross Marker')

// ADX Filter Highlight
bgcolor(adx_filt and adx_check ? orange : na, transp=90)