Moving Average Convergence Divergence (macd)

[[macd]] compare une moyenne rapide et une moyenne lente calculées sur la même série. La ligne MACD correspond à la différence entre ces moyennes : elle est positive lorsque la moyenne rapide se situe au-dessus de la moyenne lente, négative lorsqu’elle se situe en dessous et nulle lorsqu’elles sont égales. Sa distance à zéro représente ainsi l’ampleur de l’écart entre ces deux lectures de la série.

La ligne Signal est une moyenne mobile de la ligne MACD : elle représente une lecture moyennée de cet écart. L’histogramme correspond à MACD - Signal. Il est positif lorsque la ligne MACD se situe au-dessus de la ligne Signal, négatif lorsqu’elle se situe en dessous et nul lorsqu’elles sont égales. Sa valeur absolue mesure la distance entre les deux lignes : elle augmente lorsqu’elles s’écartent et diminue lorsqu’elles se rapprochent.

Déclaration du bloc

Une stratégie peut contenir plusieurs blocs [[macd]]. Chaque bloc génère une à trois séries numériques : la ligne MACD, la ligne Signal et, si demandée, l’histogramme.

Exemples

Configuration minimale

Ce bloc n’indique aucune source et expose uniquement la ligne MACD. La série close est utilisée par défaut, avec les longueurs classiques 12 pour fast et 26 pour slow.

[[macd]]
macd_id = "macd_line"

Longueurs fixes personnalisées

Ce bloc utilise des valeurs personnalisées pour fast, slow et signal.

[[macd]]
macd_id   = "macd_line"
signal_id = "macd_signal"
hist_id   = "macd_hist"
fast      = 8
slow      = 21
signal    = 7

Recherche des longueurs optimales

Ce bloc explore des plages de valeurs pour fast, slow et signal afin d’identifier la combinaison la plus performante.

[[macd]]
macd_id      = "macd_line"
signal_id    = "macd_signal"
hist_id      = "macd_hist"
fast.start   = 6
fast.stop    = 30
slow.start   = 6
slow.stop    = 30
signal.start = 6
signal.stop  = 12

Source et type de moyenne

Ce bloc illustre l’utilisation d’une autre source que close ainsi que le choix explicite du type de moyenne mobile (SMA) pour la ligne MACD et pour la ligne Signal.

[[macd]]
macd_id     = "macd_line"
signal_id   = "macd_signal"
hist_id     = "macd_hist"
source      = "hlc3"
macd_type   = "sma"
signal_type = "sma"

Filtre de momentum haussier

Cet exemple utilise le MACD comme filtre de confirmation. La condition devient vraie uniquement lorsque la ligne MACD reste au-dessus de zéro et que l’histogramme est positif. Le signal d’entrée ne passe donc que lorsque le momentum reste orienté à la hausse.

[[macd]]
macd_id   = "macd_line"
signal_id = "macd_signal"
hist_id   = "macd_hist"

[[condition]]
id            = "bullish_momentum_filter"
condition     = "macd_line > 0 and macd_hist > 0"
next_block_id = "..."

Paramètres

ParamètreDescription
macd_id
 Texte
 Obligatoire
Identifiant de la série MACD.
signal_id
 Texte
 Optionnel
Identifiant de la série Signal. Si cette clé est définie, la longueur signal devient optionnelle et prend la valeur par défaut 9 si elle est omise.
hist_id
 Texte
 Optionnel
Identifiant de la série Histogramme (nécessite signal_id).
source
 Texte
 ou Tableau
 Optionnel
Série d’entrée utilisée pour le calcul.
Formats acceptés : source = "hl2" ou source = ["close", "hl2"].
Chaque valeur peut être soit une source de prix standard (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume), soit l’id d’un autre indicateur.
Valeur par défaut : "close"
fast
 Entier
 Optionnel
Longueur de la moyenne rapide ; doit être ≥ 2.
Valeur par défaut : 12.

Usage :
• Fixe : fast = valeur
• Grille :
 – fast.start = valeur_minimale
 – fast.stop = valeur_maximale
 – fast.step = valeur (optionnel, par défaut 1)
slow
 Entier
 Optionnel
Longueur de la moyenne lente (doit être > fast).
Valeur par défaut : 26.

