Estrategia de combinación de dos factores con indicador incremental y de reversión


Fecha de creación: 2023-12-26 12:20:57 Última modificación: 2023-12-26 12:20:57
Copiar: 0 Número de Visitas: 594
1
Seguir
1623
Seguidores

Estrategia de combinación de dos factores con indicador incremental y de reversión

Descripción general

La estrategia se basa en un modelo de doble factor, una estrategia de inversión combinada que integra los dos factores de la inversión de la forma 123 y el índice de incremento, lo que permite el efecto de suma de la señal de la estrategia. La estrategia realiza la operación de compra o venta correspondiente cuando ambos factores emiten una señal de compra o venta al mismo tiempo.

Principio de estrategia

123 el factor de reversión

Este factor opera en base a la forma 123 del precio. Cuando la relación de precios de cierre de los dos días actuales es baja-alta y el indicador de Stoch es inferior a 50, juzga como una señal de reversión inferior, hacer más; Cuando la relación de precios de cierre de los dos días actuales es alta-baja y el indicador de Stoch es superior a 50, juzga como una señal de reversión superior, hacer vacío.

Factor de aumento del índice

Este factor se basa en el aumento o disminución del rango de fluctuación de los precios para juzgar la reversión de la tendencia. El aumento del rango de fluctuación aumenta el índice y la disminución del rango disminuye el índice. Cuando el índice atraviesa un umbral, genera una señal de falta, y cuando atraviesa un rango inferior, genera una señal de falta.

Las posiciones se abren con señales bidireccionales para obtener ganancias estratégicas y evitar el riesgo de señales falsas de un solo factor.

Análisis de las ventajas

  • Modelo de doble factor, combinado con el patrón de precios y el indicador de volatilidad, para mejorar la precisión de la señal
  • 123 Modelo de juicio extremum local, índice de incremento para capturar el punto de reversión de la tendencia global, ventajas complementarias
  • Se abre una posición solo cuando el binario emite una señal de sincronización, filtrando efectivamente las señales falsas y mejorando la estabilidad de la estrategia

Análisis de riesgos

  • La probabilidad de que los dos factores emitan una señal errónea al mismo tiempo, con el riesgo de pérdidas
  • La probabilidad de fracaso de la inversión existe y se debe establecer un stop loss para controlar las pérdidas
  • Optimización incorrecta de los parámetros puede causar sobreajuste

Se puede reducir el riesgo mediante la ampliación de los conjuntos de entrenamiento, la detención rigurosa y la combinación de filtros multifactoriales.

Dirección de optimización

  • Prueba más combinaciones de indicadores de precios y volatilidad
  • Agrega modelos de aprendizaje automático para determinar la calidad de la señal y ajustar la posición dinámicamente
  • En combinación con el volumen de transacciones, factores como la franja de Brin extraen más Alpha
  • Optimización de la rotación y mejora de la estabilidad mediante el método walk forward.

Resumir

Esta estrategia combina la forma de los precios y la volatilidad de los dos factores, y abre posiciones solo cuando los dos factores emiten señales homogéneas, evitando el riesgo de falsas señales de un solo factor, lo que mejora la estabilidad general de la estrategia. Pero también existe el riesgo de que los dos factores de cierta probabilidad emitan señales erróneas al mismo tiempo. Podemos mejorar aún más el rendimiento de la estrategia y ajustar la rentabilidad al riesgo mediante la ampliación del conjunto de entrenamiento, la configuración de paradas y la optimización de la combinación de factores de pérdida.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 22/02/2021
// 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
// The Mass Index was designed to identify trend reversals by measuring 
// the narrowing and widening of the range between the high and low prices. 
// As this range widens, the Mass Index increases; as the range narrows 
// the Mass Index decreases.
// The Mass Index was developed by Donald Dorsey. 
//
// 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


MASS(Length1,Length2,Trigger) =>
    pos = 0.0
    xPrice = high - low
    xEMA = ema(xPrice, Length1)
    xSmoothXAvg = ema(xEMA, Length1)
    nRes = sum(iff(xSmoothXAvg != 0, xEMA / xSmoothXAvg, 0), Length2)
    pos := iff(nRes > Trigger, -1,
	         iff(nRes < Trigger, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & MASS Index", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- MASS Index ----")
Length1 = input(9, minval=1)
Length2 = input(25, minval=1)
Trigger = input(26.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMASS = MASS(Length1,Length2,Trigger)
pos = iff(posReversal123 == 1 and posMASS == 1 , 1,
	   iff(posReversal123 == -1 and posMASS == -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 )