Estrategia combinada de inversión de tendencia y indicadores líderes de Ehlers

El autor:¿ Qué pasa?, Fecha: 2023-11-07 16:10:26
Las etiquetas:

img

Resumen general

Esta estrategia combina una estrategia de inversión de tendencia y una estrategia de indicadores líderes de Ehlers para generar señales comerciales más confiables.

Estrategia lógica

Estrategia de inversión de tendencia

Esta estrategia proviene del libro Cómo triplicé mi dinero en el mercado de futuros de Ulf Jensen, página 183. Es una estrategia de tipo inverso. Va largo cuando el cierre es más alto que el cierre anterior durante 2 días consecutivos y la línea lenta estocástica de 9 días está por debajo de 50.

Estrategia de indicadores líderes de Ehlers

Esta estrategia traza un único precio sintético detrendido diario (DSP) y un indicador líder de Ehlers diario (ELI) utilizando datos intradiarios. DSP captura el ciclo dominante del precio y se calcula restando un filtro Butterworth de 3 polos de un filtro de 2 polos. ELI da una indicación avanzada de los puntos de inflexión cíclicos y se calcula restando el promedio móvil simple de DSP del propio DSP. Las señales de compra y venta se generan cuando ELI cruza por encima o por debajo de DSP.

Análisis de ventajas

La mayor ventaja de esta estrategia combinada es la combinación de la identificación de la inversión de tendencia y la detección del punto de inflexión cíclica para señales más confiables.

La flexibilidad en el ajuste de parámetros es otra ventaja. Los parámetros del indicador estocástico se pueden ajustar en función de las condiciones del mercado.

Análisis de riesgos

El mayor riesgo de esta estrategia es la falta de tendencias persistentes. Dado que la estrategia espera que entren señales de reversión, puede perder fuertes movimientos de tendencia tempranos. Las señales de reversión también pueden resultar ser falsas rupturas que resultan en quedar atrapadas.

Las soluciones consisten en ajustar los parámetros para acortar el período de detección de inversión para capturar la inversión de tendencia oportunamente.

Direcciones de optimización

La estrategia puede mejorarse en los siguientes aspectos:

  1. Introduzca el stop loss para controlar la pérdida de una sola operación.

  2. Optimizar los parámetros para ajustar los períodos de señal de inversión para diferentes entornos de mercado.

  3. Añadir otros filtros de indicadores para mejorar la calidad de la señal y reducir las falsas señales.

  4. Añadir módulos de dimensionamiento de posiciones y gestión de riesgos.

  5. Prueba de parámetros en diferentes productos para encontrar ajustes óptimos.

  6. Añadir módulos de aprendizaje automático para ajuste de parámetros adaptativos.

Resumen de las actividades

La estrategia combina la inversión de tendencias y la detección de puntos de inflexión cíclica para una entrada más confiable en el mercado. La mayor ventaja es la alta calidad y flexibilidad de la señal. El principal riesgo es la falta de tendencias tempranas, que se pueden mitigar a través del ajuste de parámetros y la parada de pérdida. Las mejoras futuras pueden centrarse en la parada de pérdida, la optimización de parámetros, el filtrado de señales, etc. para hacer que la estrategia sea robusta en todos los entornos del mercado.


/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/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
// This Indicator plots a single
// Daily DSP (Detrended Synthetic Price) and a Daily ELI (Ehlers Leading
// Indicator) using intraday data.
// Detrended Synthetic Price is a function that is in phase with the dominant
// cycle of real price data. This one is computed by subtracting a 3 pole Butterworth
// filter from a 2 Pole Butterworth filter. Ehlers Leading Indicator gives an advanced
// indication of a cyclic turning point. It is computed by subtracting the simple
// moving average of the detrended synthetic price from the detrended synthetic price.
// Buy and Sell signals arise when the ELI indicator crosses over or under the detrended
// synthetic price.
// 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_ELI(Length) =>
    pos = 0.0
    xHL2 = security(syminfo.tickerid, 'D', hl2)
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    xResultEMA = ema(xEMA1_EMA2, Length)
    nRes = xEMA1_EMA2 - xResultEMA
    pos:= iff(nRes > 0, 1,
	       iff(nRes < 0, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & D_ELI (Ehlers Leading Indicator)", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthELI = input(7, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_ELI = D_ELI(LengthELI)
pos = iff(posReversal123 == 1 and posD_ELI == 1 , 1,
	   iff(posReversal123 == -1 and posD_ELI == -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.