O recurso está a ser carregado... Carregamento...

Segue-se uma estratégia de dupla EMA e de tendência baseada em indicadores de CA

Autora:ChaoZhang, Data: 2024-01-15 12:02:54
Tags:

img

Resumo

Esta estratégia é projetada com base em indicadores de oscilador de aceleração dual EMA e AC. O indicador dual EMA é usado para determinar a direção da tendência do preço, enquanto o indicador AC é usado para confirmar o sinal de tendência para efeito de filtragem.

Estratégia lógica

A estratégia consiste em dois módulos:

  1. Módulo EMA duplo

    • Construir um indicador de EMA duplo usando EMA de 2 dias e EMA de 20 dias. Um sinal de compra é gerado quando o preço cruza acima da EMA de 2 dias. Um sinal de venda é gerado quando o preço cruza abaixo da EMA de 20 dias.

    • Este módulo determina as direcções da tendência a curto e médio prazo para a tendência básica.

  2. Módulo AC

    • Os sinais de negociação só são gerados quando os indicadores EMA e AC duplos concordam em direções.

    • Este módulo filtra os falsos sinais e melhora a fiabilidade.

Em resumo, esta estratégia integra um EMA duplo para detectar tendências principais e um indicador AC para filtrar falsas rupturas, formando uma tendência sistemática seguindo a metodologia.

Análise das vantagens

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

  1. A EMA dupla rastreia tendências de médio e longo prazo enquanto a AC filtra o ruído de curto prazo, um grande efeito combinado.

  2. Excelente efeito de filtragem para evitar a venda após um longo lucro ou a compra após um curto lucro.

  3. Ajuste flexível de parâmetros adaptável a diferentes produtos e ambientes de mercado.

  4. Lógica estratégica clara, fácil de compreender, otimizar e melhorar.

  5. Tendência decente após potencial de lucro para produtos em tendência.

Análise de riscos

Há alguns riscos nesta estratégia:

  1. A definição inadequada dos parâmetros da EMA dupla pode deixar de lado tendências mais curtas ou gerar operações redundantes.

  2. A definição incorreta dos parâmetros de CA pode filtrar sinais válidos, mas mais fracos, ou não filtrar ruído suficiente.

  3. Incapaz de se adaptar a mercados em rápida mudança, como acidentes bruscos.

  4. A rentabilidade insuficiente em mercados variados deve ser utilizada como estratégia de tendência.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Teste mais combinações de parâmetros para encontrar parâmetros ideais que se adequem às diferentes características do produto.

  2. Adicionar módulo stop loss para sair em perdas de grandes dimensões.

  3. Filtra os sinais com mais indicadores.

  4. Desenvolver estratégias de combinação de longo e curto prazos para rastrear tendências de médio e longo prazo, utilizando negociações de curto prazo para reduzir ou adicionar posições ao longo da tendência.

Conclusão

A ideia de combinar EMA dupla para tendência e AC para filtragem de ruído vale a pena aprender. Esta estratégia tem sinais de qualidade e confiabilidade, adequados para rastrear produtos de tendência. Com ajuste adequado dos parâmetros, grandes lucros podem ser alcançados montando tendências usando esta estratégia.


/*backtest
start: 2023-01-08 00:00:00
end: 2024-01-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 19/01/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 Accelerator Oscillator has been developed by Bill Williams 
// as the development of the Awesome Oscillator. It represents the 
// difference between the Awesome Oscillator and the 5-period moving 
// average, and as such it shows the speed of change of the Awesome 
// Oscillator, which can be useful to find trend reversals before the 
// Awesome Oscillator does.
//
// 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) =>
    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
    cClr = nRes > nRes[1] ? color.blue : color.red
    iff_1 = nRes > 0 ? 1 : nz(pos[1], 0)
    pos := nRes < 0 ? -1 : iff_1           
    pos

strategy(title='Combo 2/20 EMA & Accelerator Oscillator (AC)', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Accelerator Oscillator  ═════●'
nLengthSlow = input(33,  title="Length Slow", group=I2)
nLengthFast = input(6, title="Length Fast", 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)
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.