problemi con l’utilizzo del multitime frame
Forums › ProRealTime forum Italiano › Supporto ProBuilder › problemi con l’utilizzo del multitime frame
- This topic has 7 replies, 2 voices, and was last updated 11 hours ago by
Iván.
-
-
09/08/2025 at 11:03 AM #250489open/close&ATR123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107//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=TRUEif OTTAVIGANN thenif openclose thenlevelh=DOpen(0)+ATRD1levels=DOpen(0)-ATRD1levelo=DOpen(0)levelh50=DOpen(0)+ATRD1*.5levels50=DOpen(0)-ATRD1*.5levelh75=DOpen(0)+ATRD1*.75levels75=DOpen(0)-ATRD1*.75levelh875=DOpen(0)+ATRD1*.875levels875=DOpen(0)-ATRD1*.875levelh125=DOpen(0)+ATRD1*.125levels125=DOpen(0)-ATRD1*.125levelh1125=DOpen(0)+ATRD1*1.125levels1125=DOpen(0)-ATRD1*1.125levelh25=DOpen(0)+ATRD1*.25levels25=DOpen(0)-ATRD1*.25levelh625=DOpen(0)+ATRD1*.625levels625=DOpen(0)-ATRD1*.625levelh375=DOpen(0)+ATRD1*.375levels375=DOpen(0)-ATRD1*.375elselevelh=DClose(1)+ATRD1levels=DClose(1)-ATRD1levelo=DClose(1)levelh50=DClose(1)+ATRD1*.5levels50=DClose(1)-ATRD1*.5levelh75=DClose(1)+ATRD1*.75levels75=DClose(1)-ATRD1*.75levelh875=DClose(1)+ATRD1*.875levels875=DClose(1)-ATRD1*.875levelh125=DClose(1)+ATRD1*.125levels125=DClose(1)-ATRD1*.125levelh1125=DClose(1)+ATRD1*1.125levels1125=DClose(1)-ATRD1*1.125levelh25=DClose(1)+ATRD1*.25levels25=DClose(1)-ATRD1*.25levelh625=DClose(1)+ATRD1*.625levels625=DClose(1)-ATRD1*.625levelh375=DClose(1)+ATRD1*.375levels375=DClose(1)-ATRD1*.375endifendifif LIVELLIFIBO thenif openclose thenlevelh=DOpen(0)+ATRD1levels=DOpen(0)-ATRD1levelo=DOpen(0)levelh50=DOpen(0)+ATRD1*.5levels50=DOpen(0)-ATRD1*.5levelh75=DOpen(0)+ATRD1*.764levels75=DOpen(0)-ATRD1*.764levelh125=DOpen(0)+ATRD1*.118levels125=DOpen(0)-ATRD1*.118levelh25=DOpen(0)+ATRD1*.236levels25=DOpen(0)-ATRD1*.236levelh625=DOpen(0)+ATRD1*.618levels625=DOpen(0)-ATRD1*.618levelh375=DOpen(0)+ATRD1*.382levels375=DOpen(0)-ATRD1*.382elselevelh=DClose(1)+ATRD1levels=DClose(1)-ATRD1levelo=DClose(1)levelh50=DClose(1)+ATRD1*.5levels50=DClose(1)-ATRD1*.5levelh75=DClose(1)+ATRD1*.764levels75=DClose(1)-ATRD1*.764levelh125=DClose(1)+ATRD1*.118levels125=DClose(1)-ATRD1*.118levelh25=DClose(1)+ATRD1*.236levels25=DClose(1)-ATRD1*.236levelh625=DClose(1)+ATRD1*.618levels625=DClose(1)-ATRD1*.618levelh375=DClose(1)+ATRD1*.382levels375=DClose(1)-ATRD1*.382endifendif//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
09/08/2025 at 11:58 AM #250498Ciao. Prova con questo semplice codice. Da lì potrai costruire il tuo.
12345678910111213141516defparam drawonlastbaronly=truetimeframe(1day,updateonclose)mult=1p=5atr=averagetruerange[p](close)upper=atr*mult+openlower=-atr*mult+opentimeframe(default)if islastbarupdate thendrawsegment(barindex,upper,barindex+10,upper)coloured("blue")drawsegment(barindex,lower,barindex+10,lower)coloured("red")endifreturn09/08/2025 at 4:55 PM #250518le 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
09/09/2025 at 7:54 AM #25053509/09/2025 at 8:03 AM #250537si 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.
09/09/2025 at 9:37 AM #250550Ok, vedo che il problema è dovuto all’uso di
dclose(1)
nei timeframe inferiori.
La soluzione è salvare manualmente l’open e il close di chiusura.12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455//Questo indicatore calcola dei livelli//di volatiltà utilizzando l'ATR del giornoDEFPARAM DRAWONLASTBARONLY=TRUEtimeframe(1 day,updateonclose)ATRD0=AverageTrueRange[5](close)ATRD1=ATRD0[1]timeframe(default)if openday<>openday[1] thenif openclose thenlevelh=open+ATRD1levels=open-ATRD1levelo=openlevelh50=open+ATRD1*.5levels50=open-ATRD1*.5levelh75=open+ATRD1*.75levels75=open-ATRD1*.75levelh875=open+ATRD1*.875levels875=open-ATRD1*.875levelh125=open+ATRD1*.125levels125=open-ATRD1*.125levelh1125=open+ATRD1*1.125levels1125=open-ATRD1*1.125levelh25=open+ATRD1*.25levels25=open-ATRD1*.25levelh625=open+ATRD1*.625levels625=open-ATRD1*.625levelh375=open+ATRD1*.375levels375=open-ATRD1*.375elselevelh=close[1]+ATRD1levels=close[1]-ATRD1levelo=close[1]levelh50=close[1]+ATRD1*.5levels50=close[1]-ATRD1*.5levelh75=close[1]+ATRD1*.75levels75=close[1]-ATRD1*.75levelh875=close[1]+ATRD1*.875levels875=close[1]-ATRD1*.875levelh125=close[1]+ATRD1*.125levels125=close[1]-ATRD1*.125levelh1125=close[1]+ATRD1*1.125levels1125=close[1]-ATRD1*1.125levelh25=close[1]+ATRD1*.25levels25=close[1]-ATRD1*.25levelh625=close[1]+ATRD1*.625levels625=close[1]-ATRD1*.625levelh375=close[1]+ATRD1*.375levels375=close[1]-ATRD1*.375endifendifreturn 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"2 users thanked author for this post.
09/09/2025 at 9:33 PM #250609Grazie. Una domanda: come mai open e close[1] prendono i valori del time frame giornaliero anche dopo la riga 9 che dice timeframe(default)?
09/10/2025 at 9:00 AM #250614Buongiorno. 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.
1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on