Esta estrategia se llama
La estrategia consta de dos partes:
Indicador DEMA. Este indicador calcula las medias móviles exponenciales de 20 días y 2 días. Genera señales comerciales cuando el precio rompe la línea de 2 días desde arriba o rompe la línea de 20 días desde abajo.
(Precio más alto - Precio más bajo) / Índice de volatilidad del precio de cierre. Este índice refleja el rango de fluctuación de los precios dentro de un período. Aquí calculamos el promedio móvil simple de 16 días del índice de volatilidad durante los últimos 20 bares. Cuando la volatilidad del bar actual es mayor o menor que este valor promedio, genera señales comerciales.
Las señales de las dos partes se combinan. Si DEMA e índice de volatilidad dan señales al mismo tiempo, se generarán las órdenes de negociación largas o cortas finales.
La estrategia tiene las siguientes ventajas:
La combinación de múltiples indicadores puede reducir las señales falsas y mejorar la fiabilidad de la señal.
La línea de 20 días puede identificar eficazmente las tendencias a medio y largo plazo, y la línea de 2 días puede capturar las fluctuaciones a corto plazo, lo que hace que la combinación sea adaptable a diferentes entornos de mercado.
El índice de volatilidad puede reflejar eficazmente la volatilidad del mercado y las oportunidades comerciales.
Al ajustar los parámetros, puede adaptarse a diferentes productos y mercados de ciclos.
La estrategia también tiene algunos riesgos:
En las tendencias de baja volatilidad, el índice de volatilidad puede generar señales erróneas.
En los mercados rápidos de un solo sentido, las EMA dobles pueden retrasarse.
El aumento de la complejidad de los múltiples indicadores también aumenta el riesgo de sobre-optimización.
La estrategia también puede optimizarse en los siguientes aspectos:
La adición de mecanismos de stop loss puede controlar eficazmente la pérdida por orden.
Optimizar los parámetros para diferentes productos y ciclos para mejorar la adaptabilidad.
Aumentar los indicadores de liquidez y volatilidad para mejorar la calidad de las señales.
Añadir algoritmos de aprendizaje automático para lograr parámetros dinámicos y ajuste de peso.
Al combinar dos EMA e índices de volatilidad, esta estrategia puede lograr un buen rendimiento comercial tanto en mercados de tendencia como volátiles. También hay ciertos riesgos que requieren una mayor optimización y mejora.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 12/04/2022 // This is combo strategies for get a cumulative signal. // // First strategy // This indicator plots 2/20 exponential moving average. For the Mov // Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met. // // Second strategy // This histogram displays (high-low)/close // Can be applied to any time frame. // // // WARNING: // - For purpose educate only // - This script to change bars colors. //////////////////////////////////////////////////////////// EMA20(Length) => pos = 0.0 xPrice = close xXA = ta.ema(xPrice, Length) nHH = math.max(high, high[1]) nLL = math.min(low, low[1]) nXS = nLL > xXA or nHH < xXA ? nLL : nHH iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0) pos := nXS > close[1] ? -1 : iff_1 pos HLCH(input_barsback,input_percentorprice,input_smalength) => pos = 0.0 xPrice = (high-low)/close xPriceHL = (high-low) xPrice1 = input_percentorprice ? xPrice * 100: xPriceHL xPrice1SMA = ta.sma(math.abs(xPrice1), input_smalength) pos := xPrice1SMA[input_barsback] > math.abs(xPrice1) ? 1 : xPrice1SMA[input_barsback] < math.abs(xPrice1) ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & (H-L)/C Histogram', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ (H-L)/C Histogram ═════●' input_barsback = input(20, title="Look Back", group=I2) input_percentorprice = input(false, title="% change", group=I2) input_smalength = input(16, title="SMA Length", group=I2) var misc = '●═════ MISC ═════●' reverse = input.bool(false, title='Trade reverse', group=misc) var timePeriodHeader = '●═════ Time Start ═════●' d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader) m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader) y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader) StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false posEMA20 = EMA20(Length) prePosHLCH = HLCH(input_barsback,input_percentorprice,input_smalength) iff_1 = posEMA20 == -1 and prePosHLCH == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosHLCH == 1 and StartTrade ? 1 : iff_1 iff_2 = reverse and pos == -1 ? 1 : pos possig = reverse and pos == 1 ? -1 : iff_2 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)