Stratégie long-short combinant RSI et MACD

RSI MACD
Date de création: 2024-05-17 11:04:03 Dernière modification: 2024-05-17 11:04:03
Copier: 0 Nombre de clics: 778
1
Suivre
1617
Abonnés

Stratégie long-short combinant RSI et MACD

Aperçu

Cette stratégie combine deux indicateurs techniques, l’indice de force relative (RSI) et l’indice de dispersion des moyennes mobiles (MACD), et utilise l’RSI pour juger de la survente et de la survente, et le MACD pour juger de la direction de la tendance, pour former un ensemble complet de stratégie multichannel. Lorsque l’RSI est en survente, il émet un signal de vente, le MACD croise la ligne rapide et lente vers le haut et se stabilise; lorsque le RSI est en survente, il émet un signal d’achat, le MACD croise la ligne rapide et lente vers le bas et se stabilise.

Principe de stratégie

  1. Pour calculer le RSI, voir sur-achat et sur-vente:
    • Lorsque le RSI est supérieur à 70 et traverse la ligne 70 de haut en bas, un signal de vente est émis.
    • Un signal d’achat est émis lorsque le RSI est inférieur à 30 et traverse la ligne 30 de bas en haut
  2. Pour calculer l’indicateur MACD et déterminer la direction de la tendance:
    • Lorsque la ligne rapide du MACD traverse la ligne lente de bas en haut, le signal de vente de position est émis
    • Lorsque la ligne rapide MACD traverse la ligne lente de haut en bas, un signal d’achat de position est émis
  3. Réglage du point d’arrêt:
    • Calculer la hausse et la baisse moyennes de la variété en prenant la moitié comme point d’arrêt

L’indicateur RSI permet de détecter les surachats et les survente et intervient au début du retournement de la tendance. L’indicateur MACD permet de détecter la direction de la tendance et de mieux saisir la tendance. Les deux indicateurs se complètent et forment un système de négociation complet.

Avantages stratégiques

  1. La combinaison de deux stratégies de survente et de suivi de la tendance permet d’intervenir au début de l’inversion de la tendance et de se libérer en temps opportun après la formation de la tendance, évitant ainsi les pertes causées par des chocs répétés.
  2. Le paramètre du point de rupture est basé sur les caractéristiques de volatilité de la variété, permettant de contrôler les retraits et d’améliorer l’efficacité de l’utilisation des fonds.
  3. La logique du code est claire, la programmation fonctionnelle est utilisée, il est facile à comprendre et à optimiser.

Risque stratégique

  1. Le choix des paramètres RSI et MACD a un impact significatif sur la performance de la stratégie et peut nécessiter une optimisation des paramètres pour différentes variétés et périodes.
  2. La stratégie peut subir un retrait plus important en cas d’extrême événement du marché, comme un changement rapide de tendance causé par un événement soudain.
  3. Les stratégies peuvent être moins performantes dans les marchés en crise, avec des transactions plus fréquentes et des coûts de transaction plus élevés.

Orientation de l’optimisation de la stratégie

  1. Optimiser les paramètres du RSI et du MACD pour trouver la combinaison de paramètres la plus adaptée à la variété et au cycle actuels, améliorer la stabilité et la rentabilité de la stratégie.
  2. L’ajout de conditions de filtrage supplémentaires, telles que le volume de transactions, la volatilité, etc., réduit la fréquence des transactions et améliore la qualité du signal.
  3. Introduction d’un module de gestion des positions, permettant d’ajuster les positions en fonction des tendances du marché et de la dynamique de leur propre performance, et de contrôler les retraits.
  4. Il peut être combiné avec d’autres stratégies telles que le suivi des tendances, la répétition des moyennes, etc. pour former un ensemble de stratégies multiples et améliorer l’adaptabilité des stratégies.

Résumer

Cette stratégie permet d’évaluer la situation de survente et de survente par le RSI et la direction de la tendance par le MACD, formant ainsi un système complet de négociation multi-zones. La logique de la stratégie est claire, les avantages sont évidents, mais il existe également un certain risque.

Code source de la stratégie
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="RSI & MACD Strategy", shorttitle="RSI & MACD", overlay=true)

// Définition des entrées
rsi_length = 14
rsi_overbought = 70
rsi_oversold = 30
macd_fast_length = 12
macd_slow_length = 26
macd_signal_length = 9

// Fonction pour calculer le RSI
calculate_rsi(source, length) =>
    price_change = ta.change(source)
    up = ta.rma(price_change > 0 ? price_change : 0, length)
    down = ta.rma(price_change < 0 ? -price_change : 0, length)
    rs = up / down
    rsi = 100 - (100 / (1 + rs))
    rsi

// Fonction pour calculer le MACD
calculate_macd(source, fast_length, slow_length, signal_length) =>
    fast_ma = ta.ema(source, fast_length)
    slow_ma = ta.ema(source, slow_length)
    macd = fast_ma - slow_ma
    signal = ta.ema(macd, signal_length)
    hist = macd - signal
    [macd, signal, hist]

// Calcul des indicateurs
rsi_value = calculate_rsi(close, rsi_length)
[macd_line, signal_line, _] = calculate_macd(close, macd_fast_length, macd_slow_length, macd_signal_length)

// Conditions d'entrée et de sortie
// Entrée en vente : RSI passe de >= 70 à < 70
sell_entry_condition = ta.crossunder(rsi_value, rsi_overbought)

// Sortie en vente : MACD fast MA croise au-dessus de slow MA
sell_exit_condition = ta.crossover(macd_line, signal_line)

// Entrée en achat : RSI passe de <= 30 à > 30
buy_entry_condition = ta.crossover(rsi_value, rsi_oversold)

// Sortie en achat : MACD fast MA croise en-dessous de slow MA
buy_exit_condition = ta.crossunder(macd_line, signal_line)

// Affichage des signaux sur le graphique
plotshape(series=sell_entry_condition, title="Sell Entry", location=location.belowbar, color=color.red, style=shape.triangleup, size=size.small)
plotshape(series=sell_exit_condition, title="Sell Exit", location=location.abovebar, color=color.green, style=shape.triangledown, size=size.small)
plotshape(series=buy_entry_condition, title="Buy Entry", location=location.abovebar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(series=buy_exit_condition, title="Buy Exit", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small)

// Entrées et sorties de la stratégie
if (sell_entry_condition)
    strategy.entry("Short", strategy.short)
    
if (sell_exit_condition)
    strategy.close("Short")

if (buy_entry_condition)
    strategy.entry("Long", strategy.long)
    
if (buy_exit_condition)
    strategy.close("Long")