Estrategia cuantitativa basada en la reversión y la fortaleza relativa comparativa

El autor:¿ Qué pasa?, Fecha: 2023-12-13 17:17:10
Las etiquetas:

img

Resumen general

Esta estrategia combina primero la estrategia de inversión propuesta por Ulf Jensen en la página 183 de su libro Cómo triplicé mi dinero en el mercado de futuros con el indicador de fuerza relativa comparativa para obtener señales más fuertes.

La idea principal de esta estrategia es juzgar por múltiples factores al mismo tiempo. Al combinar el factor de reversión y la señal de fuerza relativa comparativa, solo colocará órdenes de compra o venta cuando ambos den la misma señal, con el fin de mejorar la estabilidad de la estrategia.

Principio de la estrategia

La primera parte es una estrategia de reversión. La estrategia es larga cuando: el precio de cierre ha aumentado continuamente durante los últimos dos días, y la línea lenta estocástica de 9 días está por debajo de 50.

La segunda parte es el indicador de fortaleza relativa comparativa. Este indicador calcula el promedio móvil de la tasa de cambio de precio de cierre de N días entre la acción objetivo y el índice de referencia, y lo compara con la zona de compra, zona de venta y zona de cierre preestablecidas.

Esta estrategia combinada juzga las señales de ambas partes al mismo tiempo. solo colocará órdenes de compra o venta cuando ambas den la misma señal (ambas compran o ambas venden).

Análisis de ventajas

Esta estrategia combina las ventajas de los factores de reversión y los factores de fuerza relativa. La estrategia de reversión puede capturar extremos a corto plazo; la estrategia de fuerza relativa puede captar la tendencia principal del mercado más amplio. Las señales de ambas estrategias pueden mejorar la confiabilidad y filtrar algunas señales falsas causadas por el ruido.

Además, el indicador estocástico, como indicador para distinguir las zonas de sobrecompra y sobreventa, puede determinar mejor los puntos de reversión.

Análisis de riesgos

El mayor riesgo de las estrategias de reversión es que no pueden determinar el momento de las reversiones del mercado, lo que puede conducir a pérdidas continuas después de la reversión del mercado.

El riesgo de la estrategia de fuerza relativa reside en la configuración inadecuada de los parámetros, que puede generar demasiadas señales falsas.

Direcciones de optimización

Esta estrategia puede optimizarse en los siguientes aspectos:

  1. Prueba más factores de inversión para encontrar mejores estrategias de inversión.

  2. Prueba y optimiza los parámetros del indicador de resistencia relativa para encontrar la combinación óptima de parámetros, ya que los ajustes actuales son subjetivos y probablemente no se han optimizado.

  3. Añadir estrategias de stop loss. Actualmente no hay un stop loss, añadiendo un stop loss razonable puede controlar el riesgo a la baja.

  4. Prueba diferentes índices de referencia para calcular la solidez relativa a la acción objetivo y encontrar el mejor índice de correspondencia.

Conclusión

Esta estrategia combina factores de reversión y factores de fuerza relativa para el comercio. Utiliza las ventajas de ambos para mejorar la calidad de la señal y es una estrategia combinada relativamente madura. Todavía hay mucho espacio para la optimización por ajuste de parámetros, añadiendo estrategias de stop loss y ajustando los métodos de combinación de estrategias para lograr resultados aún mejores.


/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/10/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
// Comparative Relative Strength Strategy for ES
//
// 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

CRS(a, b, len, BuyBand, SellBand, CloseBand) =>
    pos = 0.0
    as = security(a, timeframe.period, close) 
    bs = security(b, timeframe.period, close) 
    nRes = sma(as/bs, len)
    pos := iff(nRes > BuyBand, 1,
	         iff(nRes < SellBand, -1,
	          iff(pos[1] == 1 and nRes < CloseBand, 0,
    	       iff(pos[1] == -1 and nRes > CloseBand, 0, nz(pos[1], 0)))))
    pos

strategy(title="Combo Backtest 123 Reversal & Comparative Relative Strength", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
a = syminfo.tickerid 
b = input("BTC_USDT:swap", type=input.symbol) 
LengthCRS = input(10) 
BuyBand = input(0.9988, step = 0.0001)
SellBand = input(0.9960, step = 0.0001)
CloseBand = input(0.9975, step = 0.0001)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCRS = CRS(a, b, LengthCRS, BuyBand, SellBand, CloseBand)
pos = iff(posReversal123 == 1 and posCRS == 1 , 1,
	   iff(posReversal123 == -1 and posCRS == -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.