Estrategia dinámica de seguimiento de tendencias de doble mecanismo

El autor:¿ Qué pasa?, fecha: 2024-01-31 11:13:44
Las etiquetas:

img

Resumen general

La estrategia de seguimiento de tendencias dinámicas de doble mecanismo combina señales de dos estrategias comerciales diferentes para rastrear las tendencias. Primero utiliza la estrategia de reversión 123 para identificar puntos de reversión de precios, luego utiliza el índice de precio sintético detendido (D_DSP) para determinar la dirección de la tendencia de precios y, finalmente, genera señales comerciales combinando ambas señales.

Esta estrategia se utiliza principalmente para el seguimiento de tendencias a mediano plazo. Al establecer puntos de stop-loss dinámicos a través de mecanismos duales, puede bloquear efectivamente las ganancias y evitar que las pérdidas se expandan. Mientras tanto, la combinación de indicadores de tendencia e inversión para la confirmación doble ayuda a reducir las operaciones ruidosas.

Estrategia lógica

123 Estrategia de reversión

La estrategia 123 Reversal se origina en la página 183 del libro de Ulf Jensen Cómo triplicé mi dinero en el mercado de futuros.

Específicamente, genera una señal de compra cuando el precio de cierre es mayor que el cierre anterior durante dos días consecutivos y el Oscilador Estocástico Lento de 9 días está por debajo de 50.

Indice de precios sintéticos desacelerado

El índice Detrended Synthetic Price (D_DSP) indica la dirección de la tendencia de los precios y está en fase con el ciclo dominante de los datos reales de precios.

Si el D_DSP es positivo, indica una tendencia al alza de los precios. Si es negativo, indica una tendencia a la baja de los precios.

Mecanismo dual

Esta estrategia combina la estrategia 123 Reversal y las señales del índice D_DSP. Si ambas señales coinciden (tanto largas como cortas), se generarán operaciones. Si las señales no coinciden, las posiciones se cerrarán.

Esta doble confirmación filtra el ruido y bloquea las ganancias de tendencia.

Ventajas

La mayor ventaja de esta estrategia es los dos niveles de stop loss que implementa. En primer lugar, los estocásticos rápidos y lentos forman un stop loss escalonado en el tiempo. En segundo lugar, la propia estrategia de reversión contiene una característica de stop loss.

Las dos pérdidas de parada maximizan el bloqueo de ganancias y evitan las pérdidas cruzadas de una sola estrategia de pérdida de parada.

Los riesgos

El mayor riesgo proviene de la configuración de parámetros inflexibles. Por ejemplo, las longitudes de ciclo incorrectas pueden causar tendencias principales perdidas, pérdidas de ganancias o pérdidas crecientes. La confirmación doble demasiado rígida también puede causar pérdidas de parada oportunas perdidas.

Además, al combinar estrategias de inversión y tendencia, la compensación de posiciones cuando las señales no coinciden puede perder oportunidades cuando la tendencia continúa en una dirección principal.

Optimización

Esta estrategia se puede optimizar de varias maneras:

  1. Optimizar los parámetros del ciclo utilizando más datos de backtesting para encontrar valores óptimos.

  2. Añadir más estrategias de stop loss como breakout o stop loss para establecer puntos de stop loss más dinámicos y razonables.

  3. Ajuste las reglas de doble confirmación para evitar sobre compensación de posiciones.

  4. Añadir filtros como los filtros de volatilidad para evitar juicios erróneos de la volatilidad de tendencia en etapa tardía.

Conclusión

La Estrategia de seguimiento de tendencias dinámicas de doble mecanismo implementa un seguimiento de tendencias y control de riesgos efectivos a través de pérdidas de parada dobles de estocásticos rápidos y lentos y doble confirmación de señales de inversión y tendencia.

Se espera que la optimización continua de reglas y parámetros produzca buenos resultados. Pero la optimización de la estrategia requiere grandes cantidades de datos históricos. Los filtros de selección de acciones y los mecanismos de stop loss también necesitan un perfeccionamiento continuo. Se recomienda un seguimiento en tiempo real durante algún período para validar aún más la estrategia.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/11/2019
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// Detrended Synthetic Price is a function that is in phase with the 
// dominant cycle of real price data. This DSP is computed by subtracting 
// a half-cycle exponential moving average (EMA) from the quarter cycle 
// exponential moving average.
// See "MESA and Trading Market Cycles" by John Ehlers pages 64 - 70. 
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos

D_DSP(Length) =>
    pos = 0.0
    xHL2 = hl2
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    pos := iff(xEMA1_EMA2 > 0, 1,
             iff(xEMA1_EMA2 < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthDSP = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP)
pos = iff(posReversal123 == 1 and posD_DSP == 1 , 1,
	   iff(posReversal123 == -1 and posD_DSP == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

Más.