DMI y estrategia de combinación de medias móviles

El autor:¿ Qué pasa?, Fecha: 2023-09-19 21:51:14
Las etiquetas:

Resumen general

Esta estrategia combina la estrategia 123 de inversión, la estrategia DMI y la estrategia de promedio móvil para formar una estrategia de combinación efectiva. Puede realizar operaciones inversa en puntos de inversión de tendencia y seguir la tendencia cuando la tendencia continúa. Mientras tanto, utiliza el promedio móvil para filtrar e identificar las direcciones de tendencia del mercado para mejorar la tasa de ganancia de la estrategia.

Estrategia lógica

  1. 123 estrategia de reversión: ir largo cuando el precio de cierre es superior al cierre anterior durante 2 días consecutivos y la línea lenta K de 9 días está por debajo de 50; ir corto cuando el precio de cierre es inferior al cierre anterior durante 2 días consecutivos y la línea rápida K de 9 días está por encima de 50.

  2. Estrategia DMI: pasar a largo cuando +DI cruza por encima de -DI; pasar a corto cuando -DI cruza por debajo de +DI.

  3. Estrategia de media móvil: ir largo cuando el precio de cierre cruza el nivel MA; ir corto cuando el precio de cierre cruza el nivel MA.

  4. Posiciones abiertas cuando tres estrategias dan señales consistentes, de lo contrario cerrar posiciones.

La estrategia combina estrategias de tendencia y estrategias de reversión, que pueden capturar oportunidades de reversión y oportunidades de seguimiento de tendencia.

Análisis de ventajas

  1. La combinación de múltiples estrategias mejora la tasa de ganancia. 123 inversión para detectar puntos de inflexión, DMI para detectar tendencias y filtro MA para filtrar señales.

  2. La combinación de estrategias de reversión y tendencia permite detectar reversiones y tendencias de manera flexible.

  3. El filtro MA reduce las señales falsas de las fluctuaciones a corto plazo.

  4. Combinar múltiples estrategias verifica las señales y evita el fracaso de una sola estrategia.

  5. Los múltiples parámetros permiten la optimización para la mejor combinación de parámetros y una mayor estabilidad.

Análisis de riesgos

  1. Las estrategias de reversión son propensas a quedar atrapadas en tendencias de rango.

  2. El DMI puede perder oportunidades de tendencia tempranas, puede acortar los parámetros del DMI para mejorar la sensibilidad.

  3. La MA tiene un efecto retardante y puede retrasar la generación de la señal.

  4. Aunque la combinación de estrategias mejora la tasa de ganancia, también aumenta la complejidad.

  5. La estrategia es sensible a los costos de transacción.

Direcciones de optimización

  1. Optimice los parámetros de cada estrategia para encontrar la mejor combinación.

  2. Agregue otros indicadores como MACD, RSI para filtrar las señales y mejorar la estabilidad.

  3. Agregue estrategias de stop loss como el stop loss para controlar los riesgos.

  4. Optimizar el tamaño de la posición como el tamaño fijo / dinámico para mejorar el rendimiento.

  5. Parámetros de ajuste fino para productos específicos para mejorar la adaptabilidad.

  6. Añadir modelos de aprendizaje automático para ayudar a las decisiones y mejorar el rendimiento.

Conclusión

Esta estrategia forma un sistema de combinación flexible al combinar eficazmente las estrategias de inversión, tendencia y filtro MA. Puede capturar oportunidades tanto de inversión como de tendencia, y mejora la confiabilidad de la señal a través de múltiples estrategias. Todavía hay espacio para mejoras adicionales en parámetros, stop loss, dimensionamiento de posición, etc. Con una aplicación hábil, esta estrategia práctica y expandible puede generar ganancias considerables en el comercio en vivo.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 15/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
// The related article is copyrighted material from Stocks & Commodities Aug 2009 
//
// 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

fFilter(xSeriesSum, xSeriesV, Filter) =>
    iff(xSeriesV > Filter, xSeriesSum, 0)

DMIMA(Length_MA, Length_DMI) =>
    pos = 0.0
    xMA = sma(close, Length_MA)
    up = change(high)
    down = -change(low)
    trur = rma(tr, Length_DMI)
    xPDI = fixnan(100 * rma(up > down and up > 0 ? up : 0, Length_DMI) / trur)
    xNDI = fixnan(100 * rma(down > up and down > 0 ? down : 0, Length_DMI) / trur)
    nPDI = xPDI
    nNDI = xNDI
    nMA = xMA
    nPDI_1 = xPDI[1]
    nNDI_1 = xNDI[1]
    nMA_1 = xMA[1]
    bMDILong = iff(nPDI > nNDI and nPDI_1 < nNDI_1, true, 
                 iff(nPDI < nNDI and nPDI_1 > nNDI_1, false, false)) 
    bMDIShort = iff(nPDI > nNDI and nPDI_1 < nNDI_1, false, 
                  iff(nPDI < nNDI and nPDI_1 > nNDI_1, true, false)) 
    bMALong = iff(close > nMA and close[1] < nMA_1, true, 
                 iff(close < nMA and close[1] > nMA_1, false, false))
    bMAShort = iff(close > nMA and close[1] < nMA_1, false, 
                 iff(close < nMA and close[1] > nMA_1, true, false))
    pos := iff(bMDILong and bMALong, 1, 
         iff(bMDIShort and bMAShort, -1, nz(pos[1], 0)))
    pos

strategy(title="Combo Backtest 123 Reversal & DMI & Moving Average", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
Length_MA = input(30, minval=1)
Length_DMI = input(14, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDMIMA = DMIMA(Length_MA,Length_DMI)
pos = iff(posReversal123 == 1 and posDMIMA == 1 , 1,
	   iff(posReversal123 == -1 and posDMIMA == -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.