
La estrategia utiliza una combinación de dos indicadores, el doble EMA y el Awesome Oscillator, para identificar y rastrear las tendencias. El EMA determina rápidamente la dirección de las tendencias recientes, y el Awesome Oscillator filtra las brechas falsas para proporcionar un momento de entrada. El nombre de la estrategia se basa en la doble señal de seguimiento de tendencias.
La estrategia se basa principalmente en el uso de dos indicadores técnicos, el doble EMA y el Awesome Oscillator, para filtrar la señal. La lógica es la siguiente:
Calcule el EMA de 2 y 20 ciclos, cuando el EMA de 2 ciclos rompa el EMA de 20 ciclos de abajo hacia arriba, juzgado como una tendencia al alza; cuando el EMA de 2 ciclos rompe el EMA de 20 ciclos de arriba hacia abajo, juzgado como una tendencia a la baja.
Calcule el Awesome Oscillator, que se obtiene de la media móvil rápida menos la media móvil lenta, y luego de la media móvil rápida menos la columna MACD para obtener la columna. La columna AO se considera una señal de compra cuando el rojo se vuelve azul y el azul se vuelve rojo para vender.
Solo se genera una señal de compra final cuando la EMA muestra una tendencia alcista y la AO muestra una señal de compra al mismo tiempo; solo se genera una señal de venta final cuando la EMA muestra una tendencia bajista y la AO muestra una señal de venta al mismo tiempo.
A través de este mecanismo de filtración de doble señal, se puede reducir eficazmente las operaciones de falsa ruptura y seguir la dirección intermedia de la tendencia.
La estrategia tiene las siguientes ventajas:
El filtro de doble línea puede reducir los errores de transacción causados por el ruido. El EMA determina la dirección de la tendencia general y el filtro AO el tiempo de entrada en el campo. La combinación de ambos puede mejorar la fiabilidad de la señal.
Respuesta Sensitivity Muy rápido para capturar la reversión de tendencias en el corto plazo. El EMA de 2 ciclos es muy sensible a las rupturas y puede determinar rápidamente si la tendencia cambió en el corto plazo.
El Awesome Oscillator vuelve a filtrar el MACD para identificar con eficacia las falsas rupturas en la tendencia y evitar operaciones de reversión innecesarias.
La EMA determina la dirección de la tendencia básica, y la AO filtra aún más para garantizar que las operaciones se ajusten a la dirección de la tendencia principal, lo que permite capturar continuamente la tendencia intermedia.
Los parámetros de la estrategia son elegidos razonablemente, los EMA de 2 y 20 períodos capturan los cambios de precios de diferentes períodos, y los parámetros AO de 5 y 34 períodos son optimizados para identificar mejor las características de la forma en el corto plazo.
La estrategia también tiene sus riesgos:
En situaciones de crisis, la EMA y la AO pueden emitir más señales erróneas, lo que lleva a operaciones innecesarias. Se puede reducir el riesgo de error de juicio ajustando los parámetros del ciclo EMA.
AO puede retrasarse en EMA en algunos casos, lo que hace que la señal tenga un tiempo de aparición diferente, y los parámetros AO pueden optimizarse adecuadamente para que respondan más rápidamente a la ruptura.
Los parámetros de EMA y AO establecidos para tener en cuenta las características de corto y mediano plazo, exigen una mayor calidad de datos y potencia de cálculo, que deben ajustarse según las características de las diferentes variedades.
El comercio frecuente genera más comisiones y costos de deslizamiento. Se puede relajar adecuadamente la estrategia de salida y prolongar el período de tenencia.
La estrategia no tiene en cuenta las tendencias del gran ciclo y los puntos de resistencia de soporte clave, y debe combinar más factores para asegurar la dirección correcta de la operación.
La estrategia se puede optimizar en los siguientes aspectos:
Introducción de indicadores de tendencia para ayudar a la EMA a determinar la dirección de la tendencia general, como los índices de movimiento comúnmente utilizados como los ribbons de media móvil y el ATR.
Aumentar el mecanismo de identificación de puntos de resistencia de soporte clave, como la línea de retiro de Fibonacci, que emite señales solo cerca de los puntos clave. Evite la construcción de posiciones desfavorables.
Optimización de la combinación de parámetros EMA y AO para mejorar la combinación de ambos. Por ejemplo, el uso de algoritmos genéticos de clase para buscar automáticamente la mejor pareja de parámetros.
Aumentar el mecanismo de Exit Stop Loss. Cuando los precios superan el último Swing High/Low, se detiene el Exit Stop Loss a tiempo para controlar la pérdida individual.
Verificación de los conjuntos de datos previos, evaluación de la eficacia de las estrategias utilizando datos históricos. Prueba de si las ganancias pueden estabilizarse y si los resultados de las pruebas de retorno son los esperados.
La modulación de parámetros de simulación de disco real, ajuste gradual de los parámetros para mejorar el efecto del indicador de disco real. Verificar la robustez de los parámetros, obtener una mejor combinación de parámetros estables.
Esta estrategia tiene una idea general clara para determinar la dirección de la tendencia general de la EMA, y la combinación de señales de filtración de AO utiliza dos indicadores para la doble verificación. Se puede identificar efectivamente la tendencia y seguir el comportamiento a medio plazo. Pero también existen ciertos riesgos y deficiencias, y se necesita continuar optimizando las pruebas para mejorar la estabilidad. La clave es elegir la variedad y los parámetros adecuados, combinados con el estilo y las reglas del comerciante.
/*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)