Chande Momentum Oscillator (cmo)

Le Chande Momentum Oscillator (CMO) mesure l’équilibre entre les variations positives et négatives d’une série sur les bougies récentes. Il produit une valeur comprise entre -100 et +100, sans conserver l’unité de la source.

Une valeur positive signifie que les variations positives dominent sur l’horizon défini par length ; une valeur négative, que les variations négatives dominent. Près de +100, la quasi-totalité du mouvement cumulé s’est faite dans le sens positif ; près de -100, dans le sens négatif. Une valeur proche de 0 correspond à des variations qui se compensent, ou à une série restée inchangée. L’amplitude du CMO exprime ainsi un degré de déséquilibre, et non une distance dans l’unité de la source.

Déclaration du bloc

Une stratégie peut contenir plusieurs blocs [[cmo]]. Chaque bloc génère une série numérique représentant la valeur du CMO.

Exemples

Configuration minimale

Ce bloc calcule le CMO à partir de la source par défaut close. Comme length est omis, le bloc utilise la longueur par défaut 20.

[[cmo]]
id = "cmo"

Configuration fixe personnalisée

Ce bloc utilise une valeur personnalisée pour length.

[[cmo]]
id     = "cmo"
length = 18

Recherche de la longueur optimale

Ce bloc explore une plage de valeurs pour length afin d’identifier la longueur la plus performante.

[[cmo]]
id           = "cmo"
length.start = 10
length.stop  = 30

Recherche des zones de surachat et de survente

Cet exemple combine le bloc [[cmo]] avec deux blocs [[constant]] pour optimiser les seuils de surachat et de survente. La condition devient vraie lorsque le CMO passe au-dessus du seuil overbought ou en dessous du seuil oversold.

[[cmo]]
id = "cmo"

[[constant]]
id    = "overbought"
start = 50
stop  = 70

[[constant]]
id    = "oversold"
start = -70
stop  = -50

[[condition]]
id            = "momentum_extreme"
condition     = "cmo > overbought or cmo < oversold"
next_block_id = "..."

Paramètres

ParamètreDescription
id
 Texte
 Obligatoire
Nom unique pour la série CMO.
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"
length
 Entier
 Optionnel
Fenêtre d’observation, doit être ≥ 2 lorsqu’elle est renseignée.
Si length est omis, la valeur par défaut est 20.

Usage :
• Fixe : length = valeur
• Grille :
 – length.start = valeur_minimale
 – length.stop = valeur_maximale
 – length.step = valeur (optionnel, par défaut 1)
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 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 CMO expose une série numérique et sa longueur, ainsi que la source d’entrée, le symbole et le timeframe.

Supposons le bloc configuré ainsi :

[[cmo]]
id = "cmo"

Alors :

VariableDescription
cmo ou cmo[0]
Décimal
Valeur actuelle du CMO.
cmo[n]
Décimal
Valeur du CMO il y a n bougies.
cmo.length
Décimal
Longueur utilisée.
cmo.source
Texte
Nom de la série d’entrée.
cmo.symbol
Texte
Symbole de marché utilisé.
cmo.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.