Keltner Channels (kc)

[[kc]] produit trois séries : une ligne médiane et deux bandes qui forment une enveloppe adaptative autour d’elle. La ligne médiane est une moyenne mobile exponentielle de source ; elle décrit le niveau lissé de cette série. Les bandes supérieure et inférieure restent à égale distance de ce centre.

L’écartement des bandes suit l’amplitude récente des bougies : il augmente lorsque cette amplitude s’élève et diminue lorsqu’elle se réduit. length détermine l’horizon de lissage du centre et de l’écartement, tandis que multiplier règle la distance des bandes. Le paramètre use_true_range choisit entre le True Range, qui tient compte des écarts avec la clôture précédente, et la seule étendue high - low de la bougie.

Déclaration du bloc

Une stratégie peut contenir plusieurs blocs [[kc]]. Chaque bloc génère trois séries de valeurs : canal supérieur, ligne médiane et canal inférieur. Chaque série est identifiée via les clés upper_id, middle_id et lower_id.

Exemples

Configuration minimale

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

[[kc]]
upper_id  = "kc_up"
middle_id = "kc_mid"
lower_id  = "kc_low"

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.

[[kc]]
upper_id       = "kc_up"
middle_id      = "kc_mid"
lower_id       = "kc_low"
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 performante.

[[kc]]
upper_id  = "kc_up"
middle_id = "kc_mid"
lower_id  = "kc_low"

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

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

Filtre de cassure de canal

Cet exemple utilise la bande supérieure comme filtre de cassure. A chaque bougie, le bloc [[condition]] ne laisse la stratégie passer au bloc suivant que lorsque close > kc_up, c’est-à-dire lorsque le prix clôture au-dessus du canal supérieur.

[[kc]]
upper_id  = "kc_up"
middle_id = "kc_mid"
lower_id  = "kc_low"

[[condition]]
id            = "channel_breakout"
condition     = "close > kc_up"
next_block_id = "..."

Symbole et timeframe dédiés

Ce bloc Keltner Channels 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.

[[kc]]
upper_id   = "kc_up"
middle_id  = "kc_mid"
lower_id   = "kc_low"
symbol     = "BINANCE:ETHUSDT"
timeframe  = "D"

Paramètres

ParamètreDescription
upper_id
 Texte
 Obligatoire
Nom de la série pour le canal supérieur.
Exemple : upper_id = "kc_up"
middle_id
 Texte
 Obligatoire
Nom de la série pour la ligne médiane.
Exemple : middle_id = "kc_mid"
lower_id
 Texte
 Obligatoire
Nom de la série pour le canal inférieur.
Exemple : lower_id = "kc_low"
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 pour calculer les bandes supérieure et inférieure ; 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

Vous pouvez utiliser directement les identifiants ci-dessous dans vos expressions. Le bloc Keltner Channels expose trois séries numériques (supérieure, médiane, inférieure), leurs 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 :

[[kc]]
upper_id  = "kc_up"
middle_id = "kc_mid"
lower_id  = "kc_low"

Alors :

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

Notes

  • Les bandes sont calculées symétriquement autour de la ligne médiane : canal supérieur = médiane + multiplier × EMA(range) et canal inférieur = médiane - multiplier × EMA(range).
  • 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.