Problema refresh indicatore

Viewing 3 posts - 1 through 3 (of 3 total)
  • Author
    Posts
  • #187532 quote
    effegi
    Participant
    Senior

    Buongiorno, ho scritto un indicatore che traccia alcuni livelli sensibili (da usare solo sul timeframe Daily), che fa uso di un ciclo FOR abbastanza semplice.

    L’indicatore funziona perfettamente, nel senso che il codice traccia i livelli esattamente come li avevo in mente, ma in modo random ogni tanto si “blocca” quando cambio lo strumento sul grafico. Per esempio, se visualizzo il DAX e passo a SP500o o Nasdaq può capitare che:

    • o non visualizza più alcun segmento
    • o traccia segmenti e testi in punti completamente sfasati rispetto a com’è stato programmato

    Per risolvere, sono costretto a cambiare il numero di barre visualizzate (cambiando fra numero di unità o mesi), oppure cambiando il numero di cicli FOR. Solo in questo modo l’indicatore è come se facesse un “refresh” e torna a calcolare tutto correttamente.

    Ho provato a cambiare il parametro CALCULATEONLASTBARS all’inizio del codice (o anche a rimuoverlo), a ridurre il numero dei cicli for (di default 100 giorni di ricerca all’indietro), ma nulla.

    Ho provato ad aggiungere anche l’istruzione “islastbarupdate” a monte di tutto, ma apparentemente senza effetto.

    Sto un po’ impazzendo, non capisco perché solo quando si cambia lo strumento a volte si blocchi tutto, come se la piattaforma sbagliasse a caricare l’indicatore dall’inizio della barra del nuovo strumento selezionato

    Non so cosa stia sbagliando, ho provato un po di tutto….. 🙂

    Grazie a chi vorrà darmi qualche suggerimento/spiegazione in merito

     

    (scusate ma non vedo il pulsante <b>”Insert PRT code” </b>)

     

    //T.F. V.0 - 08/01/2022 - Livelli comprati/venduti e min/max daily vergini - da usare solo su TF Daily
    
    defparam DRAWONLASTBARONLY=true
    rem defparam CALCULATEONLASTBARS=101
    xx=100 //candele back
    
    rem if islastbarupdate then // prova ad inserire il comando islastbarupdate
    for i=1 to xx do
    
    //livelli comprati
    if dclose(i)>dopen(i) then //LIVELLI COMPRATI VERDI - SOTTO IL CLOSE DI IERI
    if Dhigh(i+1)<dclose(i) and dhigh(i+1)>dlow(i) and dhigh(i+1)<=lowest[i](close)[1] then
    drawsegment (barindex[i+1], dhigh(i+1), barindex+1, dhigh(i+1)) coloured (0,200,0) //max comprato 1gg prima
    drawtext("AC#i#",barindex+1,dhigh(i)) coloured (0,200,0)
    endif
    if Dhigh(i+1)<dclose(i) and Dhigh(i+2)<dclose(i) and dhigh(i+2)>dhigh(i+1) and dhigh(i+2)>dlow(i) and dhigh(i+2)<=lowest[i](close)[1] then
    drawsegment (barindex[i+2], dhigh(i+2), barindex+1, dhigh(i+2)) coloured (0,200,0) //max comprato 2gg prima solo se è sopra dclose(i+1)
    drawtext("AC#i#",barindex+1,dhigh(i)) coloured (0,200,0)
    endif
    
    if (Dhigh(i+1)+Dlow(i+1))/2<dclose(1) and Dlow(i+1)>dlow(i) and dlow(i+1)<=lowest[i](close)[1] then
    drawsegment (barindex[i+1], dlow(i+1), barindex+1, dlow(i+1)) coloured (0,200,0)//min comprato 1gg prima
    drawtext("AC#i#",barindex+1,dhigh(i)) coloured (0,200,0)
    endif
    if (Dhigh(i+2)+Dlow(i+2))/2<dclose(1) and Dlow(i+2)<dlow(i+1) and Dlow(i+2)>dlow(i) and dlow(i+2)<=lowest[i](close)[1] then
    drawsegment (barindex[i+2], dlow(i+2), barindex+1, dlow(i+2)) coloured (0,200,0)//min comprato 2gg prima solo se è sotto dopen(i+1)
    drawtext("AC#i#",barindex+1,dhigh(i)) coloured (0,200,0)
    endif
    endif
    
    //livelli venduti
    if dclose(i)<dopen(i) then
    if Dlow(i+1)>dclose(i) and dlow(i+1)<dhigh(i) and dlow(i+1)>=highest[i](close)[1] then
    drawsegment (barindex[i+1], dlow(i+1), barindex+1, dlow(i+1)) coloured (200,0,0) //min venduto 1gg prima
    drawtext("AV#i#",barindex+1,dhigh(i)) coloured (200,0,0)
    endif
    if Dlow(i+1)>dclose(i) and Dlow(i+2)>dclose(i) and dlow(i+2)<dlow(i+1) and dlow(i+2)<dhigh(i) and dlow(i+2)>=highest[i](close)[1] then
    drawsegment (barindex[i+2], dlow(i+2), barindex+1, dlow(i+2)) coloured (200,0,0) //min venduto 2gg prima solo se è sotto dclose(i+1)
    drawtext("AV#i#",barindex+1,dhigh(i)) coloured (200,0,0)
    endif
    
    if (Dhigh(i+1)+Dlow(i+1))/2>dclose(1) and Dhigh(i+1)<dhigh(i) and dhigh(i+1)>=highest[i](close)[1] then
    drawsegment (barindex[i+1], dhigh(i+1), barindex+1, dhigh(i+1)) coloured (200,0,0)//max venduto 1gg prima
    drawtext("AV#i#",barindex+1,dhigh(i)) coloured (200,0,0)
    endif
    if (Dhigh(i+2)+Dlow(i+2))/2>dclose(1) and Dhigh(i+2)>dhigh(i+1) and Dhigh(i+2)<high[i] and dhigh(i+2)>=highest[i](close)[1] then
    drawsegment (barindex[i+2], dhigh(i+2), barindex+1, dhigh(i+2)) coloured (200,0,0)//max venduto 2gg prima solo se è sopra dopen(i+1)
    drawtext("AV#i#",barindex+1,dhigh(i)) coloured (200,0,0)
    endif
    endif
    
    ////minimi e massimi vergini
    if dhigh(i)>highest[i](high) then
    drawsegment (barindex[i], dhigh(i), barindex, dhigh(i)) coloured (0,0,200) //max vergine
    drawtext("DH#i#",barindex+1,dhigh(i)) coloured (0,0,200)
    endif
    
    if dlow(i)<lowest[i](low) then
    drawsegment (barindex[i], dlow(i), barindex, dlow(i)) coloured (0,0,200) //min vergine
    drawtext("DL#i#",barindex+1,dlow(i)) coloured (0,0,200)
    endif
    
    next
    
    return
    
    Immagine-2022-02-04-142222.jpg Immagine-2022-02-04-142222.jpg TF-ADD_V0_prc.itf
    #187547 quote
    robertogozzi
    Moderator
    Master

    Cosa significa LOF ?

    Qual’è lo strumento del grafico e la data della candela errata?

    effegi thanked this post
    #187551 quote
    effegi
    Participant
    Senior

    Risolto…. cioè, ho capito quando succede questo fenomeno random di freezing o a volte errata tracciatura dell’indicatore. Riporto per utilità della community:

    Avevo più grafici collegati fra loro (5 per l’esattezza), dove su ognuno dei quali giravano altri indicatori con cicli FOR e WHILE. Cambiando lo strumento ad uno di essi, naturalmente anche gli altri commutavano sul nuovo strumento, e quindi partiva il ricalcolo su una serie di indicatori, tutti contemporaneamente.

    Scollegando i grafici fra di loro, e quindi facendo cambiare (a mano) lo strumento singolarmente su ogni grafico… per magia l’anomalia è scomparsa :). Gli indicatori su ogni grafico vengono plottati sempre correttamente.

    La mia ipotesi è che questo ricalcolo simultaneo di una decina di indicatori, sui 5 grafici e su diversi timeframe a volte può aver messo in crisi la piattaforma (oppure il problema è altrove… ma scollegando i grafici si è risolto, quindi tutto bene 🙂

    Grazie ugualmente dell’attenzione.

    🙂

    robertogozzi thanked this post
Viewing 3 posts - 1 through 3 (of 3 total)
  • You must be logged in to reply to this topic.

Problema refresh indicatore


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Author
author-avatar
effegi @effegi Participant
Summary

This topic contains 2 replies,
has 2 voices, and was last updated by effegi
4 years, 1 month ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 02/04/2022
Status: Active
Attachments: 2 files
Logo Logo
Loading...