Lo script cambia risultato se aggiorno la pagina (repainting)

I dati storici non includono i movimenti di prezzo intraday, ma solo i valori di apertura, chiusura, massimo e minimo (OHLC). Ciò può portare uno script a funzionare in modo diverso a seconda che i dati siano storici o in tempo reale, poiché in quest'ultimo caso si conosce solo il prezzo di apertura ed il prezzo si muove su vari livelli prima di stabilire effettivamente i valori di massimo, minimo e chiusura definitivi.

Se aggiungiamo uno script al grafico, aspettiamo che faccia i suoi calcoli sui dati in tempo reale e poi aggiorniamo la pagina, potrebbe accadere che il risultato dello script appaia leggermente diverso. Questo comportamento è uno di quelli a cui ci si riferisce con il termine inglese di indicator repainting, che comprendono tutta quella serie di adattamenti che ci sono in alcuni script nel momento in cui si passa da un dato in tempo reale ad uno storico.

Solitamente vengono inclusi in questa categoria, non sempre correttamente, comportamenti quali plot di funzioni con offset negativo e/o l'utilizzo di informazioni future ricevute tramite chiamate errate della funzione security, che possono portare ad includere dei dati non disponibili in tempo reale all'interno del calcolo di uno script.

Non tutti gli indicatori subiscono lo stesso tipo di repainting discusso qui. In molte circostanze dipende dal tipo di funzioni o di costrutti logici adoperati all'interno del codice. Ti preghiamo dunque di non considerare un bug questo comportamento: è semplicemente il risultato di differenze insite nell'erogazione dei dati in tempo reale e/o storici.

Possiamo assistere al repainting nei seguenti casi:

1. In strategie che usano calc_on_every_tick=true. Può succedere anche se è impostato su false ma sporadicamente.

2. Quando si utilizza la funzione security per richiedere dati da un timeframe più alto di quello del grafico su cui ci troviamo:

// 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)

Questo script calcolerà in modo differente i dati storici o in tempo reale, indipendentemente dal valore del parametro lookahead (consulta l'argomento lookahead nella funzione security).

3. Quando si utilizza la funzione security per richiedere dati da un timeframe più basso di quello applicato al grafico principale (più informazioni qua):

// 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)

Se lookahead=false, si verificherà il repainting. Se è uguale a true, è meno probabile, ma può comunque verificarsi con timeframe da 1 e 5 minuti.

4. Tutti gli script con calcoli che dipendono da un punto di partenza. I dati intraday vengono allineati con l'inizio della settimana, del mese o dell'anno a seconda del timeframe. Questo genera dei risultati che possono differire di tanto in tanto.

Per intenderci, ecco i casi in cui gli script dipendono da un punto di partenza:

  • quando si utilizzano le funzioni valuewhen, barssince o ema (a causa delle peculiarità del loro algoritmo)
  • qualsiasi strategia di backtesting (indipendentemente da come viene definito il parametro calc_on_every_tick)

C'è una correlazione tra il timeframe ed il punto di partenza:

  • 1–14 minuti — si allinea con l'inizio della settimana
  • 15–29 minuti — si allinea con l'inizio del mese
  • dai 30 minuti in su — si allinea con l'inizio dell'anno

Quando vengono elaborati i dati, sono considerate le seguenti limitazioni sul periodo storico:

  • 10000 barre storiche per gli abbonati Pro
  • 5000 barre storiche per gli account senza abbonamento

5. Quando ci sono variazioni dei dati storici, ad esempio a seguito di un frazionamento.

6. La presenza delle seguenti variabili nello script porta solitamente al verificarsi del repainting:

Home Screener azioni Screener forex Screener cripto Calendario economico Come funziona Caratteristiche Grafico Costi Invita un amico Regolamento Centro di supporto Soluzioni per broker & siti web Widget Librerie grafiche Libreria grafica leggera Blog & Novità Twitter
Profilo Impostazioni profilo Account e fatturazione Amici invitati Coin I miei ticket di supporto Centro di supporto Idee pubblicate Follower Seguiti Messaggi Privati Chat Esci