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 = falseRecherche 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.25Filtre 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ètre | Description |
|---|---|
upper_idTexte Obligatoire | Nom de la série pour le canal supérieur. Exemple : upper_id = "kc_up" |
middle_idTexte Obligatoire | Nom de la série pour la ligne médiane. Exemple : middle_id = "kc_mid" |
lower_idTexte Obligatoire | Nom de la série pour le canal inférieur. Exemple : lower_id = "kc_low" |
sourceTexte 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" |
lengthEntier 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) |
multiplierDé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_rangeBoolé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 |
symbolTexte 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. |
timeframeTexte 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 :
| Variable | Description |
|---|---|
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.lengthkc_mid.lengthkc_low.lengthDécimal | Période utilisée pour l’EMA de la ligne médiane et l’EMA du range. |
kc_up.multiplierkc_mid.multiplierkc_low.multiplierDécimal | Multiplicateur appliqué à l’EMA du range. |
kc_up.use_true_rangekc_mid.use_true_rangekc_low.use_true_rangeDécimal | Mode de calcul du range : 1 lorsque le True Range est utilisé, 0 lorsque le bloc utilise high - low. |
kc_up.sourcekc_mid.sourcekc_low.sourceTexte | Nom de la série utilisée pour la ligne médiane EMA. |
kc_up.high_sourcekc_mid.high_sourcekc_low.high_sourceTexte | Nom de la série high utilisée pour calculer le range. |
kc_up.low_sourcekc_mid.low_sourcekc_low.low_sourceTexte | Nom de la série low utilisée pour calculer le range. |
kc_up.close_sourcekc_mid.close_sourcekc_low.close_sourceTexte | Nom de la série close utilisée pour calculer le True Range lorsque use_true_range = true. |
kc_up.symbolkc_mid.symbolkc_low.symbolTexte | Symbole de marché utilisé pour cette sortie. |
kc_up.timeframekc_mid.timeframekc_low.timeframeTexte | 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)etcanal 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.