Estrategia de negociación de tendencias basada en múltiples factores

El autor:¿ Qué pasa?, Fecha: 2024-01-17 14:02:22
Las etiquetas:

img

Resumen de las actividades

Esta estrategia combina el indicador de Divergencia de Convergencia Media Móvil (MACD) y el indicador de Índice de Fuerza Relativa Estocástica (Stoch RSI) para determinar la dirección de la tendencia del mercado, yendo largo cuando la tendencia es ascendente y corto cuando la tendencia es descendente. Pertenece a la categoría de estrategia de negociación de tendencia.

Estrategia lógica

Esta estrategia utiliza los indicadores MACD y Stoch RSI para determinar la dirección de la tendencia del mercado.

El indicador MACD se compone de la línea EMA rápida, la línea EMA lenta y la diferencia entre ellos, que refleja la convergencia y divergencia de los promedios móviles a corto y largo plazo.

El indicador de Stoch RSI combina las fortalezas de los indicadores tanto del RSI como del Stoch para mostrar los niveles de sobrecompra y sobreventa en el mercado.

Esta estrategia utiliza el MACD y el Stoch RSI en los marcos de tiempo diarios y de 4 horas para determinar la tendencia del mercado. Cuando ambos indicadores generan señales de compra en los gráficos diarios y de 4 horas, vaya largo. Cuando ambos generan señales de venta, vaya corto. Esto puede filtrar eficazmente las señales falsas y mejorar la confiabilidad.

Ventajas

  1. La combinación de dos factores para juzgar los movimientos del mercado puede filtrar las señales falsas de manera efectiva y mejorar la precisión de la señal

  2. La validación de señales en marcos de tiempo altos y bajos (diarios y 4H) evita ser golpeado

  3. Seguir las tendencias evita mercados agitados

  4. Lógica de estrategia simple y clara, fácil de entender y ejecutar

Riesgos y soluciones

  1. La incapacidad de determinar eficazmente los puntos de reversión de la tendencia puede provocar la activación de un stop loss
  • Optimizar parámetros o añadir otros indicadores para juzgar
  1. El contrato único no puede diversificar los riesgos sistemáticos del mercado
  • Aumentar otros contratos o existencias para diversificar
  1. No puede determinar el impacto de grandes eventos repentinos
  • Combinar el análisis fundamental para mejorar la conciencia de riesgo

Direcciones de optimización

  1. Ajustar los parámetros del MACD y del RSI de Stoch para optimizar los puntos de entrada y salida

  2. Añadir estrategias de trailing stop para bloquear las ganancias

  3. Añadir el tamaño de las posiciones al control por riesgo de negociación

  4. Añadir más factores para juzgar para mejorar la precisión de la señal

  5. Utilice métodos de aprendizaje automático para optimizar dinámicamente los parámetros

Resumen de las actividades

Esta estrategia determina la dirección de la tendencia a través de un modelo de doble factor y valida las señales a través de marcos de tiempo. Es una estrategia de tendencia relativamente estable y confiable, con ciertas capacidades de gestión de riesgos y margen de error. Su rendimiento puede mejorarse aún más agregando optimización de parámetros, stop loss, dimensionamiento de posición y otros módulos.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title='[RS]Khizon (UGAZ) Strategy V0', shorttitle='K', overlay=false, pyramiding=0, initial_capital=100000, currency=currency.USD)
//  ||  Inputs:
macd_src = input(title='MACD Source:',  defval=close)
macd_fast = input(title='MACD Fast Length:',  defval=12)
macd_slow = input(title='MACD Slow Length:',  defval=26)
macd_signal_smooth = input(title='MACD Signal Smoothing:',  defval=9)
srsi_src = input(title='SRSI Source:',  defval=close)
srsi_rsi_length = input(title='SRSI RSI Length:',  defval=14)
srsi_stoch_length = input(title='SRSI Stoch Length:',  defval=14)
srsi_smooth = input(title='SRSI Smoothing:',  defval=3)
srsi_signal_smooth = input(title='SRSI Signal Smoothing:',  defval=3)
//  ||  Strategy Inputs:
trade_size = input(title='Trade Size in USD:', type=float, defval=1)
buy_trade = input(title='Perform buy trading?', type=bool, defval=true)
sel_trade = input(title='Perform sell trading?', type=bool, defval=true)
//  ||  MACD(close, 12, 26, 9):     ||---------------------------------------------||
f_macd_trigger(_src, _fast, _slow, _signal_smooth)=>
    _macd = ema(_src, _fast) - ema(_src, _slow)
    _signal = sma(_macd, _signal_smooth)
    _return_trigger = _macd >= _signal ? true : false
//  ||  Stoch RSI(close, 14, 14, 3, 3)  ||-----------------------------------------||
f_srsi_trigger(_src, _rsi_length, _stoch_length, _smooth, _signal_smooth)=>
    _rsi = rsi(_src, _rsi_length)
    _stoch = sma(stoch(_rsi, _rsi, _rsi, _stoch_length), _smooth)
    _signal = sma(_stoch, _signal_smooth)
    _return_trigger = _stoch >= _signal ? true : false
//  ||-----------------------------------------------------------------------------||
//  ||-----------------------------------------------------------------------------||
//  ||  Check Directional Bias from daily timeframe:
daily_trigger = security('NGAS', 'D', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))
h4_trigger = security('NGAS', '240', f_macd_trigger(macd_src, macd_fast, macd_slow, macd_signal_smooth) and f_srsi_trigger(srsi_src, srsi_rsi_length, srsi_stoch_length, srsi_smooth, srsi_signal_smooth))

plot(title='D1T', series=daily_trigger?0:na, style=circles, color=blue, linewidth=4, transp=65)
plot(title='H4T', series=h4_trigger?0:na, style=circles, color=navy, linewidth=2, transp=0)

sel_open = sel_trade and not daily_trigger and not h4_trigger
buy_open = buy_trade and daily_trigger and h4_trigger
sel_close = not buy_trade and daily_trigger and h4_trigger
buy_close = not sel_trade and not daily_trigger and not h4_trigger
strategy.entry('sel', long=false, qty=trade_size, comment='sel', when=sel_open)
strategy.close('sel', when=sel_close)
strategy.entry('buy', long=true, qty=trade_size, comment='buy', when=buy_open)
strategy.close('buy', when=buy_close)


Más.