Usage :
• Fixe : slow = valeur
• Grille :
 – slow.start = valeur_minimale
 – slow.stop = valeur_maximale
 – slow.step = valeur (optionnel, par défaut 1)
signal
 Entier
 Conditionnel
Longueur de la moyenne appliquée à la ligne MACD ; doit être ≥ 1.
Cette clé est autorisée uniquement si signal_id est défini. Si elle est omise dans ce cas, la valeur par défaut 9 est utilisée.

Usage :
• Fixe : signal = valeur
• Grille :
 – signal.start = valeur_minimale
 – signal.stop = valeur_maximale
 – signal.step = valeur (optionnel, par défaut 1)
macd_type
 Texte
 ou Tableau
 Optionnel
Type(s) de moyenne utilisés pour la ligne MACD (fast et slow). Valeurs possibles : "sma", "ema", "wma", "hma", "dema", "tema", "trima", "smma", "zlema", "rma". Accepte soit une chaîne, soit un tableau pour la recherche par grille. Valeur par défaut : "ema".
signal_type
 Texte
 ou Tableau
 Conditionnel
Type(s) de moyenne utilisés pour la ligne Signal. Même liste de valeurs que macd_type. Accepte une chaîne ou un tableau pour la recherche par grille. Valeur par défaut : "ema". Cette clé est autorisée uniquement si signal_id est défini.
symbol
 Texte
 ou Tableau
 Optionnel
Symbole(s) de marché utilisé(s) lorsque source ne contient que des prix standard (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume).
Si source mélange des prix standard et des identifiants d’indicateurs, symbol s’applique uniquement aux combinaisons basées sur des prix standard.
Si source ne contient que des identifiants d’indicateurs, symbol est ignoré.
Si symbol est omis, le bloc hérite du symbole principal défini dans [backtest].
Pour le format, les tableaux et l’alignement, voir Exchanges, Symboles et Timeframes.
timeframe
 Texte
 ou Tableau
 Optionnel
Timeframe sur lequel cet indicateur est calculé.
Si timeframe est omis, le calcul se fait sur le timeframe principal de la grille défini dans [backtest].
Pour les formats acceptés et les règles d’alignement entre timeframes, voir Exchanges, Symboles et Timeframes.

Variables disponibles

Vous pouvez utiliser directement les identifiants ci‑dessous dans vos expressions. Le bloc MACD expose jusqu’à trois séries numériques (ligne MACD, ligne Signal, Histogramme), leurs longueurs et types de moyennes, ainsi que la source d’entrée, le symbole et le timeframe.

Supposons le bloc configuré ainsi :

[[macd]]
macd_id   = "macd_line"
signal_id = "macd_signal"
hist_id   = "macd_hist"

Alors :

VariableDescription
macd_line ou
macd_line[0]
Décimal
Valeur actuelle de la ligne MACD.
macd_line[n]
Décimal
Valeur de la MACD il y a n bougies.
macd_signal ou
macd_signal[0]
Décimal
Valeur actuelle de la ligne Signal.
macd_signal[n]
Décimal
Valeur du Signal il y a n bougies.
macd_hist ou
macd_hist[0]
Décimal
Valeur actuelle de l’Histogramme.
macd_hist[n]
Décimal
Valeur de l’Histogramme il y a n bougies.
macd_line.fast_len
Décimal
Longueur de la moyenne rapide.
macd_line.slow_len
Décimal
Longueur de la moyenne lente.
macd_line.signal_len
Décimal
Longueur de la moyenne utilisée pour le signal (disponible si une série Signal est définie).
macd_line.type
Texte
Type de moyenne utilisé pour la ligne MACD ("ema", "sma", etc.).
macd_signal.type
Texte
Type de moyenne utilisé pour la ligne Signal (si signal_id est défini).
macd_line.source
macd_signal.source
macd_hist.source
Texte
Nom de la série d’entrée.
macd_line.symbol
macd_signal.symbol
macd_hist.symbol
Texte
Symbole de marché utilisé.
macd_line.timeframe
macd_signal.timeframe
macd_hist.timeframe
Texte
Timeframe utilisé.

Notes

  • Les variables numériques se combinent librement (arithmétique, comparaisons, opérateurs logiques).
  • Les variables textuelles sont des chaînes destinées aux comparaisons d’égalité/inégalité uniquement.