Les ressources ont été chargées... Je charge...

Stratégie de suivi des tendances sur plusieurs périodes basée sur le MACD d'impulsion et le double croisement des moyennes mobiles

Auteur:ChaoZhang est là., Date: 2024-05-17 15h33:02 Je vous en prie
Les étiquettes:Le MACDLe secteur privéSMAZLEMALe taux d'intérêt- Je vous en prie.

img

Résumé

Cette stratégie utilise divers indicateurs de moyenne mobile, y compris SMMA, SMA, ZLEMA et EMA, et construit un indicateur MACD amélioré (MACD d'impulsion) basé sur eux. Il génère des signaux de trading par le croisement de l'impulsion MACD et de sa ligne de signal.

Principe de stratégie

  1. Calculer le SMMA et le ZLEMA des prix élevés, bas et de fermeture avec une longueur de 34 pour obtenir le MACD d'impulsion (MD).
  2. Calculer la SMA à 9 périodes du MACD d'impulsion sous forme de ligne de signal (SB).
  3. Calculer la différence entre le MACD d'impulsion et la ligne de signal (SH) pour refléter la force de la tendance.
  4. Générer un signal d'achat lorsque le MACD d'impulsion traverse au-dessus de la ligne de signal et fermer la position lorsqu'il traverse en dessous.
  5. Tracez l'histogramme Impulse MACD avec différentes couleurs en fonction de la relation entre le prix, Impulse MACD et le prix haut/bas SMMA pour refléter visuellement la force de la tendance.

Les avantages de la stratégie

  1. L'utilisation de multiples types de moyennes mobiles permet de mieux refléter les tendances du marché.
  2. L'indicateur MACD amélioré (Impulse MACD) tient compte de la position relative des prix et des moyennes mobiles, reflétant ainsi mieux la force de la tendance.
  3. L'introduction de la ligne de signal aide à filtrer certains faux signaux et à améliorer la qualité du signal.
  4. Le tracé du MACD d'impulsion avec différentes couleurs basées sur la force de la tendance facilite le jugement intuitif des mouvements du marché.

Risques stratégiques

  1. Une mauvaise sélection de paramètres peut entraîner des signaux fréquents ou retardés, ce qui nécessite une optimisation en fonction de différents marchés et délais.
  2. La stratégie peut générer plus de faux signaux et causer des pertes sur les marchés instables.
  3. La stratégie ne dispose pas d'un mécanisme de stop-loss et peut faire l'objet de retards importants sur les marchés volatils.

Directions d'optimisation de la stratégie

  1. Introduire des indicateurs d'identification des tendances tels que l'ADX pour ne négocier que lorsque la tendance est claire, ce qui réduit les pertes sur les marchés instables.
  2. Confirmer les signaux de négociation générés avec d'autres indicateurs tels que le RSI et l'ATR pour améliorer la qualité du signal.
  3. Définir des niveaux raisonnables de stop-loss et de take-profit pour contrôler le risque de transaction unique.
  4. Optimiser les paramètres en utilisant des méthodes telles que des algorithmes génétiques pour trouver la combinaison optimale de paramètres.

Résumé

Cette stratégie construit un indicateur MACD amélioré basé sur divers types de moyennes mobiles et génère des signaux de trading par son croisement avec la ligne de signal tout en affichant intuitivement la force de la tendance.


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

//@version=5
strategy("Impulse MACD Strategy [LazyBear]", shorttitle="IMACD_Strategy", overlay=false)

// Function to calculate SMMA
calc_smma(src, len) =>
    var float smma = na
    smma := na(smma[1]) ? ta.sma(src, len) : (smma[1] * (len - 1) + src) / len
    smma

// Function to calculate SMA
	ta.sma(src, len)
    sum = 0.0
    for i = 0 to len - 1
        sum := sum + src[i]
    sum / len

// Function to calculate ZLEMA
calc_zlema(src, length) =>
    var float ema1 = na
    var float ema2 = na
    var float d = na
    ema1 := ta.ema(src, length)
    ema2 := ta.ema(ema1, length)
    d := ema1 - ema2
    ema1 + d

// Function to calculate EMA
calc_ema(src, len) =>
    ema = 0.0
    ema := ta.ema(src, len)
    ema

// Inputs
lengthMA = input(34, title="Length of Moving Average")
lengthSignal = input(9, title="Length of Signal Line")

// Calculations
src = hlc3
hi = calc_smma(high, lengthMA)
lo = calc_smma(low, lengthMA)
mi = calc_zlema(src, lengthMA) 

md = mi > hi ? (mi - hi) : mi < lo ? (mi - lo) : 0
sb = ta.sma(md, lengthSignal)
sh = md - sb
mdc = src > mi ? src > hi ? color.lime : color.green : src < lo ? color.red : color.orange

// Plotting
plot(0, color=color.gray, linewidth=1, title="MidLine")
plot(md, color=mdc, linewidth=2, title="ImpulseMACD", style=plot.style_histogram)
plot(sh, color=color.blue, linewidth=2, title="ImpulseHisto", style=plot.style_histogram)
plot(sb, color=color.maroon, linewidth=2, title="ImpulseMACDCDSignal")

// Execute trades based on signals
if (ta.crossover(md, sb))
    strategy.entry("Buy", strategy.long)
if (ta.crossunder(md, sb))
    strategy.close("Buy")


Relationnée

Plus de