Estratégia de acompanhamento de tendências de sinal duplo

Autora:ChaoZhang, Data: 2023-11-02 17:02:06
Tags:

img

Resumo

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.

Estratégia lógica

Esta estratégia utiliza principalmente dois indicadores técnicos, dual EMA e Awesome Oscillator, para filtrar sinais com a seguinte lógica:

  1. 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.

  2. 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.

  3. 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.

  4. 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.

Análise das vantagens

As vantagens desta estratégia são as seguintes:

  1. 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.

  2. 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.

  3. O Awesome Oscillator também filtra o MACD para identificar efetivamente falhas nas tendências e evitar negócios reversos desnecessários.

  4. A estratégia tem uma orientação clara para acompanhar as tendências a médio prazo.

  5. 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.

Análise de riscos

Existem também alguns riscos:

  1. Em mercados variados, a EMA e a AO podem gerar mais sinais falsos, causando negociações curtas desnecessárias.

  2. Os parâmetros AO podem ser otimizados para uma resposta mais rápida.

  3. A EMA e a AO combinam características de curto e médio prazo que exigem dados de qualidade e poder de computação.

  4. As negociações frequentes levam a comissões mais elevadas e custos de deslizamento.

  5. A estratégia não considera as tendências a longo prazo e os principais níveis de suporte/resistência.

Orientações de otimização

A estratégia pode ser otimizada através de vários aspectos:

  1. Introduzir indicadores de tendência, como as medias móveis e o ATR, para ajudar a EMA a determinar a tendência global.

  2. 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.

  3. Otimizar as combinações de parâmetros EMA e AO para melhorar os efeitos de combinação.

  4. 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.

  5. Backtest sobre dados históricos para avaliar o desempenho da estratégia, verificar se a rentabilidade estável atende às expectativas.

  6. Testar a robustez dos parâmetros para encontrar conjuntos de parâmetros mais estáveis.

Conclusão

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)

Mais.