Linear Regression (linreg)
[[linreg]] résume l’évolution des length dernières valeurs de source par la droite qui représente au mieux l’ensemble de cette fenêtre. Le bloc ne renvoie ni la pente ni tous les points de cette droite : il produit une seule série, formée par la valeur de la droite à la position définie par offset sur chaque bougie.
Avec offset = 0, la droite est lue à l’extrémité correspondant à la bougie courante. Un offset positif sélectionne un point plus ancien de la même droite, tandis qu’un offset négatif la prolonge au-delà de cette extrémité. Cette prolongation reste entièrement calculée à partir des valeurs déjà présentes dans la fenêtre : elle ne contient aucune information provenant de bougies futures.
Déclaration du bloc
Une stratégie peut contenir plusieurs blocs [[linreg]]. Chaque bloc produit une série numérique : la valeur de la droite de régression évaluée à l’offset configuré.
Exemples
Configuration minimale
Ce bloc ajuste une régression linéaire sur 20 bougies de la série close et renvoie la valeur de la droite sur la bougie courante (offset = 0 par défaut). Il utilise le symbole et le timeframe principaux définis dans [backtest].
[[linreg]]
id = "linreg"
length = 20Source spécifique
Ce bloc calcule la régression sur la source hlc3 (moyenne de high, low et close) plutôt que sur close.
[[linreg]]
id = "linreg"
source = "hlc3"
length = 100Source issue d’un autre indicateur
Ce bloc ajuste une droite de régression sur la série produite par le bloc rsi, en la lissant sur 10 bougies.
[[rsi]]
id = "rsi"
length = 14
[[linreg]]
id = "rsi_linreg"
source = "rsi"
length = 10Recherche de la longueur optimale
Ce bloc explore une plage de valeurs pour length afin d’identifier la fenêtre la plus performante.
[[linreg]]
id = "linreg"
length.start = 10
length.stop = 100
length.step = 10Application d’un offset
Ce bloc lit la droite de régression 2 bougies avant son extrémité courante. Un offset positif déplace le point d’évaluation vers un point plus ancien de la droite ajustée, produisant une lecture légèrement retardée et plus lisse.
[[linreg]]
id = "linreg"
length = 50
offset = 2Projection avec un offset négatif
Ce bloc évalue la droite de régression une bougie après la bougie courante. Un offset négatif prolonge la droite ajustée au-delà de la fenêtre, transformant l’indicateur en une projection à court terme de la tendance.
[[linreg]]
id = "linreg"
length = 50
offset = -1Recherche de l’offset optimal
Ce bloc explore une plage de valeurs pour offset, d’une lecture vers le passé jusqu’à une projection vers le futur, afin d’identifier la plus pertinente. La plage peut inclure des valeurs négatives.
[[linreg]]
id = "linreg"
length = 50
offset.start = -3
offset.stop = 3Symbole et timeframe dédiés
Dans cette configuration, la régression est calculée sur la série journalière de BINANCE:ETHUSDT, indépendamment du symbole et du timeframe principaux utilisés par le reste de la stratégie. Voir la page Exchanges, Symboles et Timeframes pour les règles d’alignement.
[[linreg]]
id = "linreg"
length = 50
symbol = "BINANCE:ETHUSDT"
timeframe = "D"Paramètres
| Paramètre | Description |
|---|---|
idTexte Obligatoire | Nom unique identifiant la série linreg ; le bloc expose une série numérique portant cet identifiant. |
sourceTexte ou Tableau Optionnel | Série d’entrée utilisée pour le calcul. Formes acceptées : source = "hlc3" ou source = ["close", "hlc3"].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 Obligatoire | Nombre de bougies de la fenêtre de régression ; la droite est ajustée sur ce nombre de valeurs de la source. Doit être ≥ 1. Remarque : avec length = 1, la fenêtre ne contient qu’un seul point, aucune droite ne peut être ajustée, et la série vaut NaN sur chaque bougie.Usage : • Fixe : length = valeur• Grille : – length.start = valeur_minimale– length.stop = valeur_maximale– length.step = valeur (optionnel, par défaut 1) |
offsetEntier Optionnel | Position à laquelle la droite ajustée est lue, comptée à rebours depuis la bougie courante. 0 lit la droite sur la bougie courante ; une valeur positive lit un point plus ancien le long de la droite ; une valeur négative prolonge la droite au-delà de la bougie courante. Peut être négatif.Si offset est omis, la valeur par défaut est 0.Usage : • Fixe : offset = valeur• Grille : – offset.start = valeur_minimale– offset.stop = valeur_maximale– offset.step = valeur (optionnel, par défaut 1) |
symbolTexte ou Tableau Optionnel | Symbole(s) de marché fournissant la série source lorsque source contient des prix standards (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume).Si source mélange des prix standards et des ids d’indicateurs, symbol ne s’applique qu’aux combinaisons fondées sur des prix standards.Si source ne contient que des ids d’indicateurs, symbol est ignoré.Pour le format et les règles d’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
Le bloc linreg expose une série numérique, ses paramètres de configuration et des métadonnées sur la source d’entrée, le symbole et le timeframe. Ces identifiants s’emploient directement dans vos expressions.
Supposons le bloc configuré ainsi :
[[linreg]]
id = "linreg"
source = "close"
length = 20Alors :
| Variable | Description |
|---|---|
linreg ou linreg[0]Décimal | Valeur actuelle de la droite de régression, lue à l’offset configuré. |
linreg[n]Décimal | Valeur de linreg il y a n bougies. |
linreg.lengthDécimal | Longueur de la fenêtre de régression utilisée. |
linreg.offsetDécimal | Offset appliqué. |
linreg.sourceTexte | Nom de la série d’entrée (par exemple close, hlc3, ou l’id d’un autre indicateur). |
linreg.symbolTexte | Symbole à partir duquel les données d’entrée sont lues. |
linreg.timeframeTexte | Timeframe sur lequel le linreg est calculé. |
Notes
- Pendant la phase d’amorçage, les
length - 1premières bougies n’ont pas de fenêtre complète et la série vautNaN. Si une valeur de la fenêtre vautNaN, le résultat de cette bougie vaut égalementNaN. - 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.