Esta estratégia combina os indicadores MACD, EMA e RSI para implementar a negociação de tendência e reversão. Gerar sinais de compra quando o MACD sobe através da linha de sinal e o preço de fechamento está acima da EMA; e vender sinais quando o MACD cai abaixo da linha de sinal e o preço de fechamento está abaixo da EMA para capturar tendências. Enquanto isso, negocia reversões quando o RSI atinge níveis de sobrecompra ou sobrevenda.
Calcular diferenças MACD e EMA.
fastMA = ema(close, fast)
slowMA = ema(close, slow)
macd = fastMA - slowMA
signal = sma(macd, 9)
ema = ema(close, input(200))
Gerar sinal de compra: MACD dif (macd - sinal) sobe acima de 0 e o preço de fechamento está acima da EMA.
delta = macd - signal
buy_entry= close>ema and delta > 0
Gerar sinal de venda: MACD diferença vai abaixo de 0 e preço de fechamento está abaixo da EMA.
sell_entry = close<ema and delta<0
Reversões comerciais quando o RSI atinge níveis de sobrecompra ou sobrevenda.
if (rsi > 70 or rsi < 30)
reversal := true
Soluções:
Esta estratégia combina o MACD, EMA e RSI para implementar organicamente o seguimento da tendência e a negociação de reversão. O MACD julga as direções da tendência, o EMA filtra o ruído e o RSI capta os pontos de reversão. Tal combinação de múltiplos indicadores pode determinar melhor os movimentos do mercado, melhorando a lucratividade enquanto reduzindo falsos sinais. A otimização de parâmetros e o gerenciamento de stop loss podem ser melhorados para reduzir perdas desnecessárias.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-17 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/ // © mbuthiacharles4 //Good with trending markets //@version=4 strategy("CHARL MACD EMA RSI") fast = 12, slow = 26 fastMA = ema(close, fast) slowMA = ema(close, slow) macd = fastMA - slowMA signal = sma(macd, 9) ema = ema(close, input(200)) rsi = rsi(close, input(14)) //when delta > 0 and close above ema buy delta = macd - signal buy_entry= close>ema and delta > 0 sell_entry = close<ema and delta<0 var bought = false var sold = false var reversal = false if (buy_entry and bought == false and rsi <= 70) strategy.entry("Buy",true , when=buy_entry) bought := true strategy.close("Buy",when= delta<0 or rsi > 70) if (delta<0 and bought==true) bought := false //handle sells if (sell_entry and sold == false and rsi >= 30) strategy.entry("Sell",false , when=sell_entry) sold := true strategy.close("Sell",when= delta>0 or rsi < 30) if (delta>0 and sold==true) sold := false if (rsi > 70 or rsi < 30) reversal := true placing = rsi > 70 ? high :low label.new(bar_index, placing, style=label.style_flag, color=color.blue, size=size.tiny) if (reversal == true) if (rsi < 70 and sold == false and delta < 0) strategy.entry("Sell",false , when= delta < 0) sold := true reversal := false else if (rsi > 30 and bought == false and delta > 0) strategy.entry("Buy",true , when= delta > 0) bought := true reversal := false