La estrategia de cronometraje de media móvil ADX doble identifica tendencias combinando medias móviles 2/20 y el indicador ADXR para generar señales comerciales al comienzo de las tendencias.
La lógica básica de la estrategia de cronometraje de la media móvil ADX doble se basa en los siguientes componentes principales:
2/20 Promedio móvil exponencial (EMA)
Indicador ADXR
Señales comerciales
La principal innovación de esta estrategia consiste en utilizar el indicador ADXR para identificar las tendencias en la fase inicial y combinarlo con las señales de las medias móviles tradicionales para mejorar la calidad y la estabilidad.
Las principales ventajas de la estrategia de calendarización de la media móvil ADX doble:
También existen varios riesgos principales para esta estrategia:
La configuración incorrecta del parámetro ADXR puede dar lugar a operaciones perdidas.
En condiciones especiales de mercado pueden producirse más señales falsas.
Los parámetros fijos de la EMA no se adaptan a los cambios del mercado.
La imposibilidad de identificar los rangos de negociación puede generar operaciones excesivas e insignificantes.
La estrategia puede optimizarse y reforzarse aún más en los siguientes aspectos:
Optimización de los parámetros de la EMA para su adaptación automática a las condiciones del mercado.
Ampliar el rango de parámetros ADXR para capturar señales comerciales más efectivas.
Añadir indicadores adicionales de tendencia para señales combinadas para mejorar la calidad.
Agregue estrategias de stop loss y tome estándares de ganancia para controlar los riesgos por operación.
Optimizar la gestión del dinero para el tamaño dinámico de las posiciones basado en el estado de la cuenta.
La estrategia de tiempo ADX combina de manera innovadora las medias móviles dobles tradicionales y el indicador ADXR para mejorar la calidad de la señal y mejorar la estabilidad. Puede identificar efectivamente la etapa inicial de las tendencias con un rendimiento histórico decente.
/*backtest start: 2023-11-05 00:00:00 end: 2023-12-05 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 04/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 // The Average Directional Movement Index Rating (ADXR) measures the strength // of the Average Directional Movement Index (ADX). It's calculated by taking // the average of the current ADX and the ADX from one time period before // (time periods can vary, but the most typical period used is 14 days). // Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening // and weakening trends. However, because it represents an average of ADX, values // don't fluctuate as dramatically and some analysts believe the indicator helps // better display trends in volatile markets. // // // 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 fADX(Len) => up = ta.change(high) down = -ta.change(low) trur = ta.rma(ta.tr, Len) plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, Len) / trur) minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, Len) / trur) sum = plus + minus 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), Len) ADXR(LengthADX,LengthADXR,Signal1,Signal2) => pos = 0.0 xADX = fADX(LengthADX) xADXR = (xADX + xADX[LengthADXR]) / 2 pos := xADXR < Signal1 ? 1 : xADXR > Signal2 ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & ADXR', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ ADXR ═════●' LengthADX = input(title="Length ADX", defval=14) LengthADXR = input(title="Length ADXR", defval=14) Signal1 = input.float(13, step=0.01) Signal2 = input.float(45, step=0.01) 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) prePosADXR = ADXR(LengthADX,LengthADXR,Signal1,Signal2) iff_1 = posEMA20 == -1 and prePosADXR == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosADXR == 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)