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.
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.
As vantagens desta estratégia incluem:
A lógica é simples e intuitiva, fácil de entender e implementar.
A EMA suaviza as flutuações do mercado e filtra eficazmente os falsos sinais.
A cruz de ouro e a cruz da morte são fortes sinais comerciais para controlar o risco.
Os períodos de EMA flexíveis são adequados a diferentes ambientes de mercado.
Fácil de combinar com outros indicadores técnicos.
Os parâmetros da EMA podem ser otimizados para obter melhores resultados.
Os riscos desta estratégia incluem:
Sinais ineficazes frequentes em mercados de intervalo, uma vez que a EMA cruza com frequência.
O atraso da EMA pode perder oportunidades de curto prazo.
O crossover da EMA por si só não pode identificar uma inversão de tendência, limitando o potencial de lucro.
Os períodos fixos de EMA não se adaptam às alterações do mercado.
Requer um capital significativo, caso contrário aumenta o risco.
Precisa de um stop loss rigoroso, caso contrário, uma perda única pode ser enorme.
A estratégia pode ser otimizada nos seguintes aspectos:
Otimizar os períodos de EMA para diferentes condições de mercado.
Adicione outros filtros como MACD, Bollinger Bands para melhorar a qualidade do sinal.
Adicionar indicadores de avaliação de tendências como ATR, ADX para reduzir as negociações ineficazes.
Incorporar uma análise de vários prazos para determinar a direção da tendência.
Usar machine learning para otimizar dinamicamente os períodos de EMA.
Otimizar o dimensionamento das posições para controlar o risco.
Otimizar estratégias de stop loss para limitar perdas individuais.
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)