Qu’est-ce que Pine Script ?

Pine Script est un langage de script utilisé pour modifier vos graphiques sur la plateforme TradingView. La plateforme met à votre disposition de nombreuses fonctionnalités pour ce faire, mais Pine Script vous permet d'avancer vers votre objectif. Que vous souhaitiez changer les couleurs des graphiques d'évolution des prix ou tester une nouvelle stratégie, l'éditeur Pine vous aidera à personnaliser vos graphiques en temps réel comme bon vous semble.

Le code est bien documenté, alors assurez-vous de consulter le guide de l'utilisateur pour plus d'informations. À travers ce didacticiel, nous visons à aborder quelques bases et à fournir des indicateurs qui peuvent être utiles dans le trading de devises numériques.

préparation

Il est très simple de démarrer avec Pine Script. Tout code que nous écrivons s'exécute sur les serveurs de TradingView, nous pouvons donc utiliser l'éditeur et développer des scripts à partir du navigateur – aucun téléchargement ou configuration supplémentaire n'est requis.

Dans ce didacticiel, nous allons créer un graphique pour la paire de devises Bitcoin/Binance USD (BTCBUSD). Si vous n'avez pas encore de compte, vous pouvez en créer un gratuitement (un abonnement professionnel est également disponible, mais pas nécessaire pour ce guide).

Suivez ce lien et vous verrez un graphique similaire au suivant :

Votre graphique sera probablement plus sophistiqué.

Ici, nous aimerions un graphique complet – cliquez sur le bouton pour y accéder. Cela nous donne un aperçu plus détaillé et des outils de dessin, ainsi que des options pour tracer des lignes de tendance, entre autres fonctionnalités.

Graphique complet. Vous pouvez modifier la période en cliquant sur les vues au-dessus des onglets en surbrillance.

