
A estratégia determina a entrada e a saída do mercado através do cálculo da intersecção entre a linha rápida (EMA), a linha lenta (EMA) e a linha lenta (EMA), em combinação com a intersecção do eixo zero do MACD. É uma estratégia dinâmica que utiliza os indicadores de EMA e MACD para tomar decisões de negociação.
A estratégia é baseada em dois indicadores de análise técnica:
EMA linha média de cruzamento. Julgar a tendência de cruzamento através da linha rápida EMA (3), EMA (11) e EMA (18) e servir como sinal de entrada e saída.
O indicador MACD e sua cruz zero. O MACD é composto por diferença de desvio ((DIFF) e DEA. O DIFF é a linha rápida (EMA) (3) menos a linha lenta (EMA) (11) composta por DEA (EMA) do MACD (27). O MACD> 0 indica a multiplicação e o MACD < 0 indica a vazia.
De acordo com a combinação de cruzamentos EMA e cruzamentos MACD zero-axial, três chances de entrada e duas chances de saída são definidas:
Em geral, a estratégia integra um sistema de duplo cruzamento EMA e indicadores MACD, que pode melhorar a rentabilidade da estratégia através do ajuste dinâmico dos parâmetros da linha média e dos parâmetros MACD.
Utilizando as vantagens do cruzamento de linha média da EMA e do indicador MACD, o julgamento de duplo indicador é integrado, aumentando a precisão.
Configure três oportunidades de multiplicação e duas oportunidades de liquidação para aumentar a frequência de negociação da estratégia e expandir o espaço de lucro.
O espaço para otimização de parâmetros dinâmicos é grande. O EMA de linha rápida, o EMA de linha lenta, o EMA de eixo zero e o MACD podem ser ajustados de forma otimizada.
A lógica da estratégia é clara e fácil de entender, facilitando a inicialização e otimização.
O cruzamento da EMA com o MACD pode gerar uma certa taxa de falsidade, o que pode levar a perdas desnecessárias.
A frequência de negociação é alta, o stop loss é pequeno e o risco de perda é acumulado.
Os parâmetros são difíceis de otimizar, e se não for otimizado corretamente, pode ser difícil de se ajustar aos dados históricos.
O custo de transação deve ser levado em consideração.
Para os riscos:
Estabelecer um limite razoável de perdas para minimizar perdas individuais.
Ajustar os parâmetros de forma apropriada para evitar a sobre-ajuste.
Considere os impactos de custos, como a redução da frequência das transações.
Substituição por outros testes de indicadores: como a faixa de Brin, KDJ, etc.
Optimizar os parâmetros do cruzamento da linha média do EMA: alterar os parâmetros de comprimento do EMA de linha rápida e do EMA de linha lenta.
Parâmetros para otimizar o MACD: alterar o DIFF do MACD e o DEA para calcular o EMA.
Aumentar as estratégias de stop loss: como o número de transações de stop loss, o tempo de stop loss, o stop loss móvel, etc.
O custo de transação deve ser levado em consideração e o número de entradas ajustado.
Esta estratégia, através da combinação do sistema de cruzamento duplo EMA e indicadores MACD, constrói uma estratégia de parâmetros dinâmicos de alta frequência de negociação e potencial de lucro. Ao mesmo tempo, a lógica da estratégia é simples e clara, fácil de entender e ajustar para otimizar. Mas também há um certo risco de erro de notificação e dificuldade de otimização de parâmetros, o que precisa ser respondido por métodos como parada razoável e prevenção de overfitting.
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-05 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("MACD+EMA crossovers Strategy custom",initial_capital=10000,max_bars_back=150,commission_type=strategy.commission.percent , commission_value=0.1, shorttitle="MACD+EMAcross",pyramiding = 10,default_qty_type=strategy.percent_of_equity,default_qty_value=33,overlay=false)
short = ema(close,3)
long = ema(close, 11)
long2 = ema(close, 18)
//plot(short, color = red, linewidth = 4)
//plot(long, color = blue, linewidth = 4)
//plot(long2, color = green, linewidth = 4)
isCross1 = crossover(short, long)
isCross2 = crossover(short, long2)
isCrossSell = crossunder(short, long)
//isCross3 = crossover(long, long2)
//plotshape(isCross1 and not isCross2, color=lime, style=shape.arrowup, text="1st in",size = size.tiny, location = location.belowbar)
//plotshape(isCross2 , color=lime, style=shape.arrowup, text="2nd in",size = size.tiny, location = location.belowbar)
//plotshape(isCross3 , color=lime, style=shape.arrowdown, text="All in",size = size.normal, location = location.abovebar)
//plotshape(isCrossSell , color=red, style=shape.arrowdown, text="SELL",size = size.small, location = location.abovebar)
fastLength = input(3)
slowlength = input(11)
MACDLength = input(27)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength) //signal
delta = MACD - aMACD // histograma
strategy.entry("MacdLE 1st in", strategy.long, comment="MacdLE 1st in",when=crossover(delta, 0))
strategy.entry("2nd in", strategy.long, comment="2nd in",when=isCross1)
strategy.entry("all in", strategy.long, comment="all in",when=isCross2)
strategy.close("2nd in",when=isCrossSell)
strategy.close("all in",when=isCrossSell)
//strategy.close("2nd in",when=crossunder(delta, 0))
//strategy.close("all in",when=crossunder(delta, 0))
strategy.close("MacdLE 1st in",when=crossunder(delta, 0))
histColour = (delta > 0) ? green : (delta < 0) ? red : #4169E1
plot(MACD,color=red,linewidth=2)
plot(aMACD,color=blue,linewidth=2)
plot(delta,style=histogram, color=histColour, linewidth=10)
plot(0,color=white)