Croisement de moyennes mobiles multiples combiné à une stratégie de trading avec indicateur de momentum

EMA RSI MACD SL TP
Date de création: 2024-12-05 16:37:24 Dernière modification: 2024-12-05 16:37:24
Copier: 0 Nombre de clics: 511
1
Suivre
1617
Abonnés

Croisement de moyennes mobiles multiples combiné à une stratégie de trading avec indicateur de momentum

Aperçu

Cette stratégie est un système de trading quantitatif qui combine plusieurs indices de moyenne mobile (EMA), d’indice de force relative (RSI) et d’indicateur de dispersion de tendance des moyennes mobiles (MACD). La stratégie forme un cadre de décision de trading complet grâce à la combinaison de plusieurs indicateurs techniques. La stratégie utilise les quatre courbes EMA des 10, 20, 50 et 100 jours comme principal outil de jugement de la tendance, et combine le RSI et le MACD comme indicateur de confirmation auxiliaire, tout en définissant des arrêts et des arrêts pour contrôler le risque.

Principe de stratégie

La logique fondamentale de la stratégie repose sur les éléments clés suivants :

  1. Système de ligne moyenne: un système de jugement de tendance est construit à l’aide de 4 EMA ((10/20/50/100), les courts courts courts comprennent les EMA de 10 et 20 jours et les courts courts courts de 50 et 100 jours.
  2. Signaux d’entrée: pour faire plus, il faut satisfaire à l’EMA à court terme pour traverser à la hausse l’EMA à long terme, tandis que le RSI est supérieur à 50 et que le MACD traverse la ligne de signal; pour faire du short, il faut l’inverse.
  3. Gestion des risques: 1,5% de stop-loss et 3% de stop-loss sont mis en place, formant ainsi un mécanisme complet de gestion des fonds.
  4. Système de confirmation: utilise le RSI et le MACD comme outils de confirmation de tendance pour améliorer la précision des transactions.

Avantages stratégiques

  1. Mécanisme de confirmation multiple: Réduction significative des faux signaux par la triple vérification de la ligne de croix, RSI et MACD.
  2. Un contrôle parfait des risques: avec un paramètre de stop-loss bien défini, le risque de chaque transaction peut être contrôlé efficacement.
  3. Capacité de suivi des tendances: grâce à un système de plusieurs lignes de mesure, il est possible de mieux saisir les tendances du marché.
  4. La flexibilité des paramètres: les paramètres de chaque indicateur peuvent être ajustés en fonction des différentes conditions du marché.
  5. Opérations systématisées: la logique stratégique est claire et les transactions sont entièrement programmées.

Risque stratégique

  1. Risque de marché instable : de faux signaux peuvent fréquemment être générés dans un marché latéral et instable.
  2. Risque de retard: le système de ligne moyenne présente un certain retard et peut manquer le meilleur moment d’entrée.
  3. Sensitivité des paramètres: les différentes combinaisons de paramètres peuvent entraîner des différences importantes dans les performances de la stratégie.
  4. Dépendance des conditions du marché: la stratégie fonctionne mieux dans les marchés où la tendance est évidente, mais peut être moins efficace dans d’autres environnements.

Orientation de l’optimisation de la stratégie

  1. Ajustement des paramètres dynamiques: les périodes de la ligne moyenne et les seuils du RSI peuvent être ajustés en fonction de la dynamique des fluctuations du marché.
  2. Identification de l’environnement de marché: ajout d’un module de jugement de l’environnement de marché, permettant d’utiliser différentes stratégies de négociation dans différentes conditions de marché.
  3. Optimisation des arrêts de perte: un mécanisme de suivi des arrêts de perte peut être introduit pour mieux protéger les bénéfices.
  4. Gestion des positions: ajout d’un module dynamique de gestion des positions, afin d’ajuster le ratio de position en fonction du risque du marché.
  5. Filtrage du signal: d’autres indicateurs tels que le trafic peuvent être ajoutés comme conditions de filtrage auxiliaires.

Résumer

Il s’agit d’une stratégie de négociation quantifiée conçue de manière rationnelle et logique. Grâce à l’utilisation combinée de multiples indicateurs techniques, elle permet à la fois de capturer efficacement les tendances du marché et dispose d’un mécanisme de contrôle du risque parfait.

Code source de la stratégie
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-04 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("4 EMA Strategy with RSI & MACD", shorttitle="4 EMA + RSI + MACD", overlay=true)

// Input EMA periods
ema1 = input(10, title="EMA 1")
ema2 = input(20, title="EMA 2")
ema3 = input(50, title="EMA 3")
ema4 = input(100, title="EMA 4")

// Input RSI & MACD settings
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="RSI Overbought")
rsiOversold = input(30, title="RSI Oversold")
macdFast = input(12, title="MACD Fast Length")
macdSlow = input(26, title="MACD Slow Length")
macdSignal = input(9, title="MACD Signal Length")

