Esta estratégia implementa a tendência após a negociação no indicador MACD. Identifica a direção da tendência usando o MACD e com stop loss dinâmico para bloquear lucros.
Calcule o indicador de MA rápido, MA lento e MACD. O MA rápido usa a EMA de 12 períodos, o MA lento usa a EMA de 26 períodos.
Estabelecer linhas de compra e venda. Gerar sinal de compra quando o MACD cruza a linha de compra, gerar sinal de venda quando o MACD cruza abaixo da linha de venda.
Defina o stop loss dinâmico após a abertura da posição.
Posição de fechamento quando for acionado o stop loss ou aparecer o sinal de reversão.
Usando o MACD para identificar a direção da tendência pode efetivamente rastrear as tendências.
O stop loss dinâmico pode bloquear continuamente os lucros e evitar perdas aumentadas.
A lógica da estratégia é simples e clara, fácil de entender e automatizar para negociação de quantidade.
O MACD tem um efeito de atraso, pode perder a inversão da tendência a curto prazo.
O stop loss muito solto pode perder alguns lucros, muito apertado pode parar cedo.
Os parâmetros MACD e as linhas de compra/venda precisam de testes e otimização constantes.
Funciona melhor no mercado de tendências, pode ter perdas no mercado agitado.
Otimizar os parâmetros do MACD para encontrar a melhor combinação.
Teste diferentes métodos de stop loss, como pontos fixos, baseados em ATR, etc.
Adicionar condições de filtragem utilizando outros indicadores para evitar sinais falsos, por exemplo, Bandas de Bollinger, RSI, etc.
Combinar com ferramentas de identificação de tendências, ajustar dinamicamente os parâmetros da estratégia com base na tendência versus mercado de intervalo.
A estratégia tem uma lógica clara de usar o MACD para rastrear tendências e stop loss dinâmico para bloquear lucros. Pode rastrear efetivamente os mercados de tendência. Mas o MACD tem um problema de atraso e os pontos de stop loss precisam ser otimizados. O próximo passo é testar mais parâmetros, otimizar o mecanismo de stop loss, adicionar filtros com outros indicadores, para torná-lo robusto em diferentes condições de mercado, melhorando a estabilidade.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy(shorttitle = "EURUSD MACD", title = "EURUSD MACD") fastMA = input(title="Fast moving average", defval = 12, minval = 7) slowMA = input(title="Slow moving average", defval = 26, minval = 7) lastColor = yellow [currMacd,_,_] = macd(close[0], fastMA, slowMA, 9) [prevMacd,_,_] = macd(close[1], fastMA, slowMA, 9) plotColor = currMacd > 0 ? currMacd > prevMacd ? lime : green : currMacd < prevMacd ? maroon : red plot(currMacd, style = histogram, color = plotColor, linewidth = 3) plot(0, title = "Zero line", linewidth = 1, color = gray) //MACD // Getting inputs fast_length = input(title="Fast Length", defval=12) slow_length = input(title="Slow Length", defval=26) src = input(title="Source", defval=close) signal_length = input(title="Signal Smoothing", minval = 1, maxval = 50, defval =9) sma_source = input(title="Simple MA(Oscillator)", type=bool, defval=false) sma_signal = input(title="Simple MA(Signal Line)", type=bool, defval=false) // Plot colors col_grow_above = #26A69A col_grow_below = #FFCDD2 col_fall_above = #B2DFDB col_fall_below = #EF5350 col_macd = #0094ff col_signal = #ff6a00 // Calculating fast_ma = sma_source ? sma(src, fast_length) : ema(src, fast_length) slow_ma = sma_source ? sma(src, slow_length) : ema(src, slow_length) macd = fast_ma - slow_ma signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length) hist = macd - signal //plot(hist, title="Histogram", style=columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 ) plot(macd, title="MACD", color=col_macd, transp=0) plot(signal, title="Signal", color=col_signal, transp=0) ///END OF MACD //Long and Close Long Lines linebuy = input(title="Enter Long", type=float, defval=-0.0002) linesell = input(title="Close Long", type=float, defval=0.0001) //Plot Long and Close Long Lines plot(linebuy,color=green),plot(linesell,color=red) //Stop Loss Input sl_inp = input(0.05, title='Stop Loss %', type=float)/100 //Order Conditions longCond = crossover(currMacd, linebuy) exitLong = crossover(currMacd, linesell) stop_level = strategy.position_avg_price * (1 - sl_inp) //Order Entries strategy.entry("long", strategy.long, when=longCond==true) strategy.close("long", when=exitLong==true) strategy.exit("Stop Loss", stop=stop_level)