
La stratégie MACD Valley Detector est une stratégie de négociation basée sur l’indicateur MACD. La stratégie génère un signal d’achat en détectant le creux de l’indicateur MACD.
Le cœur de la stratégie MACD Valley Detector est d’utiliser l’indicateur MACD pour capturer les opportunités de reprise potentielles. L’indicateur MACD est calculé à partir de la différence entre les moyennes mobiles des deux indices (EMA), ce qui reflète les changements de dynamique des prix.
La stratégie utilise les conditions suivantes pour déterminer le fond de la vallée du MACD:
Lorsque les conditions ci-dessus sont réunies, la stratégie considère que le fond de la vallée MACD est apparu et envoie un signal de vente. En même temps, la stratégie définit un prix de stop fixe, c’est-à-dire le prix d’achat plus une différence de prix fixe ((takeProfitValue)).
La stratégie de détection de la vallée du MACD est une stratégie de négociation basée sur la détection du fond de la vallée de l’indicateur du MACD. En capturant le fond de la vallée de l’indicateur du MACD, la stratégie essaie de trouver des opportunités de reprise potentielles et de faire un achat. La stratégie utilise plusieurs conditions pour confirmer le signal et définit un prix d’arrêt fixe.
/*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)