Amélioration de la stratégie des moyennes mobiles MACD

Auteur:ChaoZhang est là., Date: 2024-01-05 16:11:23 Je suis désolé
Les étiquettes:

img

Résumé

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 logique de la stratégie

La stratégie évalue principalement les quatre conditions suivantes pour décider de l'entrée à long terme:

  1. l'histogramme MACD est supérieur au niveau d'entrée long défini;
  2. Le RSI est supérieur à 50, ce qui indique un état de surachat;
  3. L'EMA à court terme traverse l'EMA à long terme, formant une croix dorée;
  4. Le prix de clôture franchit l'EMA à long terme et est supérieur à l'EMA à long terme plus la fourchette de stop loss ATR.

Lorsque les deux conditions de sortie suivantes sont remplies, la stratégie clôt les positions en stop loss:

  1. l'histogramme MACD est inférieur au niveau de stop loss défini;
  2. L'EMA à court terme passe sous l'EMA à long terme, formant une croix morte.

Ainsi, la stratégie arrête rapidement les pertes et évite d'énormes pertes lors de la prise de profit ou de la retraite.

Analyse des avantages

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:

  1. 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.

  2. La sensibilité de l'indicateur de l'histogramme MACD assure une capture rapide des points d'inflexion.

  3. Les moyennes mobiles filtrent le bruit de marché à court terme et donnent pleinement le jeu à l'effet de l'indicateur.

Risques et solutions

Les principaux risques de cette stratégie sont les suivants:

  1. 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.

  2. 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.

Orientations pour l'amélioration

La stratégie peut être encore optimisée dans les aspects suivants:

  1. Augmenter les filtres supplémentaires pour éviter davantage les faux signaux, par exemple en les combinant avec des indicateurs de volume, de volatilité, etc.

  2. 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.

  3. Optimiser les paramètres de moyenne mobile, tester les différences entre les différents paramètres de longueur.

  4. Recherchez des moyennes mobiles adaptatives, changez de paramètres en fonction des régimes du marché.

Conclusion

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")

Plus de