Anomalia grafica su timeframe dal Default

Viewing 13 posts - 1 through 13 (of 13 total)
  • Author
    Posts
  • #253657 quote
    effegi
    Participant
    Average

    Salve, volevo chiedere se qualcuno ha una spiegazione a questa “anomalia” che ho riscontrato sulla grafica tracciata su timeframe diversi dal default:

    se inserisco un istruzione per disegnare un rettangolo alle 12:00 di ogni giorno (orario a caso) in una zona di codice TIMEFRAME (30 MINUTES), o anche altro elemento grafico (ho provato con un testi, un punto, ecc) mi succede questo: Se uso l’indicatore sullo stesso timeframe (M30) tutto viene plottato correttamente. Se lo provo su timeframe inferiori (per esempio M15 o M5), l’elemento grafico viene disegnato indietro nel tempo e su orari apparentemente casuali – vedere i printscreen che sono molto più chiari della mia descrizione. Ho provato sia con l’istruzione TIMEFRAME (30 minutes) che con TIMEFRAME (30 minutes, updateonclose), ma il risultato non cambia Qualcuno ha idea del motivo? Oppure sto sbagliando io qualcosa? Grazie, buona serata    
    timeframe (30 minutes, updateonclose)
    
    if opentime=120000 then
    drawrectangle (barindex, low, barindex+5, High)
    drawtext("TEST",barindex+5,high)
    drawpoint(barindex,low,3)
    ENDIF
    
    return
    
    TF-M30.jpg TF-M30.jpg TF-M15.jpg TF-M15.jpg TF-M5.jpg TF-M5.jpg
    #253664 quote
    JS
    Participant
    Senior

    Ciao,

    Per poter utilizzare il tuo indicatore su diversi timeframe, puoi modificare la eerste regel del codice in:

    TimeFrame (Default)

    Con questa opzione verrà sempre utilizzato il timeframe del grafico…

    #253668 quote
    effegi
    Participant
    Average
    Grazie per la risposta JS, ma non era quello che intendevo: Ho un indicatore costruito sul timeframe 30 minuti (o altro timeframe) che disegna testi, frecce e punti, e voglio visualizzare gli stessi elementi grafici anche su timeframe inferiori (ovviamente sottomultipli di quello principale). Per fare questo ho inserito la sezione di codice Timeframe (30 minutes, updateonclose), pensando che anche su TF più bassi comparissero gli stessi elementi grafici negli stessi esatti punti del M30. Invece, per ragioni che non riesco a capire, vengono tracciati in punti strani, diversi da quello che avviene sul M30   Ti faccio un altro esempio: ho aggiunto il supetrend sul M30, con il tracciamento di frecce per ogni commutazione up/down Su TF inferiori, il supertend viene tracciato correttamente (la linea commuta esattamente negli stessi orari), mentre il tracciamento delle frecce è completamente sbagliato
    timeframe (30 minutes, updateonclose)
    //timeframe (30 minutes)
    
    if opentime=120000 then
    drawrectangle (barindex, low, barindex+5, High)
    drawtext("TEST",barindex+5,high)
    drawpoint(barindex,low,3)
    ENDIF
    st=Supertrend[3,10]
    if close crosses over st then
    drawarrowup (barindex, high+10) coloured ("blue")
    elsif close crosses under st then
    drawarrowdown (barindex, low-10) coloured ("magenta")
    endif
    
    return st
    
    TF-M30-ST.jpg TF-M30-ST.jpg TF-M15-ST.jpg TF-M15-ST.jpg TF-M5-ST.jpg TF-M5-ST.jpg
    #253673 quote
    JS
    Participant
    Senior
    Succede perché vengono utilizzati due timeframe diversi allo stesso tempo: apri un timeframe fisso di 30 minuti su un grafico a 15 minuti… Di conseguenza, gli elementi grafici nel grafico a 15 minuti verranno spostati per adattarsi al timeframe di 30 minuti… Si può vedere anche così: gli elementi grafici con timeframe a 30 minuti vengono proiettati nel grafico a 15 minuti… (per questo motivo gli elementi grafici si spostano) Questo viene spesso utilizzato, ad esempio, per proiettare una media con timeframe a 30 minuti in un grafico di 15 minuti…
    Iván González thanked this post
    #253674 quote
    effegi
    Participant
    Average
    Scusa ma ancora non mi è chiaro: Le curve calcolate sul M30 (medie mobili, supertrend, eccetera) vengono plottate esattamente negli stessi punti su qualsiasi timeframe inferiore (come è giusto che sia) I corrispondenti elementi grafici no. Se guardi gli esempi, l’ultima communtazione del supertrend avviene alla candela del 14/11/25 alle ore 15:30; sul TF M15 o M5 avviene esattamente nello stesso giorno allo stesso orario (giustamente). La freccia di questa ultima commutazione, invece, viene disegnata su M15 il 4/11/25 alle ore 22:30; su M5 il 10/11/25 alle ore 13:00. Proprio non capisco perchè. E’ come se la funzione “multi-timeframe” per gli indicatore funzionasse bene per tutte le curve plottate dal comando finale return, ma non per gli elementi grafici generati nelle sezioni con TF diverso dal default
    #253675 quote
    JS
    Participant
    Senior
    È difficile da spiegare, forse è meglio veder het zo: quando utilizzi un timeframe di 30 minuti, come nel tuo codice, tutto è basato su questi 30 minuti, quindi anche il BarIndex… Quando disegni un oggetto e utilizzi il BarIndex, questo BarIndex sarà diverso nei vari timeframe, e quindi gli oggetti verranno disegnati in un’altra posizione (si sposteranno)… I calcoli non cambiano, perché sono “fissati” nel timeframe di 30 minuti…
    Iván González thanked this post
    #253676 quote
    effegi
    Participant
    Average
    Ci avevo pensato anche io, ma non trovo corrispondenza: sul TF M30 la prima freccia è indietro di 14 barre = 420 minuti sul TF M15 la prima freccia è indietro di 765 barre = 11475 minuti sul TF M5 la prima freccia è indietro di 1269 barre = 6345 minuti non c’è un senso logico
    #253677 quote
    JS
    Participant
    Senior
    Non cercare di trovarci una logica, perché si tratta di calcoli interni (sconosciuti) di PRT… La cosa più importante è capire che gli oggetti vengono disegnati in modo diverso nei vari timeframe a causa dell’uso del “BarIndex” e di un prezzo (OHLC)…
    effegi thanked this post
    #253678 quote
    effegi
    Participant
    Average
    Si si, infatti mi arrendo. ero solo curioso di capire se c’era un mio errore o una spiegazione logica. Questo vuol dire che nel multi-timeframe i calcoli vengono eseguiti correttamente, ma che i valori ottenuti non vanno applicati ad elementi grafici, altrimenti non si capisce più nulla 🙂 Dovrò risolvere il problema in altro modo.
    JS thanked this post
    #253683 quote
    effegi
    Participant
    Average
    Per chi può essere interessato… il problema risiede nell’assegnazione del barindex sui TF superiori (cosa che avviene con criteri non molto chiari), mentre i valori sull’asse Y sono sempre calcolati corretti. Per risolvere, basta modificare il codice di esempio come sotto. In questo modo ad ogni variazione dell’indicatore sull’asse Y nel TF superiore, viene plottata la grafica nel TF Default sul suo barindex, ESATTAMENTE NEGLI STESSI PUNTI. Le eventuali lunghezze di segmenti o rettangoli andranno ricalcolate rapportando il valore di GetTimeframe superiore/GetTimeframe inferiore
    timeframe (30 minutes, updateonclose)
    //timeframe (30 minutes)
    
    TFsup=GetTimeFrame // minuti/candela timeframe superiore
    
    if opentime=120000 then
    YY1=low
    YY2=High
    //drawrectangle (barindex, low, barindex+5, High)
    //drawtext("TEST",barindex+5,high)
    //drawpoint(barindex,low,3)
    ENDIF
    st=Supertrend[3,10]
    if close crosses over st then
    //drawarrowup (barindex, high+10) coloured ("blue")
    yy3=high
    elsif close crosses under st then
    //drawarrowdown (barindex, low-10) coloured ("magenta")
    yy4=low
    endif
    
    timeframe (default)
    
    MoltTF=TFsup/GetTimeFrame //eventuale moltiplicatore lunghezze segmenti sui TF inferiori
    
    if yy1<>yy1[1] then
    drawrectangle (barindex, yy1,barindex+5*MoltTF, yy2)
    drawtext("TEST",barindex+5*MoltTF,yy2)
    drawpoint(barindex,yy1,3)
    endif
    
    if yy3<>yy3[1] then
    drawarrowup (barindex, yy3+10) coloured ("blue")
    endif
    
    if yy4<>yy4[1] then
    drawarrowdown (barindex, yy4-10) coloured ("magenta")
    endif
    
    return st
    
    M30-M10.jpg M30-M10.jpg
    #253685 quote
    effegi
    Participant
    Average
    In questo modo, un indicatore che viene utilizzato sul TF 4 ore (per esempio) e che ha una sua grafica fatta non solo di curve ma anche di testi/frecce/bande/forme varie, plotterà le stesse indicazioni su qualsiasi timeframe inferiore (sottomultiolo ovviamente) negli stessi punti (che era quello che mi serviva per non tener aperti più grafici per confrontare indicatori utilizzati su TF diversi) Buona giornata
    #253688 quote
    robertogozzi
    Moderator
    Master
    Questo l’ho provato sul DAX, 1 minuto e 5 minuti, e funziona:
    timeframe (30 minutes,updateonclose)
    if time=120000 then
       high12 = high
       low12  = low
    ENDIF
    //
    timeframe(default)
    if opentime=120000 then
       drawrectangle (barindex, low12, barindex+5, High12)
       drawtext("TEST",barindex+5,high12)
       drawpoint(barindex,low12,3)
    ENDIF
    return
    nel TF a 30 minuti ho sostituitio OpenTime con Time, perché UpdateOnClose aggiorna i dati alla chiusura, quindi alle 12:30, perché deve verificare l’orario che era all’apertura (OPENtime) cioè le 12:00. Il problema è che il TF ad 1 minuto detta il passo, per cui lui si aggiorna ogni minuto, quindi la candela che apre alle 12:00 chiude alle 12:01, ma sul TF a 30 minuti la candela delle 12:00 chiuderà alle 12:30, quando ormai sul TF a 1 minuto quell’orario sarà passato e non stamperà più. Per questo vedi orari e prezzi strambi.
    effegi and Iván González thanked this post
    #253691 quote
    effegi
    Participant
    Average
    Ahhhh…. perfetto! Era quello il vero problema 🙂 In effetti con quella piccola correzione funziona tutto bene senza troppe complicazioni. Per adattare le lunghezze orizzontali basta moltiplicare per il rapporto fra i gettimeframe, ma il punto di riferimento da cui partire ora è corretto su ogni TF Grazie Rob!
    robertogozzi thanked this post
Viewing 13 posts - 1 through 13 (of 13 total)
  • You must be logged in to reply to this topic.

Anomalia grafica su timeframe dal Default


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
effegi @effegi Participant
Summary

This topic contains 12 replies,
has 3 voices, and was last updated by effegi
3 months, 1 week ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 11/15/2025
Status: Active
Attachments: 7 files
Logo Logo
Loading...