problemi con l’utilizzo del multitime frame

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #250489 quote
    Gabriele Battista
    Participant
    Senior
    //Questo indicatore calcola dei livelli
    //di volatiltà utilizzando l'ATR del giorno
    //precedente (input- a 5gg)
    //e il valore del close precedente (1)
    //o dell'open della giornata (0)
    //
    //timeframe(1 day,updateonclose)
    //ATRD0=AverageTrueRange[n](close)
    //ATRD1=ATRD0[1]
    
    DEFPARAM DRAWONLASTBARONLY=TRUE
    
    if OTTAVIGANN then
    if openclose then
    levelh=DOpen(0)+ATRD1
    levels=DOpen(0)-ATRD1
    levelo=DOpen(0)
    levelh50=DOpen(0)+ATRD1*.5
    levels50=DOpen(0)-ATRD1*.5
    levelh75=DOpen(0)+ATRD1*.75
    levels75=DOpen(0)-ATRD1*.75
    levelh875=DOpen(0)+ATRD1*.875
    levels875=DOpen(0)-ATRD1*.875
    levelh125=DOpen(0)+ATRD1*.125
    levels125=DOpen(0)-ATRD1*.125
    levelh1125=DOpen(0)+ATRD1*1.125
    levels1125=DOpen(0)-ATRD1*1.125
    levelh25=DOpen(0)+ATRD1*.25
    levels25=DOpen(0)-ATRD1*.25
    levelh625=DOpen(0)+ATRD1*.625
    levels625=DOpen(0)-ATRD1*.625
    levelh375=DOpen(0)+ATRD1*.375
    levels375=DOpen(0)-ATRD1*.375
    
    else
    levelh=DClose(1)+ATRD1
    levels=DClose(1)-ATRD1
    levelo=DClose(1)
    levelh50=DClose(1)+ATRD1*.5
    levels50=DClose(1)-ATRD1*.5
    levelh75=DClose(1)+ATRD1*.75
    levels75=DClose(1)-ATRD1*.75
    levelh875=DClose(1)+ATRD1*.875
    levels875=DClose(1)-ATRD1*.875
    levelh125=DClose(1)+ATRD1*.125
    levels125=DClose(1)-ATRD1*.125
    levelh1125=DClose(1)+ATRD1*1.125
    levels1125=DClose(1)-ATRD1*1.125
    levelh25=DClose(1)+ATRD1*.25
    levels25=DClose(1)-ATRD1*.25
    levelh625=DClose(1)+ATRD1*.625
    levels625=DClose(1)-ATRD1*.625
    levelh375=DClose(1)+ATRD1*.375
    levels375=DClose(1)-ATRD1*.375
    endif
    endif
    
    if LIVELLIFIBO then
    if openclose then
    levelh=DOpen(0)+ATRD1
    levels=DOpen(0)-ATRD1
    levelo=DOpen(0)
    levelh50=DOpen(0)+ATRD1*.5
    levels50=DOpen(0)-ATRD1*.5
    levelh75=DOpen(0)+ATRD1*.764
    levels75=DOpen(0)-ATRD1*.764
    levelh125=DOpen(0)+ATRD1*.118
    levels125=DOpen(0)-ATRD1*.118
    levelh25=DOpen(0)+ATRD1*.236
    levels25=DOpen(0)-ATRD1*.236
    levelh625=DOpen(0)+ATRD1*.618
    levels625=DOpen(0)-ATRD1*.618
    levelh375=DOpen(0)+ATRD1*.382
    levels375=DOpen(0)-ATRD1*.382
    else
    levelh=DClose(1)+ATRD1
    levels=DClose(1)-ATRD1
    levelo=DClose(1)
    levelh50=DClose(1)+ATRD1*.5
    levels50=DClose(1)-ATRD1*.5
    levelh75=DClose(1)+ATRD1*.764
    levels75=DClose(1)-ATRD1*.764
    levelh125=DClose(1)+ATRD1*.118
    levels125=DClose(1)-ATRD1*.118
    levelh25=DClose(1)+ATRD1*.236
    levels25=DClose(1)-ATRD1*.236
    levelh625=DClose(1)+ATRD1*.618
    levels625=DClose(1)-ATRD1*.618
    levelh375=DClose(1)+ATRD1*.382
    levels375=DClose(1)-ATRD1*.382
    endif
    endif
    
    
    //ATRgrafico=AverageTrueRange[n](close)
    DrawText("OPEN = #LEVELO#",BarIndex+10,LEVELO) COLOURED  (0,153,153)
    DrawText("OPEN + ATR(5)",BarIndex+10,LEVELH) COLOURED  (248,0,0)
    DrawText("OPEN - ATR(5)",BarIndex+10,LEVELS) COLOURED  (248,0,0)
    DrawText("OPEN + 0,25 ATR(5)",BarIndex+10,LEVELH25) COLOURED  (0,153,153)
    DrawText("OPEN - 0,25 ATR(5)",BarIndex+10,LEVELS25) COLOURED  (0,153,153)
    DrawText("OPEN + 0,5 ATR(5)",BarIndex+10,LEVELH50) COLOURED  (0,153,153)
    DrawText("OPEN - 0,5 ATR(5)",BarIndex+10,LEVELS50) COLOURED  (0,153,153)
    DrawText("OPEN + 0,75 ATR(5)",BarIndex+10,LEVELH75) COLOURED  (0,153,153)
    DrawText("OPEN - 0,75 ATR(5)",BarIndex+10,LEVELS75) COLOURED  (0,153,153)
    
    
    return Levelh as "open+ATR", levels as "open-ATR", levelh50 as "open+0,5atr", levels50 as "open-0,5atr", levelh25 as "open+0,25atr", levels25 as "open-0,25atr", levelo as "open", levelh125 as "open+0,125atr", levels125 as "open-0,125atr", levelh1125 as "open+1,125atr", levels1125 as "open-1,125atr",levelh375 as "open+0,375atr", levels375 as "open-0,375atr",levelh75 as "open+0,75atr", levels75 as "open-0,75atr",levelh875 as "open+0,875atr", levels875 as "open-0,875atr",levelh625 as "open+0,625atr", levels625 as "open-0,625atr"

    buongiorno, questo indicatore traccia dei livelli orizzontali utilizzando l’ATR del giorno precedente su time frame inferiori al daily. non sono riuscito ad utilizzare la funzione TIMEFRAME ed ho dovuto lasciare l’ATR del giorno precedente come input. E’ possibile avere il codice corretto, grazie

    #250498 quote
    Iván González
    Moderator
    Master

    Ciao. Prova con questo semplice codice. Da lì potrai costruire il tuo.

    defparam drawonlastbaronly=true
    timeframe(1day,updateonclose)
    mult=1
    p=5
    
    atr=averagetruerange[p](close)
    upper=atr*mult+open
    lower=-atr*mult+open
    
    timeframe(default)
    if islastbarupdate then
       drawsegment(barindex,upper,barindex+10,upper)coloured("blue")
       drawsegment(barindex,lower,barindex+10,lower)coloured("red")
    endif
    
    return
    
    #250518 quote
    Gabriele Battista
    Participant
    Senior

    le tue righe di codice servono a tracciare un segmento dopo la barra attuale, se uso le righe 2 e 5 adattate al mio codice ho sempre l’errore allegato

    #250535 quote
    Iván González
    Moderator
    Master

    Puoi condividere l'indicatore in formato .itf?

    #250537 quote
    Gabriele Battista
    Participant
    Senior

    si certo. questo funziona perchè ho messo ATRD1 come variabile che inserisco come input. se tolgo la variabile e i commenti nelle righe 10-13 mi da errore di calcolo.

    #250550 quote
    Iván González
    Moderator
    Master

    Ok, vedo che il problema è dovuto all’uso di dclose(1) nei timeframe inferiori.
    La soluzione è salvare manualmente l’open e il close di chiusura.

    //Questo indicatore calcola dei livelli
    //di volatiltà utilizzando l'ATR del giorno
    DEFPARAM DRAWONLASTBARONLY=TRUE
    
    timeframe(1 day,updateonclose)
    ATRD0=AverageTrueRange[5](close)
    ATRD1=ATRD0[1]
    
    timeframe(default)
    if openday<>openday[1] then
       if openclose then
          levelh=open+ATRD1
          levels=open-ATRD1
          levelo=open
          levelh50=open+ATRD1*.5
          levels50=open-ATRD1*.5
          levelh75=open+ATRD1*.75
          levels75=open-ATRD1*.75
          levelh875=open+ATRD1*.875
          levels875=open-ATRD1*.875
          levelh125=open+ATRD1*.125
          levels125=open-ATRD1*.125
          levelh1125=open+ATRD1*1.125
          levels1125=open-ATRD1*1.125
          levelh25=open+ATRD1*.25
          levels25=open-ATRD1*.25
          levelh625=open+ATRD1*.625
          levels625=open-ATRD1*.625
          levelh375=open+ATRD1*.375
          levels375=open-ATRD1*.375
          
       else
          levelh=close[1]+ATRD1
          levels=close[1]-ATRD1
          levelo=close[1]
          levelh50=close[1]+ATRD1*.5
          levels50=close[1]-ATRD1*.5
          levelh75=close[1]+ATRD1*.75
          levels75=close[1]-ATRD1*.75
          levelh875=close[1]+ATRD1*.875
          levels875=close[1]-ATRD1*.875
          levelh125=close[1]+ATRD1*.125
          levels125=close[1]-ATRD1*.125
          levelh1125=close[1]+ATRD1*1.125
          levels1125=close[1]-ATRD1*1.125
          levelh25=close[1]+ATRD1*.25
          levels25=close[1]-ATRD1*.25
          levelh625=close[1]+ATRD1*.625
          levels625=close[1]-ATRD1*.625
          levelh375=close[1]+ATRD1*.375
          levels375=close[1]-ATRD1*.375
       endif
    endif
    
    return Levelh as "open+ATR", levels as "open-ATR", levelh50 as "open+0,5atr", levels50 as "open-0,5atr", levelh25 as "open+0,25atr", levels25 as "open-0,25atr", levelo as "open", levelh125 as "open+0,125atr", levels125 as "open-0,125atr", levelh1125 as "open+1,125atr", levels1125 as "open-1,125atr",levelh375 as "open+0,375atr", levels375 as "open-0,375atr",levelh75 as "open+0,75atr", levels75 as "open-0,75atr",levelh875 as "open+0,875atr", levels875 as "open-0,875atr",levelh625 as "open+0,625atr", levels625 as "open-0,625atr"
    
    robertogozzi and Gabriele Battista thanked this post
    #250609 quote
    Gabriele Battista
    Participant
    Senior

    Grazie. Una domanda: come mai open e close[1] prendono i valori del time frame giornaliero anche dopo la riga 9 che dice timeframe(default)?

    #250614 quote
    Iván González
    Moderator
    Master

    Buongiorno. Questo lo facciamo con l’espressione openday<>openday\[1], in questo modo quando cambia il giorno si memorizza il prezzo di chiusura della candela precedente e il prezzo di apertura di quella attuale.

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

problemi con l’utilizzo del multitime frame


ProBuilder: Indicatori & Strumenti Personalizzati

New Reply
Summary

This topic contains 7 replies,
has 2 voices, and was last updated by Iván González
4 months, 3 weeks ago.

Topic Details
Forum: ProBuilder: Indicatori & Strumenti Personalizzati
Language: Italian
Started: 09/08/2025
Status: Active
Attachments: 3 files
Logo Logo
Loading...