Percentile Linear Interpolation (pli)
[[pli]] renvoie le percentile percentage de sa source sur les length dernières valeurs. Le bloc trie la fenêtre de la plus basse à la plus haute et produit une série numérique située à la position choisie dans ce classement. Un percentile de 0 correspond au bas de la fenêtre, 50 à sa médiane et 100 à son sommet.
Lorsque la position demandée se trouve entre deux valeurs triées, le bloc les combine par interpolation linéaire au lieu d’en sélectionner une seule. La sortie peut donc prendre une valeur absente de la fenêtre, mais toujours située entre les deux observations qui encadrent le percentile.
Déclaration du bloc
Une stratégie peut contenir plusieurs blocs [[pli]]. Chaque bloc produit une série numérique : le percentile demandé de la source sur la fenêtre configurée.
Exemples
Configuration minimale
Ce bloc calcule le 50e percentile, la médiane, de close sur 20 bougies. Comme source est omis, le bloc utilise la valeur par défaut "close".
[[pli]]
id = "pli"
length = 20
percentage = 50Source spécifique
Ce bloc calcule la même médiane sur la source hl2 (moyenne du plus haut et du plus bas) plutôt que sur close.
[[pli]]
id = "pli"
source = "hl2"
length = 20
percentage = 50Source issue d’un autre indicateur
Ce bloc calcule le 90e percentile de la série produite par le bloc rsi sur 50 bougies, une référence haute et lente que les valeurs récentes du RSI dépassent rarement.
[[rsi]]
id = "rsi"
length = 14
[[pli]]
id = "rsi_p90"
source = "rsi"
length = 50
percentage = 90Recherche de la longueur optimale
Ce bloc explore une plage de valeurs pour length afin d’identifier la fenêtre la plus performante, le percentile restant fixé à la médiane.
[[pli]]
id = "pli"
length.start = 10
length.stop = 30
percentage = 50Recherche du percentile optimal
Ce bloc garde length fixe et explore une plage de valeurs de percentage pendant le grid search : un backtest est exécuté pour chaque percentile de la plage, et le classement des résultats montre quel niveau est le plus performant.
[[pli]]
id = "pli"
length = 20
percentage.start = 10
percentage.stop = 90
percentage.step = 10Symbole et timeframe dédiés
Ce bloc calcule le percentile sur la série journalière de BINANCE:ETHUSDT, 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.
[[pli]]
id = "pli"
length = 20
percentage = 50
symbol = "BINANCE:ETHUSDT"
timeframe = "D"Paramètres
| Paramètre | Description |
|---|---|
idTexte Obligatoire | Nom unique identifiant la série pli ; 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 = "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 Obligatoire | Nombre de bougies de la fenêtre sur laquelle le percentile est calculé ; doit être ≥ 1. Usage : • Fixe : length = valeur• Grille : – length.start = valeur_minimale– length.stop = valeur_maximale– length.step = valeur (optionnel, par défaut 1) |
percentageDécimal Obligatoire | Percentile à lire dans la fenêtre triée, de 0 (valeur la plus basse) à 100 (valeur la plus haute) ; 50 correspond à la médiane.Usage : • Fixe : percentage = valeur• Grille : – percentage.start = valeur_minimale– percentage.stop = valeur_maximale– percentage.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 pli expose une série numérique, sa longueur de calcul, le percentile demandé 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 :
[[pli]]
id = "pli"
length = 20
percentage = 50Alors :
| Variable | Description |
|---|---|
pli ou pli[0]Décimal | Valeur actuelle du percentile. |
pli[n]Décimal | Valeur du percentile il y a n bougies. |
pli.lengthDécimal | Longueur de la fenêtre utilisée. |
pli.percentageDécimal | Percentile lu dans la fenêtre, de 0 à 100. |
pli.sourceTexte | Nom de la série d’entrée (par exemple close, hl2, ou l’id d’un autre indicateur). |
pli.symbolTexte | Symbole à partir duquel les données d’entrée sont lues. |
pli.timeframeTexte | Timeframe sur lequel le percentile est calculé. |
Notes
- Pendant la phase d’amorçage, tant que la fenêtre ne contient pas
lengthbougies, la série vautNaN. percentage = 0renvoie la valeur la plus basse de la fenêtre,percentage = 100la plus haute etpercentage = 50la médiane. Aveclength = 1, la série reprend simplement la valeur courante de la source.- Une bougie dont la source vaut
NaNreste dans la fenêtre mais est classée après toutes les valeurs numériques. Unpercentageélevé peut donc renvoyerNaNtant que ces valeurs manquantes occupent le haut du classement, alors que les percentiles plus bas restent calculables. - 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.