Il s'agit d'une stratégie combinée utilisant le RSI, le MACD et les moyennes mobiles. Il intègre les signaux de surachat/survente du RSI, la sensibilité du MACD et l'effet indicateur des moyennes mobiles lors de la détermination des points d'entrée.
La stratégie évalue principalement les quatre conditions suivantes pour décider de l'entrée à long terme:
Lorsque les deux conditions de sortie suivantes sont remplies, la stratégie clôt les positions en stop loss:
Ainsi, la stratégie arrête rapidement les pertes et évite d'énormes pertes lors de la prise de profit ou de la retraite.
L'avantage majeur de cette stratégie réside dans l'utilisation combinée d'indicateurs, en mettant pleinement à profit les mérites de chaque indicateur:
L'application du RSI évite les pertes de frais de transaction causées par l'ouverture répétée de positions sur les marchés à plage.
La sensibilité de l'indicateur de l'histogramme MACD assure une capture rapide des points d'inflexion.
Les moyennes mobiles filtrent le bruit de marché à court terme et donnent pleinement le jeu à l'effet de l'indicateur.
Les principaux risques de cette stratégie sont les suivants:
Le risque de retracement élevé. Le plus grand risque de moyenne mobile comme les stratégies de suivi de tendance est un grand retrait causé par l'inversion de tendance. Cela peut être contrôlé activement par le biais de la dimensionnement de la position, le stop loss, etc.
Difficulté d'optimisation des paramètres. Les stratégies combinées à plusieurs indicateurs ont une plus grande difficulté dans le réglage et l'optimisation des paramètres. Des méthodes telles que la marche vers l'avant, l'algorithme génétique peuvent être adoptées pour des paramètres optimisés.
La stratégie peut être encore optimisée dans les aspects suivants:
Augmenter les filtres supplémentaires pour éviter davantage les faux signaux, par exemple en les combinant avec des indicateurs de volume, de volatilité, etc.
Différences de paramètres d'essai pour un plus grand nombre de produits, ajustement des paramètres pour adapter davantage de variétés.
Optimiser les paramètres de moyenne mobile, tester les différences entre les différents paramètres de longueur.
Recherchez des moyennes mobiles adaptatives, changez de paramètres en fonction des régimes du marché.
En conclusion, cette stratégie est une version optimisée typique de la moyenne mobile et de la stratégie de suivi de tendance. Elle absorbe les forces des indicateurs traditionnels tels que le MACD et le RSI dans les aspects de l'entrée en temps et de l'arrêt des pertes. Les prochaines étapes pourraient être l'amélioration des perspectives telles que l'optimisation des paramètres et le contrôle des risques pour rendre la stratégie plus robuste et adaptable à plus de produits, ce qui entraîne une plus grande stabilité.
/*backtest start: 2022-12-29 00:00:00 end: 2024-01-04 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved RSI MACD Strategy with Moving Averages", overlay=true) // Inputs src = input(close, title="RSI Source") // RSI Settings lengthRSI = input.int(14, minval=1) // Stop Loss Settings stopLossPct = input.float(0.09, title="Stop Loss Percentage") takeProfitPct = input.float(0.15, title="Take Profit Percentage") // MACD Settings fastlen = input(12) slowlen = input(26) siglen = input(9) // Strategy Settings longEntry = input(0, title="Long Entry Level") exitLevel = input(0, title="Exit Level") // EMA Settings emaShortLength = input(8, title="Short EMA Length") emaLongLength = input(21, title="Long EMA Length") atrMultiplier = input.float(2, title="atrMultiplier") atrLength = input.int(20, title="atrLength") // Indicators rsi1 = ta.rsi(src, lengthRSI) [macd, signal, hist] = ta.macd(src, fastlen, slowlen, siglen) // Calculate EMAs emaShort = ta.ema(src, emaShortLength) emaLong = ta.ema(src, emaLongLength) // Calculate ATR atr = ta.atr(atrLength) // Variables var bool canEnterLong = na // Strategy conditions longCondition = hist > longEntry and rsi1 > 50 and emaShort > emaLong and close > emaLong + atrMultiplier * atr // Entries and Exits if hist < exitLevel and emaShort < emaLong canEnterLong := true strategy.close("Long") // Store last entry price var lastEntryPrice = float(na) var lastEntryPrice2 = float(na) if longCondition strategy.entry("Long", strategy.long) canEnterLong := false lastEntryPrice := close if lastEntryPrice < close lastEntryPrice := close // Calculate Stop Loss and Take Profit Levels based on last entry price stopLossLevel = lastEntryPrice * (1 - stopLossPct) // Check for stop loss and take profit levels and close position if triggered if (strategy.position_size > 0) last_buy = strategy.opentrades[0] if (close < stopLossLevel) strategy.close("Long", comment="Stop Loss Triggered") if (close * (1 - takeProfitPct) > strategy.opentrades.entry_price(strategy.opentrades - 1) ) strategy.close("Long", comment="Take Profit Triggered")