Correlation
[[correlation]] mesure la relation linéaire entre deux séries numériques sur une fenêtre donnée. Il indique dans quelle mesure les variations de source1 et source2, observées par rapport à leur moyenne sur cette fenêtre, tendent à se produire ensemble.
La corrélation est exprimée sur une échelle de -1 à +1. Une valeur proche de +1 indique que les deux séries varient globalement dans le même sens. Une valeur proche de -1 indique qu’elles varient en sens opposé. Une valeur proche de 0 signifie qu’aucune relation linéaire nette ne ressort sur la fenêtre observée.
Déclaration du bloc
Une stratégie peut contenir plusieurs blocs [[correlation]]. Chaque bloc produit une série numérique : la corrélation entre source1 et source2.
Exemples
Configuration minimale
Ce bloc calcule la corrélation sur le symbole et le timeframe principaux définis dans [backtest].
[[correlation]]
id = "corr"
source1 = "close"
source2 = "open"
length = 20Recherche de la longueur de fenêtre optimale
Ce bloc explore une plage de valeurs pour length afin d’identifier la longueur de fenêtre la plus performante, en corrélant close et open.
[[correlation]]
id = "corr"
source1 = "close"
source2 = "open"
length.start = 20
length.stop = 80
length.step = 10Timeframe dédié
Ce bloc calcule la corrélation entre close et open sur un timeframe spécifique, indépendamment du timeframe principal de la grille. Voir la page Exchanges, Symboles et Timeframes pour les règles d’alignement entre timeframes.
[[correlation]]
id = "corr"
source1 = "close"
source2 = "open"
length = 50
timeframe = "D"Corrélation entre deux symboles
Pour corréler deux marchés distincts, définissez d’abord une série par symbole, puis utilisez leurs identifiants comme source1 et source2. Ici, chaque bloc [[price]] lit un symbole différent, et le bloc [[correlation]] mesure ensuite la relation entre ces deux séries sur le timeframe 4 heures.
[[price]]
id = "btc_close"
symbol = "BINANCE:BTCUSDT"
timeframe = "240"
[[price]]
id = "eth_close"
symbol = "BINANCE:ETHUSDT"
timeframe = "240"
[[correlation]]
id = "corr_cross_symbol"
source1 = "btc_close"
source2 = "eth_close"
length = 50
timeframe = "240"Corrélation entre un prix et une moyenne mobile
Vous pouvez également corréler une série de prix et une série dérivée. Ici, le bloc mesure la relation entre close et une moyenne mobile exponentielle calculée sur cette même série.
[[moving_average]]
id = "ma"
type = "ema"
length = 20
[[correlation]]
id = "corr"
source1 = "close"
source2 = "ma"
length = 30Paramètres
| Paramètre | Description |
|---|---|
idTexte Obligatoire | Nom unique de la série de corrélation produite. |
source1Texte ou Tableau Obligatoire | Première série d’entrée. Peut être un prix standard ( "close", "hlc3", etc.) ou l’identifiant d’un autre indicateur.Accepte un tableau de candidats pour la recherche en grille. |
source2Texte ou Tableau Obligatoire | Deuxième série d’entrée. Peut être un prix standard ( "close", "hlc3", etc.) ou l’identifiant d’un autre indicateur.Accepte un tableau de candidats pour la recherche en grille. |
lengthEntier ou Plage Obligatoire | Nombre de couples valides utilisés dans la fenêtre de corrélation ; doit être ≥ 1. Usage : • Fixe : length = valeur• Grille : – length.start = valeur_minimale– length.stop = valeur_maximale– length.step = valeur (optionnel, par défaut 1) |
symbolTexte ou Tableau Optionnel | Symbole(s) de marché utilisé(s) lorsque source1 et source2 ne contiennent que des prix standard (open, close, high, low, hl2, hlc3, ohlc4, hlcc4, volume). Dans ce cas, un même contexte symbol s’applique aux deux sources standard du bloc : il ne permet pas de définir un symbole différent pour source1 et source2.Si symbol est renseigné alors qu’au moins une combinaison possible de source1 et source2 référence un indicateur, le chargement de la stratégie échoue. Cette contrainte évite une configuration ambiguë, car le bloc correlation ne gère qu’un seul contexte de marché pour sa sortie et ne peut donc pas appliquer symbol à une seule des deux sources.Pour corréler deux symboles distincts, créez d’abord deux séries amont, par exemple avec [[price]], puis utilisez leurs identifiants dans source1 et source2.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 cette corrélation est calculée. 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, voir Exchanges, Symboles et Timeframes. |
Variables disponibles
Vous pouvez utiliser directement les identifiants ci‑dessous dans vos expressions. Le bloc correlation expose une série numérique, sa longueur de fenêtre, les noms des séries d’entrée et les métadonnées de symbole/timeframe.
Supposons le bloc configuré ainsi :
[[correlation]]
id = "corr"
source1 = "close"
source2 = "open"
length = 50Alors :
| Variable | Description |
|---|---|
corr ou corr[0]Décimal | Valeur actuelle de la corrélation entre source1 et source2. |
corr[n]Décimal | Valeur de la corrélation il y a n bougies. |
corr.lengthDécimal | Longueur de fenêtre utilisée. |
corr.source1Texte | Nom de la première série d’entrée. |
corr.source2Texte | Nom de la deuxième série d’entrée. |
corr.symbolTexte | Symbole utilisé pour ce bloc. |
corr.timeframeTexte | Timeframe utilisé pour ce bloc. |
Notes
- Le calcul utilise une fenêtre fixe de
lengthcouples valides(source1, source2). Les bougies où l’une des deux entrées estnasont ignorées et la sortie restenatant quelengthcouples valides n’ont pas été accumulés. - Si l’une des deux séries a une variance nulle sur la fenêtre, la corrélation est indéfinie et le bloc renvoie
na. corr.symboletcorr.timeframedécrivent le contexte du bloccorrelation, pas un contexte distinct pour chaque source.