Keltner Channels Width (kcw)

[[kcw]] condense l’enveloppe des Keltner Channels en une seule série : la distance entre la bande supérieure et la bande inférieure, divisée par leur ligne médiane. Lorsque cette ligne médiane et l’amplitude des bandes utilisent des unités compatibles, typiquement avec une source de prix positive, une valeur élevée décrit un canal large relativement à son niveau central, tandis qu’une valeur faible décrit un canal resserré. La série mesure donc l’écartement de l’enveloppe, et non la position du prix à l’intérieur du canal.

Dans ce cas, la valeur produite se lit comme un ratio, pas comme un pourcentage affiché : 0.025 signifie que la largeur du canal représente 2.5 % de la ligne médiane. Cette lecture relative retire l’effet du niveau absolu de la série de prix. Lorsque source utilise une autre unité, le quotient ne possède plus cette interprétation relative habituelle.

Déclaration du bloc

Une stratégie peut contenir plusieurs blocs [[kcw]]. Chaque bloc produit une seule série numérique, identifiée par id.

Le bloc lit source pour calculer la ligne médiane. Il lit aussi high, low et close pour calculer le range des Keltner Channels. Lorsque use_true_range = false, close reste exposé comme source interne, mais le range utilisé est high - low.

Exemples

Configuration minimale

Ce bloc calcule la largeur des Keltner Channels avec les valeurs par défaut du bloc, soit source = "close", length = 20, multiplier = 2.0 et use_true_range = true.

[[kcw]]
id = "kcw"

Configuration fixe personnalisée

Ce bloc utilise hl2 pour la ligne médiane, une fenêtre de 14 bougies, un multiplicateur de 1.5, et le range simple high - low au lieu du True Range.

[[kcw]]
id             = "kcw"
source         = "hl2"
length         = 14
multiplier     = 1.5
use_true_range = false

Recherche de la période et du multiplicateur optimaux

Ce bloc explore des plages de valeurs pour length et multiplier afin d’identifier la combinaison la plus pertinente pour mesurer les phases d’expansion ou de contraction du canal.

[[kcw]]
id = "kcw"

length.start = 10
length.stop  = 30
length.step  = 1

multiplier.start = 1.0
multiplier.stop  = 3.0
multiplier.step  = 0.25

Filtre de volatilité

Cet exemple utilise kcw comme filtre de volatilité. Le bloc [[constant]] définit un seuil nommé kcw_threshold, dont la valeur varie de 0.01 à 0.04 pendant le grid search. A chaque bougie, le bloc [[condition]] ne laisse la stratégie passer au bloc suivant que lorsque kcw > kcw_threshold, c’est-à-dire lorsque le canal est suffisamment large par rapport à sa ligne médiane.

[[kcw]]
id = "kcw"

[[constant]]
id    = "kcw_threshold"
start = 0.01
stop  = 0.04
step  = 0.005

[[condition]]
id            = "volatility_filter"
condition     = "kcw > kcw_threshold"
next_block_id = "..."

Symbole et timeframe dédiés

Ce bloc Keltner Channels Width utilise les bougies journalières de BINANCE:ETHUSDT. La ligne médiane et les prix high, low et close nécessaires au range sont extraits de ce symbole et de ce timeframe, indépendamment du symbole et du timeframe principaux définis dans [backtest]. Voir la page Exchanges, Symboles et Timeframes pour les règles d’alignement.

[[kcw]]
id        = "kcw"
symbol    = "BINANCE:ETHUSDT"
timeframe = "D"

Paramètres

ParamètreDescription
id
 Texte
 Obligatoire
Nom unique identifiant la série Keltner Channels Width ; le bloc expose une série numérique portant cet identifiant.
source
 Texte
 ou Tableau
 Optionnel
Série d’entrée utilisée pour calculer la ligne médiane EMA.
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
Période utilisée pour l’EMA de la ligne médiane et l’EMA du range ; doit être supérieure ou égale à 1. Valeur par défaut : 20.

Usage :
• Fixe : length = valeur avec valeur >= 1
• Grille :
 – length.start = valeur_minimale avec valeur_minimale >= 1
 – length.stop = valeur_maximale
 – length.step = valeur (optionnel, par défaut 1)
multiplier
 Décimal
 Optionnel
Multiplicateur appliqué à l’EMA du range avant de calculer la largeur du canal ; doit être strictement supérieur à 0. Valeur par défaut : 2.0.

Usage :
• Fixe : multiplier = 2.0
• Grille :
 – multiplier.start = valeur_minimale avec valeur_minimale > 0
 – multiplier.stop = valeur_maximale
 – multiplier.step = valeur (optionnel, par défaut 1)
use_true_range
 Booléen
 Optionnel
Choix du range utilisé pour l’écartement du canal.
Si true, le bloc utilise le True Range. Si false, il utilise high - low.
Valeur par défaut : true
symbol
 Texte
 ou Tableau
 Optionnel
Symbole(s) de marché utilisé(s) pour les prix high, low et close nécessaires au range, et pour source lorsque source contient des prix standard.
Si source référence un autre indicateur, symbol ne remplace pas cette série source ; il continue toutefois à s’appliquer aux prix high, low et close utilisés pour l’écartement du canal.
S’il 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

Le bloc Keltner Channels Width expose une série numérique, ses paramètres, la série d’entrée de la ligne médiane, les sources de prix utilisées pour le range, le symbole et le timeframe.

Supposons le bloc configuré ainsi :

[[kcw]]
id = "kcw"

Alors :

VariableDescription
kcw ou kcw[0]
Décimal
Valeur actuelle de la largeur relative des Keltner Channels.
kcw[n]
Décimal
Valeur de la largeur relative il y a n bougies.
kcw.length
Décimal
Période utilisée pour l’EMA de la ligne médiane et l’EMA du range.
kcw.multiplier
Décimal
Multiplicateur appliqué à l’EMA du range.
kcw.use_true_range
Décimal
Mode de calcul du range : 1 lorsque le True Range est utilisé, 0 lorsque le bloc utilise high - low.
kcw.source
Texte
Nom de la série utilisée pour la ligne médiane EMA.
kcw.high_source
Texte
Nom de la série high utilisée pour calculer le range.
kcw.low_source
Texte
Nom de la série low utilisée pour calculer le range.
kcw.close_source
Texte
Nom de la série close utilisée pour calculer le True Range lorsque use_true_range = true.
kcw.symbol
Texte
Symbole de marché utilisé pour cette sortie.
kcw.timeframe
Texte
Timeframe utilisé pour cette sortie.

Notes

  • La largeur relative est calculée par (canal supérieur - canal inférieur) / ligne médiane.
  • Lorsque la ligne médiane vaut 0, la valeur de la série n’est pas disponible (NaN).
  • Lorsque la ligne médiane est négative, le ratio est négatif et la lecture habituelle d’une largeur positive ne s’applique pas directement.
  • L’amplitude des bandes provient des prix high et low, ainsi que de close lorsque use_true_range = true, tandis que la ligne médiane provient de source. Si source est le volume ou un autre indicateur exprimé dans une unité différente, le quotient mélange des unités incompatibles et ne peut pas être interprété comme une largeur relative sans dimension ni comme un pourcentage.
  • 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.