Nous n’aborderons pas la manière d’utiliser les différents outils disponibles, mais si l’analyse technique vous intéresse, nous vous recommandons vivement de les consulter pour vous familiariser avec eux. En bas à gauche (mis en surbrillance dans l'image), vous trouverez quelques onglets différents – cliquez sur Pine Editor.

Éditeur de pin

Cet éditeur vous offre un ensemble de fonctionnalités charmantes. Nous lui dirons ce que nous voulons faire, puis cliquez sur Ajouter au graphique pour voir nos commentaires apparaître en haut. Veuillez noter que le graphique peut devenir désordonné si vous saisissez plusieurs commentaires à la fois. Nous les supprimerons donc entre les exemples (clic droit sur le graphique > Supprimer les indicateurs).

Vous pouvez voir que nous avons déjà deux lignes de codes. Cliquons sur Ajouter au graphique pour voir ce qui se passe.

Un deuxième graphique est ajouté sous le graphique d'origine. Le nouveau graphique représentera les mêmes données. Déplacez votre souris sur le bouton Mon script et cliquez sur les points de suspension pour le supprimer. Discutons du code plus en détail.

étude("Mon script")

La première ligne définit nos commentaires. Cela nécessite uniquement le nom que vous souhaitez donner à l'indicateur ("Mon Script", dans ce cas), mais nous pouvons également ajouter quelques variables facultatives. L'une de ces variables est la superposition, qui indique à la plateforme de placer l'indicateur sur le graphique actuel (plutôt que sur un nouveau secteur). Comme vous pouvez le voir dans le premier exemple, la valeur par défaut est false. Donc, nous ne le verrons pas fonctionner maintenant, overlay=true ajoute l'indicateur au graphique actuel.

terrain(fermer)

Cette ligne est l’instruction permettant de tracer le prix de clôture du Bitcoin. Le graphique nous donne un graphique linéaire, mais nous pouvons également afficher l'évolution des prix et des graphiques à barres, comme nous le verrons dans un instant.

Essayons maintenant ce qui suit :

//@version=4 étude("Mon Script", overlay=true) plot(open, color=color.purple)

Une fois que vous avez ajouté ce symbole, vous devriez voir un deuxième graphique (il semble que le graphique d'origine s'est déplacé vers la droite). Tout ce que nous avons fait, c'est tracer le cours d'ouverture. Puisque le cours d'ouverture du jour en cours est le cours de clôture de la veille, il est logique qu'ils aient une forme similaire.

Bien! Débarrassons-nous des commentaires existants (rappelez-vous que nous faisons cela en cliquant avec le bouton droit et en appuyant sur Supprimer les indicateurs). Déplacez votre souris sur BTC/BUSD, puis cliquez sur le bouton Masquer pour supprimer également le graphique actuel.

De nombreux traders préfèrent les graphiques d'évolution des prix car ils nous donnent plus d'informations qu'un simple dessin comme nous venons de le faire. Ajoutons-les ci-dessous.

//@version=4 Study("Mon Script", overlay=true) plotcandle(ouvrir, haut, bas, fermer)

Un bon début, mais le manque de couleur le rend un peu terne. Idéalement, nous devrions avoir des bougies rouges lorsque le prix d'ouverture est supérieur au prix de clôture pendant une période donnée, et des bougies vertes lorsque le prix de clôture dépasse le prix d'ouverture. Nous allons ajouter une ligne au-dessus de la propriété Candle plot() :

//@version=4 study("Mon Script", overlay=true) colours = open >= close ? color.red : color.green plotcandle (ouvrir, haut, bas, fermer)

Cela se produit dans chaque graphique d'évolution des prix et vérifie si le prix d'ouverture est supérieur ou égal au prix de clôture. Dans ce cas, cela signifie que les prix ont baissé sur une période spécifique, le graphique de l'évolution des prix sera donc coloré en rouge. Sinon, il sera coloré en vert. Modifiez la fonction drawcandle() pour saisir le jeu de couleurs :

//@version=4 study("Mon Script", overlay=true) colours = open >= close ? color.red : color.green plotcandle (ouvrir, haut, bas, fermer, couleur = couleurs)

Supprimez les indicateurs existants si vous ne les avez pas déjà supprimés et ajoutez cet indicateur au graphique. Nous devrions avoir quelque chose qui représente un graphique normal de l’évolution des prix.

Dessiner des moyennes mobiles (MA)

Nous avons quelques bases ci-dessous. Passons au premier indicateur personnalisé : la moyenne mobile exponentielle ou EMA. Il s’agit d’un outil précieux qui nous permet d’éliminer les distractions du marché et de faciliter la compréhension des mouvements du marché.

La moyenne mobile exponentielle est légèrement différente de la moyenne mobile simple (SMA), car cette moyenne se concentre sur les données les plus récentes. Il a tendance à réagir aux mouvements brusques et est généralement utilisé dans les transactions à court terme (day trading, par exemple).

Moyenne mobile simple (SMA)

Nous pourrions également établir une simple moyenne mobile, nous devrions donc les comparer plus tard. Ajoutez cette ligne à votre script :

plot(sma(fermer, 10))

Cela représente la moyenne des 10 jours précédents. Ajustez le nombre entre parenthèses pour voir à quel point la courbe change lorsque différentes périodes sont prises en compte.

La moyenne mobile simple est basée sur les 10 jours précédents.

Moyenne mobile exponentielle (EMA)

La moyenne mobile exponentielle peut être un peu difficile à comprendre, mais ne vous inquiétez pas. Examinons l'équation en détail :

EMA = (Clôture - EMA du jour précédent) * Multiplicateur - EMA du jour précédent

Alors qu’est-ce que cela nous dit ? Eh bien, la nouvelle moyenne mobile de chaque jour est calculée sur la base de la moyenne mobile de la veille. Le multiplicateur est la « pondération des données » sur la période la plus récente et est calculé par l'équation suivante :

Multiplicateur = 2 / (Longueur de l'EMA + 1)

Pour les moyennes mobiles simples, nous devons déterminer combien de temps durera la moyenne mobile exponentielle. En termes de structure, le tracé de la moyenne mobile exponentielle est similaire au tracé de la moyenne mobile simple. Dessinez-le à côté de la moyenne mobile simple pour pouvoir les comparer :

//@version=4 étude("Mon Script", overlay=true) plot(sma(close, 10)) plot(ema(close,10))

Vous pouvez constater une légère différence entre les deux types de moyennes mobiles.

Scripts intégrés

Nous avons écrit le code à la main jusqu'à présent afin que vous le connaissiez. Mais proposons quelque chose qui nous permettra de gagner du temps, surtout si nous écrivons des scripts plus complexes, et nous ne voulons pas le faire à partir de zéro.

Cliquez sur le bouton Nouveau situé en haut à droite de votre éditeur. Vous verrez un menu déroulant avec tous les différents types d'indicateurs techniques. Cliquez sur Moyenne mobile exponentielle pour voir le code source de l'indicateur Moyenne mobile exponentielle.

Ajoutez-le ensuite au graphique.

Ceci est différent de nos propres codes – vous remarquerez les propriétés input(). C’est idéal à utiliser car vous pouvez cliquer sur cette case…

Vous pouvez également modifier facilement certaines valeurs dans la fenêtre contextuelle en cliquant sur la molette des paramètres.

Nous ajouterons deux propriétés input() dans le script suivant pour montrer comment procéder.

Graphique de l'indice de force relative (RSI)

Le Relative Strength Index (RSI) est l’un des indicateurs de base de l’analyse technique. Il est connu sous le nom d’indicateur de momentum, ce qui signifie qu’il mesure le rythme auquel les actifs sont achetés et vendus. Noté sur une échelle allant de 0 à 100, le score RSI tente d'indiquer aux investisseurs si un actif est suracheté ou survendu. Généralement, un actif est considéré comme survendu si son score est inférieur ou égal à 30, et il est considéré comme suracheté si son score est supérieur ou égal à 70.

Si vous allez dans Nouveau > Stratégie RSI, vous pouvez le constater par vous-même. Le RSI est mesuré sur 14 périodes (soit 14 heures ou 14 jours), mais vous avez la liberté d'ajuster ce paramètre en fonction de votre propre stratégie.

Ajoutez cela au graphique. Vous devriez maintenant voir des flèches (identifiées par la propriété enter.strategy() dans le code). RsiLE indique des opportunités d'achat potentielles pour l'actif, car il pourrait se trouver dans une zone de survente. Tandis que RsiSE met en évidence les arguments de vente potentiels de l'actif lorsqu'il se trouve dans la zone de surachat. Veuillez noter que, comme tous les indicateurs, ils ne doivent pas être considérés comme une preuve définitive d’une hausse ou d’une baisse des prix.

Effectuer un backtest

Il existe un moyen qui nous permet de tester des indicateurs personnalisés. Bien que les performances passées ne garantissent pas les résultats futurs, le processus de backtesting des scripts nous donne une idée de leur efficacité à recevoir des signaux.

Vous trouverez ci-dessous un exemple de script simple. Nous allons créer une stratégie simple pour entrer dans une transaction longue lorsque le prix du Bitcoin tombe en dessous de 11 000 $ et quitter la transaction lorsque le prix dépasse 11 300 $. Ainsi, nous pouvons savoir à quel point cette stratégie a été historiquement rentable.

//@version=4 stratégie("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (price <= enter)     strategy.entry("BuyTheDip", stratégie.long , comment="BuyTheDip") if (prix >= sortie)     stratégie.close_all(comment="SellTheNews")

Ici, nous avons défini les points d'entrée et de sortie en tant que variables – les deux sont des entrées, ce qui signifie que nous pouvons les modifier sur le graphique ultérieurement. Nous avons également défini une variable de prix, qui enregistre le cours de clôture de chaque période. Il y a donc quelque chose de logique à utiliser les instructions if. Si la partie entre crochets est vraie, le bloc en retrait sera activé. Sinon, il sera ignoré.

De plus, si le prix baisse ou est égal au prix d'entrée souhaité, l'expression sera évaluée comme vraie et nous ouvrirons une transaction d'achat. Une fois que le prix est égal ou supérieur au prix de sortie requis, le deuxième bloc sera activé, ainsi que la clôture de toutes les transactions ouvertes.

Nous ajouterons des commentaires au graphique à l'aide de flèches pour indiquer les points d'entrée et de sortie, nous avons donc nommé ces points dans le cadre des commentaires (dans cet exemple, « Buy Dip » et « Sell on News »). Copiez le symbole et ajoutez-le au graphique.

Vous pouvez maintenant voir les indicateurs sur le graphique. Vous devrez peut-être effectuer un zoom arrière pour avoir un aperçu.

TradingView applique vos règles aux données plus anciennes. Vous remarquerez également une transition de l’éditeur Pine vers l’onglet Strategy Tester. Cela vous permet de voir un aperçu des bénéfices potentiels, une liste des transactions et leurs performances respectives.

Transactions dans lesquelles nous sommes entrés et sortis.

Relier les éléments entre eux

Il est temps d'écrire notre propre programme en utilisant certains des concepts décrits jusqu'à présent. Nous combinerons à la fois la moyenne mobile exponentielle et le RSI en utilisant leur valeur afin de colorer les graphiques d'action des prix et d'obtenir des informations imaginables.

Cela ne doit pas être interprété comme un conseil financier, car il n'existe pas de manière correcte objectivement définie d'utiliser cet indicateur. Comme tous les autres indicateurs, cet indicateur doit être utilisé conjointement avec d’autres outils pour développer votre stratégie d’investissement.

Commençons à travailler sur le nouveau script. Supprimez tous les indicateurs du graphique et masquez également le graphique BTC/BUSD, afin que nous ayons un graphique vierge avec lequel commencer à travailler.

Commençons par définir l'étude. Vous pouvez utiliser le nom de votre choix, assurez-vous simplement de définir overlay=true.

étude(titre="Script de la Binance Academy", overlay=true)

Rappelez-vous l’équation de moyenne mobile exponentielle dont nous avons parlé plus tôt. Nous devons fournir au multiplicateur des données pour la période que prendra la moyenne mobile exponentielle. Faisons-en un champ de saisie qui nécessite un entier (donc pas de décimales). Nous préciserons également un minimum (minval) et une valeur par défaut (defval).

étude(titre="Binance Academy Script", overlay=true) emaLength = input(title="EMA Longueur", type=input.integer, defval=25, minval=0)

Nous pouvons calculer la valeur EMA pour chaque bougie sur le graphique en utilisant la nouvelle variable :

étude(titre="Binance Academy Script", overlay=true) emaLength = input(title="EMA Longueur", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)

incroyable. Concernant l’indice de force relative (RSI). Nous saisirons la période de la même manière :

étude(titre="Binance Academy Script", overlay=true) emaLength = input(title="EMA Longueur", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="Longueur RSI", type=input.integer, defval=25, minval=0)

Nous pouvons maintenant calculer ceci :

étude(titre="Binance Academy Script", overlay=true) emaLength = input(title="EMA Longueur", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="RSI Longueur", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength)

À ce stade, vous devez savoir que les couleurs des graphiques d'évolution des prix dépendent des valeurs EMA et RSI. Prenons un exemple lorsque (a) le cours de clôture de la bougie traverse l'EMA et (b) le RSI est supérieur à 50.

Pourquoi? Eh bien, vous pouvez décider que ces indicateurs peuvent être utilisés conjointement pour vous indiquer quand acheter ou vendre du Bitcoin. Par exemple, vous pensez peut-être que le fait de remplir les deux conditions signifie que c’est le bon moment pour entrer dans une transaction longue. Vous pouvez également utiliser des indicateurs pour vous rappeler quand vous ne devez pas vendre, même si d’autres indicateurs indiquent le contraire.

Ainsi, la ligne suivante ressemble à ceci :

étude(titre="Binance Academy Script", overlay=true) emaLength = input(title="EMA Longueur", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="RSI Longueur", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) couleurs = close > emaVal et rsiVal > 50 ? couleur.vert : couleur.rouge

Si nous traduisons cela en anglais simple, cela signifie que si l'EMA dépasse le cours de clôture et que le score RSI dépasse 50, nous colorerons la bougie en vert. Sinon, il sera coloré en rouge.

Ensuite, tracez la moyenne mobile exponentielle :

étude(titre="Binance Academy Script", overlay=true) emaLength = input(title="EMA Longueur", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="RSI Longueur", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) couleurs = close > emaVal et rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA")

Enfin, dessinez les bougies en veillant à inclure la variable de couleur :

étude(titre="Binance Academy Script", overlay=true) emaLength = input(title="EMA Longueur", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input (title="RSI Longueur", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) couleurs = close > emaVal et rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA") plotcandle(ouvrir, haut, bas, fermer, couleur=couleurs)

Et vous en avez terminé avec le script ! Ajoutez-le à votre graphique pour le voir en action.

Graphique BTC/BUSD utilisant EMA/RSI.

Réflexions finales

Dans cet article, nous avons examiné quelques exemples de base de ce qui peut être fait à l'aide de l'éditeur Pine de TradingView. Vous devriez être capable de faire des commentaires simples sur le graphique des prix afin d'obtenir des informations supplémentaires sur vos indicateurs.

Nous n'avons mis en évidence ici que deux indicateurs, mais il est facile de créer des indicateurs plus complexes, que ce soit en définissant à nouveau des scripts intégrés ou en les écrivant vous-même.

Besoin d'idées inspirantes ? Les articles suivants peuvent vous aider à trouver des idées pour votre prochain projet :