Estrategia combinada de inversión de impulso

El autor:¿ Qué pasa?, fecha: 2023-10-30 11:49:26
Las etiquetas:

img

Resumen general

Esta estrategia combina dos indicadores de impulso para descubrir más oportunidades comerciales. El primer indicador es una estrategia de inversión de oscilador estocástico propuesta en el libro de Ulf Jensen. El segundo indicador es el precio sintético deteriorado de John Ehlers. La estrategia toma posiciones cuando ambos indicadores dan señales de compra o venta concurrentes.

Estrategia lógica

La lógica detrás de la inversión del oscilador estocástico es: ir largo cuando el cierre es inferior al cierre anterior durante 2 días consecutivos y la línea rápida está por encima de la línea lenta; ir corto cuando el cierre es superior al cierre anterior durante 2 días consecutivos y la línea rápida está por debajo de la línea lenta.

El precio sintético derivado (DSP) se calcula de la siguiente manera:

DSP = EMA ((HL/2, 0,25 ciclo) - EMA ((HL/2, 0,5 ciclo)

donde HL/2 es el punto medio de alto y bajo, 0.25 ciclo EMA representa la tendencia a corto plazo y 0.5 ciclo EMA representa la tendencia a largo plazo. DSP muestra la desviación del precio de su ciclo dominante. Comprar cuando DSP cruza por encima del umbral y vender cuando cruza por debajo.

Esta estrategia combina las señales de ambos indicadores y solo entra en posiciones cuando ambos indicadores dan señales concurrentes.

Análisis de ventajas

  • El filtrado de señales inciertas con dos indicadores reduce las operaciones erróneas
  • La validación entre indicadores mejora la fiabilidad de la señal
  • La inversión estocástica captura oportunidades de inversión a corto plazo
  • DSP identifica las tendencias a medio y largo plazo
  • La combinación de dos indicadores proporciona flexibilidad para detectar reversiones y seguir tendencias

Análisis de riesgos

  • Stochastic tiene un mal desempeño en mercados variados
  • DSP puede dar señales erróneas cerca de los puntos de inflexión de la tendencia
  • Perder algunas oportunidades al operar solo con señales concurrentes
  • Necesita ajuste adecuado de parámetros para lograr el efecto combinatorio

Direcciones de mejora

  • Prueba de diferentes parámetros para optimizar el rendimiento del indicador
  • Pruebe con diferentes ponderaciones de indicadores, por ejemplo, señales DSP de retraso
  • Añadir un stop loss al control de los riesgos
  • Incorporar más indicadores para construir un modelo multifactor

Conclusión

La estrategia combina dos indicadores de impulso diferentes y mejora la calidad de la señal a través de un doble filtrado, manteniendo la frecuencia comercial y controlando los riesgos.


/*backtest
start: 2023-09-29 00:00:00
end: 2023-10-29 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, SellBand, BuyBand) =>
    pos = 0.0
    xHL2 = hl2
    xEMA1 = ema(xHL2, Length)
    xEMA2 = ema(xHL2, 2 * Length)
    xEMA1_EMA2 = xEMA1 - xEMA2
    pos := iff(xEMA1_EMA2 > SellBand, 1,
	         iff(xEMA1_EMA2 < BuyBand, -1, nz(pos[1], 0))) 
	pos

strategy(title="Combo Backtest 123 Reversal & D_DSP (Detrended Synthetic Price) V 2", 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)
SellBand = input(-25)
BuyBand = input(25)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posD_DSP = D_DSP(LengthDSP, SellBand, BuyBand)
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.