Indicateur ou stratégie Pine Script : différences et quand utiliser chacun
6 min de lecture · Mis à jour le
Sur TradingView, un indicateur et une stratégie se ressemblent presque dans le Pine Editor. Un indicateur dessine sur votre graphique. Une stratégie simule des trades et indique ce qu'ils auraient rapporté. Confondre les deux est la raison la plus courante pour laquelle un script superbe sur l'historique déçoit en réel. Ce guide couvre les différences qui changent vos résultats, ainsi que le troisième type de script, la bibliothèque.
Indicateur, stratégie et bibliothèque : à quoi sert chacun
- Indicateur (
indicator()) : calcule et trace. Utilisez-le pour les niveaux, les signaux dessinés avecplotshape(), les tableaux de bord, le biais de marché et les alertes construites avecalertcondition(). - Stratégie (
strategy()) : tout ce qu'un indicateur peut dessiner, plus des ordres simulés viastrategy.entry,strategy.exitetstrategy.close. TradingView exécute ces ordres et remplit le Strategy Tester de statistiques de trades. - Bibliothèque (
library()) : un ensemble de fonctions réutilisables que vous publiez puisimportezdans d'autres scripts. Une bibliothèque n'est jamais ajoutée seule à un graphique.
Un script ne déclare qu'un seul de ces trois types, donc un même script ne peut pas être à la fois un indicateur et une stratégie. Une organisation courante : une bibliothèque qui contient votre logique commune, un indicateur pour le graphique et les alertes, et une stratégie pour les tests.
La différence en une ligne
La toute première ligne d'un script Pine déclare de quel type il s'agit. Un script qui s'ouvre par indicator() ne peut que calculer et tracer : lignes, couleurs, étiquettes, remplissages. Il n'a aucune notion de position, de prix d'exécution ou de profit. Un script qui s'ouvre par strategy() ajoute un moteur de simulation d'ordres : il peut appeler des fonctions comme strategy.entry et strategy.exit, et TradingView exécute ces ordres sur les bougies historiques pour produire le rapport du Strategy Tester : bénéfice net, drawdown maximal, taux de réussite, profit factor et liste des trades simulés.
La séparation est donc la suivante : un indicateur décrit des conditions ; une stratégie affirme ce que ces conditions auraient rapporté. La seconde affirmation est bien plus lourde que la première, car dès que vous simulez des ordres, vous héritez d'une pile d'hypothèses sur le moment et le prix auxquels ces ordres ont été exécutés.
Là où le moteur de backtest fait discrètement des hypothèses
La courbe de capital d'une stratégie n'est aussi fiable que les hypothèses d'exécution qui la sous-tendent. Quatre réglages par défaut font l'essentiel des dégâts :
- Évaluation à la clôture de la bougie. Par défaut, le testeur évalue votre logique à la clôture d'une bougie. Si une condition fait référence au plus haut, au plus bas ou à la clôture de la bougie elle-même, l'« exécution » historique peut utiliser une information qu'un trade réel n'aurait pas pu avoir avant la fin de la bougie.
- Exécutions à l'ouverture de la bougie suivante. Un ordre au marché placé sur un signal est exécuté à l'ouverture de la bougie suivante dans la simulation. Sur une ouverture rapide, ce prix affiché peut être à plusieurs ticks, ou points, de l'endroit où vous seriez réellement exécuté.
- Zéro friction. Si
commissionetslippagesont laissés à zéro dans l'appelstrategy(), chaque trade simulé est gratuit, alors que chaque trade réel paie commission et slippage. - Taille de l'échantillon. Le testeur vous présentera volontiers une magnifique courbe bâtie sur douze trades. Douze gains, c'est du bruit déguisé en avantage.
Un exemple concret
Disons qu'une stratégie affiche +4200 $US sur 40 trades en contrats à terme ES avec les coûts laissés à zéro. Ajoutez une commission aller-retour d'environ 5 $US (les commissions des particuliers sur contrats à terme varient beaucoup d'un courtier à l'autre, utilisez donc la vôtre), plus un tick de slippage par côté. Sur ES, un tick vaut 0.25 point, soit 12,50 $US, donc un tick dans chaque sens fait 25 $US. Cela représente environ 30 $US de friction par trade, soit environ 1200 $US sur 40 trades, ce qui ramène un +4200 $US affiché vers ~3000 $US. Et c'est la version polie : si les entrées se concentrent sur des ouvertures volatiles, le slippage réel dépasse un tick et l'écart grandit. Rien de cette friction n'apparaît dans la version indicateur de la même logique, car un indicateur ne revendique jamais d'exécution. Pour en savoir plus sur la façon de distinguer un vrai avantage d'un avantage ajusté, voyez comment repérer les systèmes de trading surajustés.
Signaux : plotshape dans un indicateur, ordres dans une stratégie
Un indicateur marque un signal avec plotshape() ou plotchar(), un triangle ou une étiquette sur la bougie où votre condition était vraie. Rien n'est acheté, donc l'indicateur n'a pas de statistiques de trades. Une stratégie transforme cette même condition en ordre avec strategy.entry(), et le Strategy Tester indique alors bénéfice net, taux de réussite, drawdown et liste complète des trades. Pour mesurer la précision d'un signal, placez la condition dans une stratégie, ajoutez des coûts réalistes et lisez la liste des trades.
Tester les signaux : à la clôture ou en intrabar
Par défaut, une stratégie calcule une fois par bougie, à la clôture, et un ordre au marché est exécuté à l'ouverture de la bougie suivante. Trois réglages changent cela :
process_orders_on_close = trueexécute les ordres à la clôture de la bougie du signal.calc_on_every_tick = truerecalcule à chaque tick en direct. L'historique ne contient que des bougies terminées, donc les résultats en direct et historiques peuvent différer.use_bar_magnifier = trueutilise des données d'unité de temps inférieure pour décider lequel des prix d'une bougie est venu en premier quand un stop et un objectif se trouvent tous deux dans la même bougie.
Les signaux confirmés à la clôture de la bougie donnent la meilleure correspondance entre backtest et résultats réels.
Les signaux en intrabar ont encore leur place. Une stratégie de cassure qui doit agir à l'instant où le prix franchit un niveau peut utiliser calc_on_every_tick en direct, à condition de tester d'abord la version en direct sur un compte de paper trading, car le backtest ne peut pas montrer comment le signal se comporte à l'intérieur d'une bougie. Pour les indicateurs, la même distinction s'applique aux alertes : « Une fois à la clôture de la bougie » attend la bougie confirmée, et « Une fois par bougie » se déclenche la première fois que la condition devient vraie dans la bougie, même si la bougie clôture ensuite dans l'autre sens. La FAQ Pine Script détaille davantage les réglages d'alerte.
Quel type de script fonctionne dans le Pine Screener ?
Le Pine Screener exécute des indicateurs. Pour filtrer sur le setup d'une stratégie, placez la condition dans un indicateur et tracez la valeur sur laquelle vous voulez filtrer.
Ce que le repainting signifie vraiment
Le « repainting » est reproché à tout script qui affiche après coup des valeurs différentes de celles du temps réel, mais l'étiquette est souvent mal appliquée. Le test honnête tient en une question : cette décision aurait-elle pu être prise avec la même information, au même moment, en direct ? Un signal qui ne se confirme qu'à la clôture de la bougie vous demande simplement d'attendre la clôture. Les cas vraiment trompeurs sont les signaux tracés sur la bougie encore en formation qui sautent une fois qu'elle est terminée, ou les données d'unité de temps supérieure récupérées avec lookahead. Évaluer la logique sur une bougie confirmée garde votre backtest et votre expérience en direct honnêtes l'un envers l'autre, que vous construisiez un indicateur ou une stratégie.
Comment cela s'applique aux plans de trading
Les plans de trading contournent délibérément le problème du repainting en vous remettant des niveaux fixes et planifiés à l'avance. Les niveaux quotidiens, ceux de ES, SPY, NQ et QQQ, sont calculés après la clôture précédente et ne bougent pas pendant la séance. Il n'y a rien à repeindre : chaque niveau est fixé avant 9 h 30 ET et ne bouge plus. MyLinedChart, qui trace ces lignes, fonctionne comme un indicateur. Il trace les niveaux et ne simule rien, donc il ne porte aucune des hypothèses d'exécution ou de commission ci-dessus. Si un niveau publié contredit ce que votre propre stratégie vous dit, ce désaccord est une information, et la réponse est souvent d'attendre.
Construire une stratégie à partir de vos propres niveaux
La plupart des stratégies tradent autour de prix qu'un trader a déjà tracés à la main : support, résistance, pivot. MyLinedChart exporte chaque ligne, niveau, note et indicateur de votre graphique en JSON, CSV ou XLSX. Donnez ce fichier à ChatGPT, à Claude ou à votre propre code et demandez une stratégie Pine Script qui trade ces prix exacts. Vous et votre IA décidez comment la stratégie entre et sort.
Une courte checklist avant de faire confiance à l'un ou l'autre type de script
- Sachez lequel vous tenez :
indicator()ne fait que dessiner ;strategy()simule des ordres et produit le rapport du Strategy Tester. - Sur une stratégie, réglez une
commissionet unslippageréalistes pour l'instrument que vous tradez réellement avant de lire le moindre chiffre de profit. - Confirmez la logique sur des bougies clôturées pour que l'historique et le direct partagent le même moment de décision.
- Jugez les résultats sur assez de trades pour qu'ils comptent.
- Gardez les superpositions de contexte (comme les niveaux publiés) séparées de l'autorité d'exécution : le graphique éclaire la décision, vos règles écrites la prennent.
Utilisé ainsi, un indicateur est une loupe et une stratégie est une hypothèse. Testez les deux sur de vraies exécutions avant de leur faire confiance.
À lire aussi
- FAQ Pine Script : backtests et alertes
- Comment repérer les systèmes de trading surajustés
- Glossaire des plans de trading
Sources
- Documentation Pine Script de TradingView : stratégies
- Documentation Pine Script de TradingView : repainting
- CFTC : avis sur les fraudes aux systèmes de trading
Contenu éducatif uniquement. Ceci n'est pas un conseil en investissement.
Contenu éducatif uniquement. Ceci n'est pas un conseil en investissement.