A estratégia do MACD Valley Detector é uma estratégia de negociação baseada no indicador MACD. A estratégia gera sinais de compra detectando vales no indicador MACD. Quando o indicador MACD forma um vale, o valor do MACD é menor ou igual a -0,4, e a diferença entre o MACD e sua linha de sinal é menor que 0, a estratégia emite um sinal de compra e define um preço de lucro.
O núcleo da estratégia do MACD Valley Detector é usar o indicador MACD para capturar oportunidades de reversão potenciais. O indicador MACD é calculado pela diferença entre duas médias móveis exponenciais (EMA), refletindo mudanças no impulso do preço.
A estratégia utiliza as seguintes condições para determinar o vale MACD:
Quando as condições acima são satisfeitas simultaneamente, a estratégia a considera como um vale MACD e emite um sinal de compra.
A estratégia do MACD Valley Detector é uma estratégia de negociação baseada na detecção de vales no indicador MACD. Ao capturar os vales do indicador MACD, a estratégia tenta encontrar oportunidades potenciais de reversão e fazer compras. A estratégia usa várias condições para confirmar os sinais e estabelece um preço fixo de lucro. Embora esta estratégia tenha certas vantagens, como a utilização do indicador MACD amplamente utilizado e confirmação multi-condicional, ela também tem alguns riscos e limitações, como lag, parâmetros fixos, falta de stop-loss claro, etc. Para melhorar a estratégia, pode-se considerar a introdução de stop-loss dinâmico, otimização de parâmetros, combinação com outros indicadores para filtragem e métodos dinâmicos de lucro.
/*backtest start: 2024-03-12 00:00:00 end: 2024-04-11 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/ // © freditansari //@version=5 //@version=5 strategy("MACD Valley Detector", overlay=true) fastLength = input(12) slowlength = input(26) MACDLength = input(9) MACD = ta.ema(close, fastLength) - ta.ema(close, slowlength) aMACD = ta.ema(MACD, MACDLength) delta = MACD - aMACD rsi = ta.rsi(close, 14) atr = ta.atr(14) qty=1 takeProfitValue =7 // stopLossValue = 1 // close[0] < close[1] and close[1] > close[2] is_valley= delta[0] > delta[1] and delta[1]<delta[2]? 1:0 // plot(is_valley , "valley?") if(is_valley==1 and MACD<=-0.4 and delta <0) takeProfit = close +takeProfitValue action = "buy" // strategy.entry("long", strategy.long, qty=qty) // // strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit) // strategy.exit("exit", "long", limit=takeProfit) alert('{"TICKER":"'+syminfo.ticker+'","ACTION":"'+action+'","PRICE":"'+str.tostring(close)+'","TAKEPROFIT":"'+str.tostring(takeProfit)+'","QTY":"'+str.tostring(qty)+'"}') if (ta.crossover(delta, 0)) stopLoss = low -0.3 takeProfit = high +0.3 strategy.entry("MacdLE", strategy.long,qty=qty, comment="MacdLE") strategy.exit("exit long", "MacdLE", limit=takeProfit) // strategy.exit("exit long", "MacdLE", stop=stopLoss, limit=takeProfit) if (ta.crossunder(delta, 0)) stopLoss = high + 0.3 takeProfit = low - 0.3 strategy.entry("MacdSE", strategy.short,qty=qty, comment="MacdSE") strategy.exit("exit long", "MacdLE", limit=takeProfit) // strategy.exit("exit short", "MacdSE", stop=stopLoss, limit=takeProfit) //plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)