
A estratégia MACD Valley Detector é uma estratégia de negociação baseada no indicador MACD. A estratégia gera um sinal de compra detectando o fundo do indicador MACD. Quando o indicador MACD forma o fundo do vale e o valor do MACD é menor do que -0.4, e o diferencial entre o MACD e sua linha de sinal é menor do que 0, a estratégia emite um sinal de compra e, ao mesmo tempo, define um preço de parada.
O núcleo da estratégia do MACD Valley Detector é o uso do indicador MACD para capturar oportunidades potenciais de reversão. O indicador MACD é calculado a partir da diferença entre as duas médias móveis do indicador (EMA), refletindo mudanças na dinâmica dos preços. Quando o indicador MACD forma o fundo do vale, indicando que o movimento descendente dos preços pode diminuir e que há possibilidade de reversão.
A estratégia usa os seguintes critérios para determinar o fundo do vale do MACD:
Quando as condições acima são simultaneamente satisfeitas, a estratégia considera que o fundo do vale do MACD surgiu e emite um sinal de compra. Ao mesmo tempo, a estratégia define um preço de parada fixo, ou seja, o preço de compra mais um diferencial de preço fixo (takeProfitValue).
A estratégia MACD Valley Detector é uma estratégia de negociação baseada na detecção do fundo do vale do indicador MACD. Através da captura do fundo do vale do indicador MACD, a estratégia tenta encontrar potenciais oportunidades de reversão e realizar a compra. A estratégia usa várias condições para confirmar o sinal e estabelece um preço de parada fixo.
/*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)