Estratégia de negociação dupla da EMA

Autora:ChaoZhang, Data: 2023-10-17 13:56:54
Tags:

img

Resumo

Esta estratégia usa a cruz de ouro e a cruz de morte de linhas EMA duplas para determinar o tempo de entrada e saída. Especificamente, quando a linha EMA rápida atravessa acima da linha EMA lenta da parte inferior, um sinal de cruz de ouro é gerado para entrada longa. Quando a linha EMA rápida atravessa abaixo da linha EMA lenta da parte superior, um sinal de cruz de morte é gerado para entrada curta. Esta estratégia é simples e fácil de implementar e é uma estratégia de negociação muito comum.

Estratégia lógica

O código básico desta estratégia é o seguinte:

fast = input(25, title="Fast")
slow = input(75, title="Slow") 

matype1=ema(source, fast)
matype2=ema(source, slow)

longCondition = crossover(matype1, matype2)
shortCondition = crossunder(matype1, matype2) 

if (longCondition)
    strategy.entry("Long", strategy.long)
     
if (shortCondition)
    strategy.entry("Short", strategy.short) 

Esta estratégia primeiro define duas linhas EMA, com o período EMA rápido como 25 e o período EMA lento como 75. Em seguida, calcula os valores das duas linhas EMA. Quando a EMA rápida cruza acima da EMA lenta, a longCondition se torna verdadeira. Quando a EMA rápida cruza abaixo da EMA lenta, a shortCondition se torna verdadeira. Após as condições correspondentes serem verdadeiras, ela vai longa ou curta.

Esta estratégia utiliza a característica de suavização da EMA para filtrar o ruído do mercado, ao mesmo tempo em que é capaz de capturar rapidamente as mudanças de tendência.

Análise das vantagens

As vantagens desta estratégia incluem:

  1. A lógica é simples e intuitiva, fácil de entender e implementar.

  2. A EMA suaviza as flutuações do mercado e filtra eficazmente os falsos sinais.

  3. A cruz de ouro e a cruz da morte são fortes sinais comerciais para controlar o risco.

  4. Os períodos de EMA flexíveis são adequados a diferentes ambientes de mercado.

  5. Fácil de combinar com outros indicadores técnicos.

  6. Os parâmetros da EMA podem ser otimizados para obter melhores resultados.

Análise de riscos

Os riscos desta estratégia incluem:

  1. Sinais ineficazes frequentes em mercados de intervalo, uma vez que a EMA cruza com frequência.

  2. O atraso da EMA pode perder oportunidades de curto prazo.

  3. O crossover da EMA por si só não pode identificar uma inversão de tendência, limitando o potencial de lucro.

  4. Os períodos fixos de EMA não se adaptam às alterações do mercado.

  5. Requer um capital significativo, caso contrário aumenta o risco.

  6. Precisa de um stop loss rigoroso, caso contrário, uma perda única pode ser enorme.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar os períodos de EMA para diferentes condições de mercado.

  2. Adicione outros filtros como MACD, Bollinger Bands para melhorar a qualidade do sinal.

  3. Adicionar indicadores de avaliação de tendências como ATR, ADX para reduzir as negociações ineficazes.

  4. Incorporar uma análise de vários prazos para determinar a direção da tendência.

  5. Usar machine learning para otimizar dinamicamente os períodos de EMA.

  6. Otimizar o dimensionamento das posições para controlar o risco.

  7. Otimizar estratégias de stop loss para limitar perdas individuais.

Resumo

Esta estratégia usa a dupla EMA cruz de ouro e cruz de morte como sinais de negociação, formando uma estratégia clássica de tendência seguinte. É simples e fácil de implementar, e pode ser combinado com outros indicadores, adequando-se aos investidores com requisitos relativamente baixos no julgamento da tendência. Mas também tem limites de lucro e riscos, exigindo otimizações adequadas para diferentes ambientes de mercado.


/*backtest
start: 2023-09-16 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Double EMA CROSS By © EmreE (Emre Ertürk) Also thx for KivancOzbilgic color based bars

//@version=4
strategy(title="Double EMA CROSS", shorttitle="DEC", overlay=true)

matype = input("ema")
hidema = input(false)
sourcetype = input(close, title="Source Type")
source=close
 
// STEP 1:
// Configure backtest start date with inputs
startDate = input(title="Start Date", type=input.integer,
     defval=1, minval=1, maxval=231)
startMonth = input(title="Start Month", type=input.integer,
     defval=1, minval=1, maxval=12) 
startYear = input(title="Start Year", type=input.integer,
     defval=2020, minval=1800, maxval=2100)

// STEP 2:
// See if this bar's time happened on/after start date
afterStartDate = (time >= timestamp(syminfo.timezone,
     startYear, startMonth, startDate, 0, 0))

fast = input(25, title="Fast")
slow = input(75, title="Slow")

matype1=ema(source, fast)
matype2=ema(source, slow)


signalcolor = source > matype2 ? color.blue : color.red
signal = cross(fast, slow) 



hizliema=plot(hidema ? na : matype1, color=color.green, linewidth=2,transp=0, title="Fast EMA")
yavasema=plot(hidema ? na : matype2, color=color.red, linewidth=2,transp=0, title="Slow EMA")
//kesisme=plot(signal, style=cross, color=signalcolor, linewidth=5, title="Kesişme")
 

longCondition = crossover(matype1, matype2)
if (afterStartDate and longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = crossunder(matype1, matype2)
if (afterStartDate and shortCondition)
    strategy.entry("Short", strategy.short)
    

//--------------------------------------------------------

//volume based color bars
length=input(21, "length", minval=1)
avrg=sma(volume,length)

vold1 = volume > avrg*1.5 and close<open
vold2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close<open
vold3 = volume < avrg *0.5 and close<open

volu1 = volume > avrg*1.5 and close>open
volu2 = volume >= avrg*0.5 and volume<=avrg*1.5 and close>open
volu3 = volume< avrg*0.5 and close>open

cold1=#800000
cold2=#FF0000
cold3=color.orange

colu1=#006400
colu2=color.lime
colu3=#7FFFD4

ac = vold1 ? cold1 : vold2 ? cold2 : vold3 ? cold3 : volu1 ? colu1 : volu2 ? colu2 : volu3 ? colu3 : na

barcolor(ac)

Mais.