
Esta estratégia usa um diafragma de dois EMAs para determinar o tempo de entrada e saída. Concretamente, quando a linha EMA rápida da direção inferior quebra a linha EMA lenta, produz um sinal de diafragma de ouro, fazendo mais; quando a linha EMA rápida da direção superior quebra a linha EMA lenta, produz um sinal de diafragma de ouro, fazendo vazio.
O código central da 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)
A estratégia começa com a configuração rápida e lenta de duas linhas médias de EMA, em que a linha rápida de EMA tem um período de 25 e a linha lenta de EMA tem um período de 75 anos. Em seguida, o valor das duas linhas de EMA é calculado. Quando a linha rápida de EMA quebra a linha lenta de EMA do lado de baixo, a condição de longCondition é verdadeira; quando a EMA rápida cai do lado de cima para baixo e quebra a EMA lenta, a condição de shortCondition é verdadeira.
A estratégia utiliza a característica de suavização da linha média EMA para filtrar o ruído do mercado e, ao mesmo tempo, capturar rapidamente as mudanças de tendência. O cruzamento entre duas linhas médias EMA é um sinal de negociação mais forte e pode controlar o risco de negociação.
A estratégia tem as seguintes vantagens:
O conceito de operação é simples, intuitivo e fácil de entender.
A EMA usa os movimentos de mercado para filtrar False Signal.
O Forex é um sinal de negociação mais forte, que permite controlar o risco de forma eficaz.
Adaptação flexível do ciclo EMA para diferentes cenários de mercado.
Fácil de usar em combinação com outros indicadores técnicos.
Otimizando os parâmetros do EMA, pode-se obter melhores efeitos estratégicos.
A estratégia também apresenta alguns riscos:
Em situações de turbulência, os EMAs se cruzam frequentemente, gerando uma grande quantidade de sinais de negociação inválidos.
A EMA está atrasada e pode ter perdido a oportunidade de uma linha curta.
O cruzamento da EMA por si só não pode determinar o ponto de viragem da tendência, existindo um certo limite de lucro.
O ciclo de EMA fixo não se adapta às mudanças do mercado.
O apoio financeiro deve ser forte, caso contrário, o risco de derivação é grande.
Se não houver restrições rigorosas, a perda individual pode ser muito grande.
A estratégia pode ser melhorada em vários aspectos:
Optimizar os parâmetros do ciclo EMA para adaptá-los a diferentes situações de mercado.
Adicionar filtros de outros indicadores, como MACD, faixa de Brin, etc., para melhorar a qualidade do sinal.
Aumentar os indicadores de determinação de tendências, como ATR Stop, ADX, etc., reduzindo as transações inválidas.
A análise de tendências, combinada com uma análise de períodos de tempo mais detalhados, pode ajudar a determinar a direção das tendências.
Otimizar o ciclo EMA de forma dinâmica usando métodos de aprendizagem de máquina.
Optimizar a gestão de posições para controlar o risco.
Optimizar a estratégia de stop loss para reduzir as perdas individuais.
Esta estratégia usa o cruzamento de um cruzamento de duas EMAs como sinal de negociação, formando uma estratégia de seguimento de tendência mais clássica. A estratégia é simples e fácil de usar, fácil de combinar com outros indicadores técnicos, e é adequada para investidores com baixas exigências de julgamento de tendências.
/*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)