Tutoriel backtesting avec Tradingview
Dans ce tutoriel nous allons voir comment simplement backtester une strétégie avec Tradingview, cet outil existe en gratuit et fait dans la verison gratuites énormément de chose.
On va écrire le script en Pinescript, et on va exécuter le backtest.
Ceci n’est pas un conseil financier.
strategy("Moving average Cross") // Pinescript c'est L4G (langage de 4ème génération) ema20 = ema(close,20) ema50 = ema(close,50) // on définit quand est ce qu'on long ou short long = ema20 > ema50 short = ema20 < ema50 //ouverture du trade strategy.entry("long", strategy.long,1.0,when=long) strategy.entry("short", strategy.short,1.0,when=short) // fermeture du trade strategy.close("long",when=short) strategy.close("short",when=long)
Cliquez sur « Update on chart »
Un fois que vous avez fait le script il faut clicker sur « Strategy tester », à côté de « Pine Editor », dans le sous menu, Overview vous pouvez voir la courbe de PNL
lien vers la documentation de Pinescript
définir une date de début et de fin
//@version=4 strategy("Moving average Cross") ema20 = ema(close,20) ema50 = ema(close,50) long = ema20 > ema50 short = ema20 < ema50 start = timestamp(2021,04,01,0,0) end = timestamp(2024,04,01,0,0) if time >= start and time <= end strategy.entry("long", strategy.long,1.0,when=long) strategy.entry("short", strategy.short,1.0,when=short) strategy.close("long",when=short) strategy.close("short",when=long)
il faut mettre @version=4 sinon la condition if ne marche pas
Ensuite cliquez sur « Update on chart » pour que ça marche
Affichage des deux moyennes mobiles
//@version=4 strategy("Moving average Cross") ema20 = ema(close,20) ema50 = ema(close,50) long = ema20 > ema50 short = ema20 < ema50 plot(ema50, title="ma50", color=#ffc1cc, linewidth=3) plot(ema20, title="ma20", color=#00ffaa, linewidth=2) start = timestamp(2021,04,01,0,0) end = timestamp(2024,04,01,0,0) if time >= start and time <= end strategy.entry("long", strategy.long,1.0,when=long) strategy.entry("short", strategy.short,1.0,when=short) strategy.close("long",when=short) strategy.close("short",when=long) //Version avec Overlay sur la courbe des prix il suffit de modifier la première ligne de code strategy("Moving average Cross",overlay=true)
Ensuite cliquez sur « Update on chart » pour que mettre à jour le graphe, les deux moyennes mobiles sont dans le bas de l’écran séparés du graphique des prix. Ajoutez la propriété overlay=true pour superposer les deux graphique, auparavant supprimez le graphique du bas avec les deux moyennes mobiles.
Retarder l’entrée en position à la 10ème bougie en plus de la condition des moyennes mobiles
On fait ceci pour éviter que le croisement des moyennes mobiles ne soit que éphémères.
//@version=4 strategy("Moving average Cross",overlay=true) ema20 = ema(close,20) ema50 = ema(close,50) long = ema20 > ema50 short = ema20 < ema50 //on attend la consolidation pour passer à l'action pour éviter de se faire stopper longcondition = long and long[10] and not long[11] shortcondition = short and short[10] and not short[11] plot(ema50, title="ma50", color=#ffc1cc, linewidth=3) plot(ema20, title="ma20", color=#00ffaa, linewidth=2) start = timestamp(2021,04,01,0,0) end = timestamp(2024,04,01,0,0) if time >= start and time <= end strategy.entry("long", strategy.long,1.0,when=longcondition) strategy.entry("short", strategy.short,1.0,when=shortcondition) strategy.close("long",when=shortcondition) strategy.close("short",when=longcondition)
On a pris moins de trade mais le PNL est moins intéressant, mais vous voyez ici l’idée, on joue sur les potard afin d’améliorer le PNL. Une fois que vous avez des résultats intéressants, vous pouvez appliquer pour le futur dans votre stratégie de quant.
Après le réglage
Avertissement sur les limites du backtesting
Le backtesting n’est pas trivial, et ce qui est donnée par Tradingview peut ne pas être juste dans la réalité. Regardez cette vidéo
Le quant marche mieux dans le low time frame intraday avec des bougies d’un quart d’heure. je ne suis pas spécialiste et j’ai fait cet article à des fin didactique, je n’ai pas fait de robot de trading.