A estratégia de cruz de ouro da EMA é uma estratégia de negociação quantitativa comum. Ela usa duas médias móveis exponenciais (EMA) com parâmetros diferentes. Quando o EMA de período mais curto cruza acima do EMA de período mais longo, ele fica longo. Quando o EMA de período mais curto cruza abaixo do EMA de período mais longo, ele fecha a posição. Esta estratégia utiliza a reação mais rápida da EMA de curto período e a capacidade de seguir a tendência da EMA de longo período para gerar sinais comerciais.
A estratégia primeiro define duas EMAs, ema1 com comprimento 10 e ema2 com comprimento 21. Em seguida, calcula os valores das duas EMAs. Quando ema1 cruza acima de ema2, ele sinaliza uma ruptura ascendente, que é um sinal longo. Quando ema1 cruza abaixo de ema2, ele sinaliza uma quebra através das EMAs, que é um sinal de posição fechada.
Para filtrar falsas rupturas, o código também define um valor limiar, calculado como:
threshold = ((ema1 - ema2)*100) / ((ema1 + ema2)/2)
Este limiar representa a porcentagem de distância da EMA em relação à média da EMA. Quando o limiar está acima de 0,15%, é um sinal longo. Quando o limiar está abaixo de -0,006%, é um sinal de posição próxima.
Em resumo, os sinais de negociação desta estratégia são:
As vantagens desta estratégia incluem:
O uso de EMAs pode suavizar os dados de preços e ajudar a gerar sinais de negociação.
A configuração dual da EMA equilibra a capacidade de resposta e a estabilidade.
O limiar filtra falhas e evita transacções desnecessárias.
A lógica estratégica é simples e clara, adequada para iniciantes.
Os parâmetros e o limiar da EMA podem ser otimizados.
Os riscos desta estratégia incluem:
As EMAs estão mais atrasadas em relação aos preços e podem perder oportunidades de curto prazo.
Risco de ficar preso quando a tendência se inverter, levando a grandes perdas.
Um limiar inadequado pode filtrar sinais válidos ou gerar sinais falsos.
Se os parâmetros da EMA não forem adequados, é possível que as duas EMA não apresentem diferenças significativas, gerando sinais falsos.
O stop loss deve ser estabelecido de forma razoável para evitar ser interrompido por grandes oscilações do mercado.
A estratégia pode ser otimizada nos seguintes aspectos:
Otimizar os parâmetros da EMA e testar diferentes períodos.
Otimizar o valor limiar para equilibrar sinais falsos e sinais válidos.
Adicione outros indicadores técnicos como MACD, KDJ para confirmar sinais.
Adicionar mecanismos de stop loss como trailing stop ou ordens OCO para limitar as perdas.
Considerar posições parciais para reduzir o risco.
Teste diferentes períodos de espera para encontrar a duração ideal.
A estratégia de cruz de ouro da EMA tem uma lógica clara e simples, utilizando as características das EMAs para gerar sinais de negociação. A estratégia tem certas vantagens, mas existem riscos potenciais. A estratégia pode ser melhorada por otimização de parâmetros, definição de stop loss, filtragem de sinais, etc. É adequada como uma estratégia quantitativa de negociação para iniciantes.
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ if high > ta.highest(high[1], 5) strategy.entry("Enter Long", strategy.long) else if low < ta.lowest(low[1], 5) strategy.entry("Enter Short", strategy.short)//@version=3 strategy(title="ema10-21", shorttitle="10/21", overlay=true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, initial_capital = 2500, commission_type = strategy.commission.percent, commission_value = 0.2) len1 = input(10, minval=1, title="EMA #1 length") src1 = input(close, title="EMA Source #1") a = ta.ema(src1, len1) plot(a, title="EMA #1", color=color.orange, linewidth=2, style=plot.style_line) len2 = input(21, minval=1, title="EMA #2 length") src2 = input(close, title="EMA Source #2") b = ta.ema(src2, len2) plot(b, title="EMA #2", color=color.blue, linewidth=2, style=plot.style_line) threshold = ((a-b)*100)/((a+b)/2) thresholdUp = threshold > 0.15 thresholdDown = threshold < -0.006 if (thresholdUp) strategy.entry("Buy", strategy.long) if (thresholdDown) strategy.close("Buy", strategy.long) //goLong() => (crossover(a, b)) and (threshold >= 0.0025) //killLong() => (crossunder(a, b)) and (threshold <= -0.0025) //strategy.entry("Buy", strategy.long, when = goLong()) //strategy.close("Buy", when = killLong()) //threshold = ((a-b)*100)/((a+b)/2) //achat = out1 > out2 //vente = out1 < out2 //and threshold < -0.025 //strategy.entry("long", true, when = achat) //strategy.exit("exit", "long", when = vente)