Une stratégie RSI combinée avec moyenne mobile et MACD

Auteur:ChaoZhang est là., Date: 2024-02-20 14h28 et 59 min
Les étiquettes:

img

Résumé

Cette stratégie identifie les tendances des prix et prend des décisions d'achat à bas prix en combinant les moyennes mobiles, l'indicateur MACD et l'indicateur RSI. Elle génère des signaux d'achat lorsque la moyenne mobile à court terme dépasse la moyenne mobile à long terme et que le prix de clôture est supérieur à la moyenne mobile à 50 jours. Elle génère des signaux de vente lorsque l'inverse se produit. En outre, la stratégie utilise l'indicateur RSI pour éviter les zones de surachat et de survente, et l'histogramme MACD pour déterminer la tendance à moyen et à long terme.

La logique de la stratégie

Le noyau de cette stratégie repose sur le double système de croisement des moyennes mobiles, qui génère des signaux d'achat et de vente lorsqu'une courte période EMA (3 jours) traverse une longue période EMA (30 jours).

En outre, la stratégie intègre une ligne moyenne mobile de 50 jours pour éviter les transactions fréquentes, en l'utilisant comme filtre pour les signaux de trading.

En outre, l'indicateur RSI identifie les scénarios de surachat (au-dessus de 70) et de survente (au-dessous de 30).

Enfin, l'histogramme MACD est utilisé pour déterminer la tendance à moyen et à long terme du marché. Avec l'histogramme MACD > 0, le fond est tendance haussière, de sorte que les signaux d'achat sont plus fiables. Lorsque l'histogramme MACD < 0, le fond est tendance baissière, de sorte que les signaux d'achat peuvent faire face à des corrections bientôt.

Les avantages

Le plus grand avantage de cette stratégie est l'utilisation combinée de plusieurs indicateurs, ce qui rend chaque décision de trading très confiante et fiable.

Un autre avantage est qu'il combine le trading de tendance et le trading de réversion moyenne. Suivre la tendance est essentiel pour les traders de tendance, mais les stratégies avancées ne seront pas rigides à ce sujet.

Les risques

Les risques majeurs proviennent de chocs soudains des prix dus à des événements d'actualité importants, qui peuvent pénétrer les points de stop loss et entraîner de grosses pertes.

Un autre risque est l'arrêt des retraits temporaires d'un marché haussier à moyen et long terme.

Améliorations

La stratégie peut être optimisée dans les dimensions suivantes:

  1. Optimisation des paramètres pour trouver les combinaisons optimales.

  2. Incorporer plus d'indicateurs comme les bandes de Bollinger et KDJ pour enrichir le modèle.

  3. Testez des mécanismes de stop loss plus avancés tels que le stop loss de suivi et le stop loss de volatilité.

  4. Optimiser certaines parties de la stratégie pour s'adapter à un plus grand nombre de marchés.

Conclusion

En conclusion, en combinant les moyennes mobiles, le RSI et le MACD, cette stratégie parvient à générer des signaux de haute qualité et à éviter les limitations d'indicateurs uniques. Elle effectue chaque transaction en toute confiance en confirmant la tendance.


/*backtest
start: 2023-02-13 00:00:00
end: 2024-02-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy('sachin 3.30 ', overlay=true)

// Input parameters
length = input.int(14, title='RSI Length', minval=1)
overbought = input.int(70, title='RSI Overbought Level', minval=0, maxval=100)
oversold = input.int(30, title='RSI Oversold Level', minval=0, maxval=100)
ema3_length = input(3, title='EMA 3 Length')
ema30_length = input(30, title='EMA 30 Length')
ema50_length = input(50, title='EMA 50 Length')

// Calculate EMAs
ema3 = ta.ema(close, ema3_length)
ema30 = ta.ema(close, ema30_length)
ema50 = ta.ema(close, ema50_length)

// Calculate RSI
rsiValue = ta.rsi(close, length)

// Calculate MACD
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)

var float buyPrice = na

// Buy condition: EMA 3 crosses above EMA 30 and price is above EMA 50
buyCondition = ta.crossover(ema3, ema30) and close > ema50
if (buyCondition)
    buyPrice := close
    strategy.entry('Buy', strategy.long)

// Exit long position when close is below EMA30 and below the low of the previous 3 candles after the buy entry
exitLongCondition = close < ema30 and close < ta.lowest(low, 3) and close < buyPrice
if (exitLongCondition)
    strategy.close('BuyExit')

// Sell condition: EMA 3 crosses below EMA 30 and price is below EMA 50
sellCondition = ta.crossunder(ema3, ema30) and close < ema50
if (sellCondition)
    strategy.entry('Sell', strategy.short)

// Exit short position when close is above EMA30 and above the high of the previous 3 candles after the sell entry
exitShortCondition = close > ema30 and close > ta.highest(high, 3)
if (exitShortCondition)
    strategy.close('SellExit')

// Plot EMAs on the chart
plot(ema3, color=color.new(color.blue, 0), title='EMA 3')
plot(ema30, color=color.new(color.red, 0), title='EMA 30')

// Change color of EMA 50 based on MACD histogram
ema50Color = hist > 0 ? color.new(color.blue, 0) : hist < 0 ? color.new(color.black, 0) : color.new(color.blue, 0)
plot(ema50, color=ema50Color, title='EMA 50 Colored')

// Change color of EMA 30 based on RSI trend
ema30Color = rsiValue > oversold ? color.new(color.green, 0) : rsiValue < overbought ? color.new(color.red, 0) : color.new(color.blue, 0)
plot(ema30, color=ema30Color, title='EMA 30 Colored')

// Highlight Buy and Sell signals on the chart
bgcolor(buyCondition ? color.new(color.green, 90) : na)
bgcolor(sellCondition ? color.new(color.red, 90) : na)

// Plotting Buy and Sell Signals on the Chart until strategy exit
barcolor(strategy.position_size > 0 and rsiValue > overbought ? color.new(color.yellow, 0) : strategy.position_size < 0 and rsiValue < oversold ? color.new(color.black, 0) : na)


Plus de