Le script ou la stratégie donne des résultats différents après l'actualisation de la page (repainting)

Les données historiques ne comprennent pas les enregistrements des mouvements de prix intra-barre; uniquement ouvert, haut, bas et fermé (OHLC). Cela conduit à un script fonctionnant parfois différemment sur les données historiques et en temps réel, où seul le prix ouvert est connu et où le prix se déplace généralement plusieurs fois avant que les valeurs finales haute, basse et fermeture de la barre en temps réel ne soient définies après que la barre en temps réel se ferme.

Si nous ajoutons un script sur un graphique, attendons qu'il calcule sur un certain nombre de barres en temps réel, puis rechargeons la page, nous verrons parfois les graphiques d'un script changer légèrement. Ce comportement est l'un des quelques types de comportements couramment appelés "repeinture" d'indicateur. C'est le type de repeinture qui nous intéresse ici et auquel nous ferons référence lors de l'utilisation de la repeinture. Cela est dû au fait que lorsque certaines fonctionnalités sont utilisées dans les scripts, elles calculent différemment sur les barres historiques et en temps réel.

Les autres types de comportement appelés à tort ou à raison repeinture incluent le traçage avec un décalage négatif sur les barres passées et l'utilisation d'informations futures autrement indisponibles reçues via des appels mal compris à la fonction de sécurité, ce qui peut introduire des données non disponibles en temps réel dans les calculs de script.

Tous les indicateurs ne sont pas soumis au type de repeinture dont nous discutons ici. Dans la plupart des cas, cela dépend de l'utilisation ou non de certaines fonctions ou constructions de langage dans le code. Veuillez noter que cet effet de repeinture n'est pas un bug; c'est le résultat des différences inhérentes entre les barres historiques et les informations de barre en temps réel sur TradingView.

Nous pouvons voir repeindre dans les cas suivants:

1. Stratégies utilisant calc_on_every_tick = true. Une stratégie avec le paramètre calc_on_every_tick = false peut également être sujette à repeindre, mais dans une moindre mesure.

2. Utilisation de la sécurité pour demander des données à une résolution supérieure à la résolution du symbole principal du graphique:

// Add this study on 1 minute chart
//@version=4
study("My Script")
c = security(syminfo.tickerid, "5", close)
plot(close)
plot(c, color=color.red)

Cette étude calculera différemment sur les données en temps réel et historiques, quelle que soit la valeur du paramètre de lookahead (voir Comprendre le lookahead).

3. Utilisation de la sécurité pour demander des données à une résolution inférieure à la résolution du symbole principal du graphique (plus d'informations ici):

// Add this study on 5 minute chart
//@version=3
study("My Script")
c = security(tickerid, "1", close, lookahead=false)
plot(close)
plot(c, color=red)

Si lookahead = false, une repeinture se produira. Lorsque lookahead = true, la repeinture est moins probable. Cela peut se produire lorsque des mises à jour de 1 et 5 minutes se dépassent.

4. Tous les scripts dont les calculs dépendent d'un point de départ. Les données intrajournalières sont alignées sur le début de la semaine, du mois ou de l'année, selon la résolution. Pour cette raison, les résultats produits par de tels scripts peuvent différer de temps en temps. Ce sont des cas où les scripts s'appuieront sur un point de départ:

- quand ils utilisent des fonctions valuewhen, barssince ou ema (en raison des particularités de leur algorithme)

- toute stratégie de backtesting (quelle que soit la façon dont le paramètre calc_on_every_tick est défini)

Il existe une dépendance entre la résolution et l'alignement d'un point de départ:

- 1 à 14 minutes - s'aligne sur le début d'une semaine

- 15–29 minutes - s'aligne sur le début d'un mois

- à partir de 30 minutes et plus - s'aligne sur le début d'une année

Les limitations suivantes des longueurs d'historique sont prises en compte lors du traitement des données:

  • 40000 barres historiques pour les plans Ultimate
  • 30000 barres historiques pour les plans Elite
  • 25000 barres historiques pour les plans Expert
  • 20000 barres historiques pour les plans Premium
  • 10000 barres historiques pour les plans Pro et Pro+
  • 5000 barres historiques pour les autres plans

5. Changements dans les données historiques, par exemple, en raison d'une scission.

6. La présence des variables suivantes dans le script conduit généralement à la repeinture: