Sistema de seguimiento de la inversión de la media móvil doble

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

img

Resumen general

El sistema de seguimiento de la reversión de las medias móviles dobles integra la estrategia de patrón de reversión 123 y la estrategia de Ichimoku para identificar oportunidades de reversión y rastrear tendencias de rendimientos excesivos.

Estrategia lógica

La estrategia consta de dos subestrategias:

  1. 123 Estrategia de reversión del patrón

Esta estrategia se basa en patrones de precios.

  • Ir largo cuando el precio de cierre sube durante dos días consecutivos y el estocástico lento de 9 días está por debajo de 50.

  • Ir corto cuando el precio de cierre cae durante dos días consecutivos y el estocástico rápido de 9 días está por encima de 50.

Utiliza la ruptura de los cierres de los días anteriores para determinar las reversiones y utiliza estocástica para filtrar el ruido.

  1. Estrategia de Ichimoku

Esta estrategia se basa en el cruce de cinco líneas de Ichimoku.

  • Ir largo cuando el precio de cierre está por encima de la línea de base.

  • Ir corto cuando el precio de cierre está por debajo de la línea de conversión.

Donde la línea de base es el punto medio del máximo más alto y el mínimo más bajo en los últimos 26 días, y la línea de conversión es el punto medio del máximo más alto y el mínimo más bajo en los últimos 9 días.

La estrategia final combina las señales de las dos subestrategias, entrando cuando ambas señalan largo o corto y saliendo cuando no están de acuerdo.

Análisis de ventajas

  • Combina la reversión y la tendencia, flexible para detectar las reversiones y las tendencias.

  • El patrón 123 es simple y eficaz en la identificación de las reversiones.

  • Los parámetros de Ichimoku están optimizados, con menor riesgo de fuga.

  • La combinación de dos estrategias diferentes puede lograr la optimización.

Análisis de riesgos

  • Las estrategias de reversión son propensas a trampas y pérdidas.

  • Ichimoku puede experimentar cambios en los mercados de rango, ajustar los parámetros o añadir filtros para reducir las operaciones innecesarias.

  • Los parámetros incompatibles al combinar estrategias pueden dar lugar a señales demasiado frecuentes o escasas.

Direcciones de optimización

  • Prueba más indicadores para obtener mejores filtros, por ejemplo, incorporando el volumen.

  • Optimice los parámetros de Ichimoku para adaptarse a las características del instrumento.

  • Añadir mecanismos de stop loss, por ejemplo, salidas establecidas basadas en ATR.

  • Añadir módulo de gestión de dinero para el control de riesgos.

  • Recopilar más datos para pruebas de retroceso robustas, descubrir problemas e iterar.

Conclusión

El sistema de seguimiento de reversión de promedios móviles combina las fortalezas de las estrategias de reversión y seguimiento de tendencias a través de la optimización y combinación para la generación de alfa. Tiene méritos comerciales, pero existen riesgos como whipshaw y stop loss. Necesitamos seguir mejorando la lógica en las pruebas de retroceso e implementar un control de riesgos adecuado para la estabilidad y el rendimiento del mundo real. En general, proporciona un buen enfoque para combinar diferentes estrategias para mejores resultados generales.


/*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/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
//  Ichimoku Strategy
//
// 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

middleDonchian(Length) =>
    lower = lowest(Length)
    upper = highest(Length)
    avg(upper, lower)    
    
Ichimoku2c(conversionPeriods, basePeriods,laggingSpan2Periods,displacement) =>
    pos = 0.0
    Tenkan = middleDonchian(conversionPeriods)
    Kijun =  middleDonchian(basePeriods)
    xChikou = close
    SenkouA = middleDonchian(laggingSpan2Periods)
    SenkouB = (Tenkan[basePeriods] + Kijun[basePeriods]) / 2
    pos := iff(close < SenkouA[displacement], -1,
              iff(close > SenkouB, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Ichimoku2c", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
conversionPeriods = input(9, minval=1),
basePeriods = input(26, minval=1)
laggingSpan2Periods = input(52, minval=1),
displacement = input(26, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posIchimoku2c = Ichimoku2c(conversionPeriods, basePeriods,laggingSpan2Periods,displacement)
pos = iff(posReversal123 == 1 and posIchimoku2c == 1 , 1,
	   iff(posReversal123 == -1 and posIchimoku2c == -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.