Estrategia de seguimiento de tendencias basada en múltiples factores


Fecha de creación: 2024-01-17 14:02:22 Última modificación: 2024-01-17 14:02:22
Copiar: 0 Número de Visitas: 568
1
Seguir
1617
Seguidores

Estrategia de seguimiento de tendencias basada en múltiples factores

Descripción general

Esta estrategia combina los indicadores de dispersión de la media móvil (MACD) y el indicador de fuerza relativa aleatoria (Stoch RSI) para determinar la dirección de la tendencia del mercado. Se utiliza como una estrategia de seguimiento de tendencias.

Principio de estrategia

Esta estrategia utiliza el MACD y el RSI de Stoch para determinar la dirección de las tendencias del mercado.

El indicador MACD se compone de la línea rápida (en línea rápida) y la línea lenta (en línea lenta) y su diferencial, que refleja el estado de agregación y separación de las medias a corto y largo plazo. Cuando la línea rápida atraviesa la línea lenta, es una señal de compra, y cuando la línea rápida atraviesa la línea lenta, es una señal de venta.

El indicador Stoch RSI combina las ventajas del RSI y el indicador Stoch para mostrar el fenómeno de sobrecompra y sobreventa en el mercado. Si el RSI de Stoch es mayor que la línea de señal de Stoch RSI, es una señal de compra, y si es menor que la línea de señal, es una señal de venta.

Esta estrategia utiliza el MACD y el RSI de Stoch para determinar la dirección de la tendencia del mercado en la línea diaria y la línea de 4 horas. Si dos indicadores en la línea diaria y la línea de 4 horas emiten una señal de compra al mismo tiempo, haga más; Si dos indicadores emiten una señal de venta al mismo tiempo, haga menos.

Ventajas estratégicas

  1. La combinación de dos factores para determinar el movimiento del mercado puede filtrar eficazmente las señales falsas y mejorar la precisión de las señales

  2. Verificar las señales en el eje de alta y baja intensidad (línea solar y 4 horas) para evitar el arbitraje

  3. Seguir las tendencias y evitar las sacudidas

  4. La estrategia es clara, sencilla y fácil de entender y ejecutar.

Riesgos y soluciones

  1. No se puede determinar con precisión el punto de inflexión de la tendencia, lo que podría invertir el punto de parada.
  • Ajuste adecuado de los parámetros de optimización, o añadir otros indicadores de juicio
  1. Un solo contrato no puede dispersar el riesgo sistémico del mercado
  • Adición de otros contratos o acciones para inversiones dispersas
  1. No se puede juzgar el impacto de un evento de gran magnitud
  • El análisis fundamental y la concienciación sobre la prevención de riesgos

Dirección de optimización

  1. Ajustar los parámetros de los MACD y el RSI de Stoch para optimizar los puntos de compra y venta

  2. Aumentar las estrategias de stop loss móviles y bloquear los beneficios

  3. Agrega un módulo de administración de fondos para controlar las posiciones individuales

  4. La combinación de más factores de juicio aumenta la precisión de la señal

  5. Parámetros de optimización dinámica con métodos de aprendizaje automático

Resumir

Esta estrategia utiliza un modelo de dos factores para determinar la dirección de la tendencia del mercado, en combinación con una señal de verificación de eje de tiempo alto y bajo, es una estrategia de seguimiento de tendencias más estable y confiable. Tiene una cierta capacidad de prevención de riesgos y tolerancia a errores.

Código Fuente de la Estrategia
/*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)