Esta estrategia combina indicadores duales EMA y Awesome Oscillator para identificar y rastrear tendencias. EMA juzga rápidamente la dirección de la tendencia a corto plazo mientras que Awesome Oscillator filtra falsas rupturas y proporciona el tiempo de entrada.
Esta estrategia utiliza principalmente dos indicadores técnicos, doble EMA y Awesome Oscillator, para filtrar las señales con la siguiente lógica:
Calcule la EMA de 2 períodos y la EMA de 20 períodos. Cuando la EMA de 2 períodos rompe la EMA de 20 períodos hacia arriba, indica una tendencia alcista. Cuando la EMA de 2 períodos rompe la EMA de 20 períodos hacia abajo, indica una tendencia bajista.
Calcula el Awesome Oscillator, que es el histograma MACD suavizado por EMA rápida menos EMA lenta. Cuando el histograma AO cambia de rojo a azul, es una señal de compra. Cuando cambia de azul a rojo, es una señal de venta.
Solo cuando la EMA muestra una tendencia alcista y AO muestra una señal de compra al mismo tiempo, se genera una señal final de compra.
A través de este mecanismo de filtrado de señales duales, se pueden reducir las fallas y rastrear las tendencias a medio plazo.
Las ventajas de esta estrategia son:
El filtro de doble línea reduce las operaciones ruidosas causadas por errores.
La sensibilidad de respuesta extremadamente rápida capta rápidamente las reversiones a corto plazo. La EMA de 2 períodos es muy sensible a las roturas y puede determinar rápidamente si las tendencias recientes han cambiado.
Awesome Oscillator filtra aún más el MACD para identificar eficazmente las fallas falsas en las tendencias y evitar operaciones inversas innecesarias.
La estrategia tiene una dirección clara para seguir las tendencias a medio plazo: la EMA determina la tendencia básica mientras que la AO filtra las señales para garantizar que las operaciones se realicen siguiendo las tendencias generales.
Selección razonable de parámetros. La EMA de 2 períodos y 20 períodos captura los cambios de precios en diferentes períodos de tiempo. Los parámetros AO 5 y 34 están optimizados para identificar patrones a corto plazo.
También existen algunos riesgos:
En los mercados de rango, la EMA y el AO pueden generar más señales falsas, causando operaciones cortas innecesarias.
Los parámetros de AO se pueden optimizar para una respuesta más rápida.
La EMA y el AO combinan características a corto y mediano plazo que requieren datos de calidad y potencia de cálculo.
El comercio frecuente conduce a comisiones más altas y costos de deslizamiento.
La estrategia no tiene en cuenta las tendencias a largo plazo y los niveles clave de soporte/resistencia.
La estrategia se puede optimizar a través de varios aspectos:
Introducir indicadores de tendencia como las medias móviles y el ATR para ayudar a la EMA a determinar la tendencia general.
Agregue detección de soporte / resistencia clave como retracements de Fibonacci, generando señales solo alrededor de los niveles clave para evitar malas posiciones de entrada.
Optimice las combinaciones de parámetros EMA y AO para mejorar los efectos de combinación. Por ejemplo, use algoritmos genéticos para encontrar pares de parámetros óptimos.
Añadir salidas de stop loss. Salida cuando el precio rompe el reciente Swing High / Low para controlar la pérdida de una sola operación.
Prueba de retroceso de datos históricos para evaluar el rendimiento de la estrategia, comprobar si la rentabilidad estable cumple con las expectativas.
El comercio de papel para ajustar gradualmente los parámetros y mejorar el rendimiento en vivo. Prueba la robustez de los parámetros para encontrar conjuntos de parámetros más estables.
La idea general de la estrategia es clara, combinando EMA para la tendencia general y AO para el filtrado de señales. Puede identificar y rastrear tendencias de manera efectiva, pero también tiene algunos riesgos y limitaciones para una mayor optimización y prueba para mejorar la estabilidad. La clave es elegir productos y parámetros adecuados combinados con principios y estilos comerciales adecuados. En general, esta estrategia tiene una lógica sólida y un valor práctico.
/*backtest start: 2022-10-26 00:00:00 end: 2023-11-01 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //////////////////////////////////////////////////////////// // Copyright by HPotter v1.0 27/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 indicator plots the oscillator as a histogram where blue denotes // periods suited for buying and red . for selling. If the current value // of AO (Awesome Oscillator) is above previous, the period is considered // suited for buying and the period is marked blue. If the AO value is not // above previous, the period is considered suited for selling and the // indicator marks it as red. // // 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 AC(nLengthSlow,nLengthFast,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA) => pos = 0.0 xSMA1_hl2 = ta.sma(hl2, nLengthFast) xSMA2_hl2 = ta.sma(hl2, nLengthSlow) xSMA1_SMA2 = xSMA1_hl2 - xSMA2_hl2 xSMA_hl2 = ta.sma(xSMA1_SMA2, nLengthFast) nRes = xSMA1_SMA2 - xSMA_hl2 xResWMA = ta.wma(nRes, nLengthWMA) xResMA = ta.sma(nRes, nLengthMA) xResEMA = ta.ema(nRes, nLengthEMA) xSignalSeries = bShowWMA ? xResWMA : bShowMA ? xResMA : bShowEMA ? xResEMA : na pos := xSignalSeries[2] < 0 and xSignalSeries[1] > 0? 1: xSignalSeries[2] > 0 and xSignalSeries[1] < 0 ? -1 : nz(pos[1], 0) pos strategy(title='Combo 2/20 EMA & Bill Awesome Oscillator (AC)', shorttitle='Combo', overlay=true) var I1 = '●═════ 2/20 EMA ═════●' Length = input.int(14, minval=1, group=I1) var I2 = '●═════ Awesome Oscillator (AC) ═════●' nLengthSlow = input.int(34, minval=1, title="Length Slow", group=I2) nLengthFast = input.int(5, minval=1, title="Length Fast", group=I2) nLengthMA = input.int(15, minval=1, title="MA", group=I2) nLengthEMA = input.int(15, minval=1, title="EMA", group=I2) nLengthWMA = input.int(15, minval=1, title="WMA", group=I2) bShowWMA = input.bool( defval=true, title="trading WMA", group=I2) bShowMA = input.bool( defval=false, title="trading MA", group=I2) bShowEMA = input.bool( defval=false, title="trading EMA", 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) prePosAC = AC(nLengthSlow,nLengthFast,nLengthMA,nLengthEMA,nLengthWMA,bShowWMA,bShowMA,bShowEMA) iff_1 = posEMA20 == -1 and prePosAC == -1 and StartTrade ? -1 : 0 pos = posEMA20 == 1 and prePosAC == 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)