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.