Esta estratégia combina indicadores duplos de EMA e Awesome Oscillator para identificar e rastrear tendências. A EMA julga rapidamente a direção da tendência de curto prazo, enquanto o Awesome Oscillator filtra falhas e fornece tempo de entrada.
Esta estratégia utiliza principalmente dois indicadores técnicos, dual EMA e Awesome Oscillator, para filtrar sinais com a seguinte lógica:
Calcule a EMA de 2 períodos e de 20 períodos. Quando a EMA de 2 períodos quebra a EMA de 20 períodos para cima, sinaliza uma tendência de alta. Quando a EMA de 2 períodos quebra a EMA de 20 períodos para baixo, sinaliza uma tendência de queda.
Calcule o Awesome Oscillator, que é o histograma MACD suavizado pela EMA rápida menos a EMA lenta. Quando o histograma AO muda de vermelho para azul, é um sinal de compra. Quando muda de azul para vermelho, é um sinal de venda.
Apenas quando a EMA mostra uma tendência de alta e a AO mostra um sinal de compra ao mesmo tempo, é gerado um sinal de compra final.
Através deste mecanismo duplo de filtragem de sinais, podem ser reduzidas as falsas rupturas e podem ser acompanhadas as tendências a médio prazo.
As vantagens desta estratégia são as seguintes:
A filtragem de linha dupla reduz os negócios ruidosos causados por erros. A EMA julga a tendência geral enquanto a AO filtra o tempo de entrada. A combinação dos dois melhora a confiabilidade do sinal.
A sensibilidade de resposta extremamente rápida capta rapidamente reversões de curto prazo. A EMA de 2 períodos é muito sensível a rupturas e pode determinar rapidamente se as tendências recentes mudaram.
O Awesome Oscillator também filtra o MACD para identificar efetivamente falhas nas tendências e evitar negócios reversos desnecessários.
A estratégia tem uma orientação clara para acompanhar as tendências a médio prazo.
Seleção razoável de parâmetros. A EMA de 2 períodos e 20 períodos capta mudanças de preços em diferentes prazos. Os parâmetros AO 5 e 34 são otimizados para identificar padrões de curto prazo.
Existem também alguns riscos:
Em mercados variados, a EMA e a AO podem gerar mais sinais falsos, causando negociações curtas desnecessárias.
Os parâmetros AO podem ser otimizados para uma resposta mais rápida.
A EMA e a AO combinam características de curto e médio prazo que exigem dados de qualidade e poder de computação.
As negociações frequentes levam a comissões mais elevadas e custos de deslizamento.
A estratégia não considera as tendências a longo prazo e os principais níveis de suporte/resistência.
A estratégia pode ser otimizada através de vários aspectos:
Introduzir indicadores de tendência, como as medias móveis e o ATR, para ajudar a EMA a determinar a tendência global.
Adicione a detecção de suporte / resistência chave como retracements de Fibonacci, gerando sinais apenas em torno de níveis-chave para evitar más posições de entrada.
Otimizar as combinações de parâmetros EMA e AO para melhorar os efeitos de combinação.
Adicione saídas de stop loss. Sair quando o preço quebra o recente Swing High/Low para controlar a perda de uma única negociação.
Backtest sobre dados históricos para avaliar o desempenho da estratégia, verificar se a rentabilidade estável atende às expectativas.
Testar a robustez dos parâmetros para encontrar conjuntos de parâmetros mais estáveis.
A ideia geral da estratégia é clara, combinando EMA para tendência geral e AO para filtragem de sinais. Pode identificar e rastrear tendências efetivamente, mas também tem alguns riscos e limitações para otimização e testes adicionais para melhorar a estabilidade. A chave é escolher produtos e parâmetros adequados combinados com princípios e estilos de negociação adequados.
/*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)