Version avancée de la stratégie de trading quantitatif à tendance dynamique MACD

MACD MA EMA RSI
Date de création: 2024-11-12 16:27:01 Dernière modification: 2024-11-12 16:27:01
Copier: 0 Nombre de clics: 602
1
Suivre
1617
Abonnés

Version avancée de la stratégie de trading quantitatif à tendance dynamique MACD

Aperçu

Cette stratégie est un système de trading quantitatif avancé basé sur le MACD (Moving Average Convergence Spread Indicator) qui améliore la précision des décisions de négociation grâce à un affichage dynamique en arrière-plan et à une combinaison de paramètres prédéfinis. Le cœur de la stratégie est de capturer les points de conversion des tendances du marché à travers les signaux croisés de l’indicateur MACD et de montrer de manière visuelle l’état du marché.

Principe de stratégie

La stratégie utilise dix paramètres MACD différents, dont les paramètres standard sont les suivants: [12, 26, 9], [short], [5, 35, 5], [long], [19, 39, 9], etc., pour s’adapter à différents environnements de marché et styles de négociation. Lorsque la ligne MACD se trouve à la croisée de la ligne de signal avec l’or, le système génère un signal d’achat et de vente.

Avantages stratégiques

  1. Flexibilité des paramètres: dix combinaisons de paramètres prédéfinis sont disponibles pour s’adapter à différents environnements de marché
  2. Retour visuel clair: affichage intuitif des tendances du marché grâce à des changements dynamiques de couleur de fond
  3. Signal clair: génération d’un signal de vente ou d’achat clair basé sur le croisement MACD
  4. Adaptabilité: utilisation dans différentes périodes de temps
  5. Structure de code claire: utilisation de la structure de commutation des paramètres pour faciliter la maintenance et l’extension

Risque stratégique

  1. Risque de retard: le MACD, en tant qu’indicateur de retard, peut générer des signaux de retard dans des marchés très volatils
  2. Risque de fausse rupture: un faux signal de croisement peut se produire dans les marchés à la barre
  3. Paramètres dépendants: différentes combinaisons de paramètres ont un rendement différent dans différents environnements de marché
  4. Limitation des conditions du marché: risque de mauvaise performance dans un environnement de marché très volatil ou peu liquidité

Orientation de l’optimisation de la stratégie

  1. Introduction d’un filtre de volatilité pour filtrer les signaux de négociation des périodes de forte volatilité du marché
  2. Ajout d’indicateurs de confirmation de tendance tels que RSI ou ATR pour améliorer la fiabilité du signal
  3. Optimisation des paramètres d’adaptation, en ajustant les paramètres MACD en fonction de la dynamique du marché
  4. Augmentation de la fonction de prévention des dommages et de la gestion des risques
  5. Ajout d’analyses de volumes de transactions pour améliorer la fiabilité du signal

Résumer

Il s’agit d’une version avancée de la stratégie MACD, structurée et logiquement claire. L’utilité et l’opérabilité de la stratégie ont été considérablement améliorées grâce à des préréglages multiparamétriques et à des commentaires visuels dynamiques. Bien qu’il y ait des risques inhérents, la stratégie est susceptible de devenir un système de trading robuste après avoir été améliorée grâce à l’orientation d’optimisation fournie.

Code source de la stratégie
/*backtest
start: 2024-10-12 00:00:00
end: 2024-11-11 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Hanzo - Top 10 MACD Strategy", overlay=false)  // MACD in a separate pane

// Define dropdown options for MACD settings
macdOption = input.string(title="Select MACD Setting", 
     defval="Standard (12, 26, 9)", 
     options=["Standard (12, 26, 9)", 
              "Short-Term (5, 35, 5)", 
              "Long-Term (19, 39, 9)", 
              "Scalping (3, 10, 16)", 
              "Cryptocurrency (20, 50, 9)", 
              "Forex (8, 17, 9)", 
              "Conservative (24, 52, 18)", 
              "Trend-Following (7, 28, 7)", 
              "Swing Trading (5, 15, 5)", 
              "Contrarian (15, 35, 5)"])

// MACD setting based on user selection
var int fastLength = 12
var int slowLength = 26
var int signalLength = 9

switch macdOption
    "Standard (12, 26, 9)" => 
        fastLength := 12
        slowLength := 26
        signalLength := 9
    "Short-Term (5, 35, 5)" => 
        fastLength := 5
        slowLength := 35
        signalLength := 5
    "Long-Term (19, 39, 9)" => 
        fastLength := 19
        slowLength := 39
        signalLength := 9
    "Scalping (3, 10, 16)" => 
        fastLength := 3
        slowLength := 10
        signalLength := 16
    "Cryptocurrency (20, 50, 9)" => 
        fastLength := 20
        slowLength := 50
        signalLength := 9
    "Forex (8, 17, 9)" => 
        fastLength := 8
        slowLength := 17
        signalLength := 9
    "Conservative (24, 52, 18)" => 
        fastLength := 24
        slowLength := 52
        signalLength := 18
    "Trend-Following (7, 28, 7)" => 
        fastLength := 7
        slowLength := 28
        signalLength := 7
    "Swing Trading (5, 15, 5)" => 
        fastLength := 5
        slowLength := 15
        signalLength := 5
    "Contrarian (15, 35, 5)" => 
        fastLength := 15
        slowLength := 35
        signalLength := 5

// MACD Calculation
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
macdHist = macdLine - signalLine

// Buy and Sell conditions based on MACD crossovers
enterLong = ta.crossover(macdLine, signalLine)
exitLong = ta.crossunder(macdLine, signalLine)

// Execute buy and sell orders with price labels in the comments
if (enterLong)
    strategy.entry("Buy", strategy.long, comment="Buy at " + str.tostring(close, "#.##"))

if (exitLong)
    strategy.close("Buy", comment="Sell at " + str.tostring(close, "#.##"))

// Plot the signal price using plotchar for buy/sell prices
//plotchar(enterLong ? close : na, location=location.belowbar, color=color.green, size=size.small, title="Buy Price", offset=0)
//plotchar(exitLong ? close : na, location=location.abovebar, color=color.red, size=size.small, title="Sell Price", offset=0)

// Background highlighting based on bullish or bearish MACD
isBullish = macdLine > signalLine
isBearish = macdLine < signalLine

// Change background to green for bullish periods and red for bearish periods
bgcolor(isBullish ? color.new(color.green, 90) : na, title="Bullish Background")
bgcolor(isBearish ? color.new(color.red, 90) : na, title="Bearish Background")

// Plot the MACD and Signal line in a separate pane
plot(macdLine, title="MACD Line", color=color.blue, linewidth=2)
plot(signalLine, title="Signal Line", color=color.orange, linewidth=2)
hline(0, "Zero Line", color=color.gray)
plot(macdHist, title="MACD Histogram", style=plot.style_histogram, color=color.red)