Estrategia combinada de inversión de impulso de múltiples factores

El autor:¿ Qué pasa?, Fecha: 2023-11-21 11:20:31
Las etiquetas:

img

Resumen general

Esta estrategia es una estrategia de combinación de múltiples factores que combina factores de reversión y factores de impulso para descubrir oportunidades de reversión en el mercado. La estrategia utiliza primero el factor de reversión a largo plazo para identificar oportunidades de reversión después de caídas de rango, y luego utiliza indicadores de impulso para detección secundaria para filtrar señales de reversión falsas bajo tendencias principales, con el fin de bloquear oportunidades de arbitraje de reversión a corto plazo.

Estrategia lógica

La estrategia consta de dos partes:

  1. 123 Factor de reversión

    Esta parte utiliza la idea de la reversión intradiaria para determinar la relación entre el precio de cierre del día anterior y el precio de cierre de los 2 días anteriores para identificar oportunidades de reversión con línea lenta K. La lógica específica es:

    • Signales de compra: después de dos días consecutivos de caída del precio de cierre, si el precio de cierre sube el día en curso y la línea lenta K de 9 días es inferior a 50, se genera una señal de compra;

    • Signales de venta: Después de dos días consecutivos de aumento en el precio de cierre, si el precio de cierre disminuye el día en curso y la línea K rápida de 9 días es superior a 50, se genera una señal de venta.

  2. Los valores de las emisiones de gases de efecto invernadero y de gases de efecto invernadero se calcularán en función de los valores de las emisiones de gases de efecto invernadero y de las emisiones de gases de efecto invernadero.

    En esta parte se utiliza el método de los tres momentos de los precios de suavización de la EMA para construir un indicador de momento.

    xPrice1 = close - close[1]
    xPrice2 = abs(close - close[1]) 
    xSMA_R = EMA(EMA(EMA(xPrice1,r), s), u)
    xSMA_aR = EMA(EMA(EMA(xPrice2, r), s), u) 
    xTSI = xSMA_R / xSMA_aR * 100
    xEMA_TSI = EMA(xTSI, N)
    

    Donde xSMA_R es el valor suavizado de la EMA del impulso de los precios, xSMA_aR es el valor suavizado de la EMA de la volatilidad de los precios, xTSI es el indicador de impulso construido a partir de la relación de los dos, y xEMA_TSI es el suavizado secundario de la EMA de xTSI. El indicador determina la dirección de la señal de negociación basada en la relación entre xTSI y xEMA_TSI.

Finalmente, la estrategia ANDs las señales de las dos partes, y sólo emite órdenes de negociación reales cuando las señales de ambos factores coinciden.

Ventajas de la estrategia

La mayor ventaja de esta estrategia radica en su diseño multifactorial, que puede filtrar señales falsas y descubrir oportunidades comerciales de alta calidad.

  1. El factor de reversión 123 puede identificar puntos de rebote a corto plazo después de caídas dentro del rango.

  2. El indicador de impulso de Ehlers puede determinar efectivamente la dirección de la tendencia principal para evitar señales de reversión que ocurren bajo una tendencia principal, filtrando así señales falsas.

  3. La operación AND en las dos partes de la señal puede mejorar la calidad de la señal y mejorar la estabilidad de la estrategia.

Riesgos de la estrategia

Aunque la estrategia adopta un diseño multifactor para controlar los riesgos, siguen existiendo los siguientes riesgos principales:

  1. Las señales de reversión pueden ocurrir en tendencias oscilantes y no obtener beneficios.

  2. Existe una subjetividad en la configuración de los parámetros entre los dos factores, lo que puede ser demasiado adecuado para productos específicos.

  3. El riesgo de mayores pérdidas después de la reversión de los precios vuelve a revertirse.

Estos riesgos pueden mitigarse optimizando los parámetros para adaptarse a más variedades, controlando las posiciones posteriores a la inversión, monitoreando en tiempo real los cambios en las relaciones de los indicadores y otros medios.

Direcciones de optimización

Los principales aspectos para optimizar esta estrategia incluyen:

  1. Ajustar los parámetros de los dos factores para encontrar muestras de datos que coincidan mejor.

  2. Aumentar las estrategias de stop loss para controlar las pérdidas individuales.

  3. Utilizando diferentes combinaciones de parámetros para variedades de tendencia y oscilación.

  4. Aumentar el mecanismo de ponderación de factores para dar mayor peso a los factores de mejor desempeño.

  5. Aumentar los algoritmos de aprendizaje automático para lograr la optimización automática y la actualización de parámetros.

Conclusión

La estrategia combina con éxito factores de reversión e indicadores de impulso para lograr un diseño optimizado de múltiples factores. Puede identificar efectivamente oportunidades de reversión a corto plazo y utilizar indicadores de impulso para realizar una verificación secundaria de las señales, mejorando así la tasa de ganancia de la estrategia. Aunque todavía hay margen de mejora en la estrategia, su idea central proporciona una buena referencia para el diseño de estrategias cuantitativas.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/07/2020
// 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
// r - Length of first EMA smoothing of 1 day momentum        4
// s - Length of second EMA smoothing of 1 day smoothing      8    
// u- Length of third EMA smoothing of 1 day momentum         6  
// Length of EMA signal line                                  3
// Source of Ergotic TSI                                      Close
//
// This is one of the techniques described by William Blau in his book "Momentum,
// Direction and Divergence" (1995). If you like to learn more, we advise you to 
// read this book. His book focuses on three key aspects of trading: momentum, 
// direction and divergence. Blau, who was an electrical engineer before becoming 
// a trader, thoroughly examines the relationship between price and momentum in 
// step-by-step examples. From this grounding, he then looks at the deficiencies 
// in other oscillators and introduces some innovative techniques, including a 
// fresh twist on Stochastics. On directional issues, he analyzes the intricacies 
// of ADX and offers a unique approach to help define trending and non-trending periods.  
//
// 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


ETSI(r,s,u,SmthLen) =>
    pos = 0
    xPrice = close
    xPrice1 = xPrice - xPrice[1]
    xPrice2 = abs(xPrice - xPrice[1])
    xSMA_R = ema(ema(ema(xPrice1,r), s),u)
    xSMA_aR = ema(ema(ema(xPrice2, r), s),u)
    Val1 = 100 * xSMA_R
    Val2 = xSMA_aR
    xTSI = iff (Val2 != 0, Val1 / Val2, 0)
    xEMA_TSI = ema(xTSI, SmthLen)
    pos:= iff(xTSI > xEMA_TSI, 1,
    	   iff(xTSI < xEMA_TSI, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ergodic TSI", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
r = input(4, minval=1)
s = input(8, minval=1)
u = input(6, minval=1)
SmthLen = input(3, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posETSI = ETSI(r,s,u,SmthLen)
pos = iff(posReversal123 == 1 and posETSI == 1 , 1,
	   iff(posReversal123 == -1 and posETSI == -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.