Cette stratégie, combinant l’indicateur de dynamique MACD et l’indicateur de survente RSI, vérifie si le RSI a également effectué un revirement de fond / sommet correspondant au moment de l’effet de levier MACD, ce qui génère un signal de trading plus fiable. C’est une stratégie de revirement à court terme typique.
Calculer les colonnes DIFF, DEA et MACD de l’indicateur MACD. Le DIFF produit un signal de fourche dorée lorsqu’il traverse le DEA et un signal de fourche morte lorsqu’il traverse le MACD.
Calculer l’indicateur RSI pour déterminer si le fond a rebondit ou si le sommet est revenu. Et définir une fenêtre de retour pour déterminer si un fond ou un sommet a été atteint au cours de la dernière étape.
Lorsque le MACD est à la fourche, un signal de plus est généré si le RSI a terminé le rebond de la pointe dans la fenêtre de retour. Lorsque le MACD est à la fourche, un signal de plus est généré si le RSI a terminé le rebond de la pointe.
Il est possible de mettre en place des points de stop-loss après l’entrée pour contrôler les risques.
Le MACD détermine le moment où la tendance se retourne. Le RSI détermine le moment où le cours est en hausse ou en hausse.
Il est également possible de vérifier les jetons MACD et RSI et de filtrer les faux signaux.
En regardant la fenêtre, on peut juger de la fiabilité du signal.
La mise en place d’un stop loss aide à la gestion des risques.
Le MACD et le RSI sont à la traîne et risquent de rater leur point d’entrée optimal.
Il est moins probable que les deux indicateurs se produisent en même temps et moins de signaux sont attendus.
Il n’a pas pris en compte les grandes tendances, il est facile de se faire piéger.
Les réglages de stop-loss inappropriés peuvent être trop laxistes ou trop stricts.
La réponse:
Ajustez les paramètres du MACD et du RSI pour réduire la probabilité de retard.
Élargir la portée de l’indicateur de manière appropriée pour fournir plus de signaux.
Il y a aussi un filtrage des tendances pour éviter les entrées en contre-courant.
Testez différents paramètres de stop-loss pour trouver le meilleur.
Tester l’efficacité d’autres équations telles que SMA.
L’augmentation du stop-loss mobile rend le stop-loss plus flexible.
Les résultats de l’enquête ont été publiés sur le site officiel de l’Université de Montréal.
L’introduction de l’apprentissage automatique pour prédire le mouvement des indicateurs.
Le choix du moment de l’admission, combiné à d’autres facteurs.
La stratégie utilise la combinaison des deux indicateurs MACD et RSI pour entrer en jeu après avoir sélectionné un signal de revers fiable. La stratégie est claire, flexible en matière d’ajustement des paramètres, peut être étendue à partir de la sélection des indicateurs, de la perception des tendances, des méthodes de stop-loss, etc., pour obtenir plus d’opportunités de négociation sur une base stable.
/*backtest
start: 2023-08-24 00:00:00
end: 2023-09-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
//based on Range Strat - MACD/RSI
// strategy("MACD/RSI - edited",
// overlay=true,
// default_qty_type=strategy.percent_of_equity,
// default_qty_value=10, precision=2, initial_capital=100000,
// pyramiding=2,
// commission_value=0.05)
//Backtest date range
StartDate = input(timestamp("13 Jun 2022"), title="Start Date")
EndDate = input(timestamp("13 Jun 2024"), title="Start Date")
inDateRange = true
// RSI Input Settings
rsisrc = input(title="RSI Source", defval=close, group="RSI Settings")
length = input(title="Length", defval=14, group="RSI Settings" )
overSold = input(title="Over Sold Threshold", defval=30, group="RSI Settings" )
overBought = input(title="Over Bought Threshold", defval=70, group="RSI Settings" )
rsi_lookback = input(title="RSI cross lookback period", defval=7, group="RSI Settings")
// Calculating RSI
vrsi = ta.rsi(rsisrc, length)
co = ta.crossover(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)
// Function looking for a happened condition during lookback period
f_somethingHappened(_cond, _lookback) =>
bool _crossed = false
for i = 1 to _lookback
if _cond[i]
_crossed := true
_crossed
coCheck = f_somethingHappened(co, rsi_lookback)
cuCheck = f_somethingHappened(cu, rsi_lookback)
// MACD Input Settings
macdsrc = input(title="MACD Source", defval=close, group="MACD Settings")
fast_length = input(title="Fast Length", defval=12, group="MACD Settings")
slow_length = input(title="Slow Length", defval=26, group="MACD Settings")
signal_length = input.int(title="Signal Smoothing", minval = 1, maxval = 50, defval = 9, group="MACD Settings")
sma_source = input.string(title="Oscillator MA Type", defval="EMA", options=["SMA", "EMA"], group="MACD Settings")
sma_signal = input.string(title="Signal Line MA Type", defval="EMA", options=["SMA", "EMA"], group="MACD Settings")
// Calculating MACD
fast_ma = sma_source == "SMA" ? ta.sma(macdsrc, fast_length) : ta.ema(macdsrc, fast_length)
slow_ma = sma_source == "SMA" ? ta.sma(macdsrc, slow_length) : ta.ema(macdsrc, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal == "SMA" ? ta.sma(macd, signal_length) : ta.ema(macd, signal_length)
delta = macd - signal
MACDcrossover = ta.crossover(delta, 0)
MACDcrossunder = ta.crossunder(delta, 0)
// Stop Loss Input Settings
longLossPerc = input(title="Long Stop Loss (%)", defval=15, group="Stop Loss Settings") * 0.01
shortLossPerc = input(title="Short Stop Loss (%)", defval=15, group="Stop Loss Settings") * 0.01
// Calculating Stop Loss
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)
// Strategy Entry
if (not na(vrsi))
if (inDateRange and MACDcrossover and coCheck)
strategy.entry("LONG", strategy.long, comment="LONG")
if (inDateRange and MACDcrossunder and cuCheck)
strategy.entry("SHORT", strategy.short, comment="SHORT")
// Submit exit orders based on calculated stop loss price
if (strategy.position_size > 0)
strategy.exit(id="LONG STOP", stop=longStopPrice)
if (strategy.position_size < 0)
strategy.exit(id="SHORT STOP", stop=shortStopPrice)