// Stop Loss and Take Profit Inputs
stopLossPct = input.float(1.5, title="Stop Loss %") / 100
takeProfitPct = input.float(3, title="Take Profit %") / 100

// Calculate EMAs
ema_1 = ta.ema(close, ema1)
ema_2 = ta.ema(close, ema2)
ema_3 = ta.ema(close, ema3)
ema_4 = ta.ema(close, ema4)

// Calculate RSI
rsi = ta.rsi(close, rsiLength)

// Calculate MACD
[macdLine, signalLine, _] = ta.macd(close, macdFast, macdSlow, macdSignal)

// Plot EMAs
plot(ema_1, color=color.blue, title="EMA 10")
plot(ema_2, color=color.green, title="EMA 20")
plot(ema_3, color=color.orange, title="EMA 50")
plot(ema_4, color=color.red, title="EMA 100")

// Entry Conditions
longCondition = ta.crossover(ema_1, ema_4) and ta.crossover(ema_2, ema_3) and rsi > 50 and macdLine > signalLine
shortCondition = ta.crossunder(ema_1, ema_4) and ta.crossunder(ema_2, ema_3) and rsi < 50 and macdLine < signalLine

// Declare Stop Loss and Take Profit Variables
var float stopLossPrice = na
var float takeProfitPrice = na
var line stopLossLine = na
var line takeProfitLine = na

// Long Trade
if (longCondition)
    strategy.entry("Buy", strategy.long)
    stopLossPrice := strategy.position_avg_price * (1 - stopLossPct)
    takeProfitPrice := strategy.position_avg_price * (1 + takeProfitPct)
    // stopLossLine := line.new(bar_index, stopLossPrice, bar_index + 1, stopLossPrice, color=color.red, width=2, style=line.style_dotted)
    // takeProfitLine := line.new(bar_index, takeProfitPrice, bar_index + 1, takeProfitPrice, color=color.green, width=2, style=line.style_dotted)

// Short Trade
if (shortCondition)
    strategy.entry("Sell", strategy.short)
    stopLossPrice := strategy.position_avg_price * (1 + stopLossPct)
    takeProfitPrice := strategy.position_avg_price * (1 - takeProfitPct)
    // stopLossLine := line.new(bar_index, stopLossPrice, bar_index + 1, stopLossPrice, color=color.red, width=2, style=line.style_dotted)
    // takeProfitLine := line.new(bar_index, takeProfitPrice, bar_index + 1, takeProfitPrice, color=color.green, width=2, style=line.style_dotted)

// Clear Lines on Trade Exit
// if (strategy.position_size == 0)
//     line.delete(stopLossLine)
//     line.delete(takeProfitLine)

// Exit Trades
if (strategy.position_size > 0)
    strategy.exit("Sell", from_entry="Buy", stop=stopLossPrice, limit=takeProfitPrice)

if (strategy.position_size < 0)
    strategy.exit("Cover", from_entry="Sell", stop=stopLossPrice, limit=takeProfitPrice)