Ho buttato giù questo per il DAX, TF 1 ora, ma è veramente ingestibile. Purtroppo mancano gli array nel linguaggio PRT, per cui per ogni ora occorrono un sacco di righe.
Oltre ad essere lentissimo funziona solo con il DAX, BUND, FTSE 100 e pochi altri, sulle valute ho provato ma ogni dato sovrascrive il precedente, per cui si vede solo una riga illeggibile. E’ un problema di visualizzazione, occorrerebbe fare moltissime prove. Se pensi possa valerne la pene lascio a te il compito di trovare i settaggi per farlo.
Occorrerebbe avere i dati in formato eXcel per poterli lavorare a piacimento. Chissà se se ne trovano su internet.
//DEFPARAM CalculateOnLastBars = 100
DEFPARAM DrawOnLastBarOnly = TRUE
Display = 75 //visualizzare statistiche sulla 70esima barra precedente
TotaleBarre = 60 //suddividere il totale su 60 barre
Divisore = 5 //divisore delle barre per il display
InizioDisplay = 180 * pipsize //offset, sopra CLOSE, da dove iniziare a stampare
DistanzaRighe = round((InizioDisplay * 05.0) / 24) * pipsize //distanza, in Pips, tra le righe
ONCE Contatore = 0
ONCE Range00 = 0
ONCE Range01 = 0
ONCE Range02 = 0
ONCE Range03 = 0
ONCE Range04 = 0
ONCE Range05 = 0
ONCE Range06 = 0
ONCE Range07 = 0
ONCE Range08 = 0
ONCE Range09 = 0
ONCE Range10 = 0
ONCE Range11 = 0
ONCE Range12 = 0
ONCE Range13 = 0
ONCE Range14 = 0
ONCE Range15 = 0
ONCE Range16 = 0
ONCE Range17 = 0
ONCE Range18 = 0
ONCE Range19 = 0
ONCE Range20 = 0
ONCE Range21 = 0
ONCE Range22 = 0
ONCE Range23 = 0
ONCE TotalRange = 0
IF IntradayBarIndex = 0 THEN
IF Contatore = 0 THEN
Contatore = 1
ELSE
Contatore = Contatore + 1
ENDIF
ENDIF
IF Contatore > 0 THEN
TotalRange = TotalRange + range
MediaRange = TotalRange / Contatore
IF OpenHour = 00 THEN
Range00 = Range00 + range
Media00 = Range00 / Contatore
Perc00 = (Media00 * 100) / MediaRange
Barre00 = max(1,round((Perc00 * TotaleBarre) / 100))
ELSIF OpenHour = 01 THEN
Range01 = Range01 + range
Media01 = Range01 / Contatore
Perc01 = (Media01 * 100) / MediaRange
Barre01 = max(1,round((Perc01 * TotaleBarre) / 100))
ELSIF OpenHour = 02 THEN
Range02 = Range02 + range
Media02 = Range02 / Contatore
Perc02 = (Media02 * 100) / MediaRange
Barre02 = max(1,round((Perc02 * TotaleBarre) / 100))
ELSIF OpenHour = 03 THEN
Range03 = Range03 + range
Media03 = Range03 / Contatore
Perc03 = (Media03 * 100) / MediaRange
Barre03 = max(1,round((Perc03 * TotaleBarre) / 100))
ELSIF OpenHour = 04 THEN
Range04 = Range04 + range
Media04 = Range04 / Contatore
Perc04 = (Media04 * 100) / MediaRange
Barre04 = max(1,round((Perc04 * TotaleBarre) / 100))
ELSIF OpenHour = 05 THEN
Range05 = Range05 + range
Media05 = Range05 / Contatore
Perc05 = (Media05 * 100) / MediaRange
Barre05 = max(1,round((Perc05 * TotaleBarre) / 100))
ELSIF OpenHour = 06 THEN
Range06 = Range06 + range
Media06 = Range06 / Contatore
Perc06 = (Media06 * 100) / MediaRange
Barre06 = max(1,round((Perc06 * TotaleBarre) / 100))
ELSIF OpenHour = 07 THEN
Range07 = Range07 + range
Media07 = Range07 / Contatore
Perc07 = (Media07 * 100) / MediaRange
Barre07 = max(1,round((Perc07 * TotaleBarre) / 100))
ELSIF OpenHour = 08 THEN
Range08 = Range08 + range
Media08 = Range08 / Contatore
Perc08 = (Media08 * 100) / MediaRange
Barre08 = max(1,round((Perc08 * TotaleBarre) / 100))
ELSIF OpenHour = 09 THEN
Range09 = Range09 + range
Media09 = Range09 / Contatore
Perc09 = (Media09 * 100) / MediaRange
Barre09 = max(1,round((Perc09 * TotaleBarre) / 100))
ELSIF OpenHour = 10 THEN
Range10 = Range10 + range
Media10 = Range10 / Contatore
Perc10 = (Media10 * 100) / MediaRange
Barre10 = max(1,round((Perc10 * TotaleBarre) / 100))
ELSIF OpenHour = 11 THEN
Range11 = Range11 + range
Media11 = Range11 / Contatore
Perc11 = (Media11 * 100) / MediaRange
Barre11 = max(1,round((Perc11 * TotaleBarre) / 100))
ELSIF OpenHour = 12 THEN
Range12 = Range12 + range
Media12 = Range12 / Contatore
Perc12 = (Media12 * 100) / MediaRange
Barre12 = max(1,round((Perc12 * TotaleBarre) / 100))
ELSIF OpenHour = 13 THEN
Range13 = Range13 + range
Media13 = Range13 / Contatore
Perc13 = (Media13 * 100) / MediaRange
Barre13 = max(1,round((Perc13 * TotaleBarre) / 100))
ELSIF OpenHour = 14 THEN
Range14 = Range14 + range
Media14 = Range14 / Contatore
Perc14 = (Media14 * 100) / MediaRange
Barre14 = max(1,round((Perc14 * TotaleBarre) / 100))
ELSIF OpenHour = 15 THEN
Range15 = Range15 + range
Media15 = Range15 / Contatore
Perc15 = (Media15 * 100) / MediaRange
Barre15 = max(1,round((Perc15 * TotaleBarre) / 100))
ELSIF OpenHour = 16 THEN
Range16 = Range16 + range
Media16 = Range16 / Contatore
Perc16 = (Media16 * 100) / MediaRange
Barre16 = max(1,round((Perc16 * TotaleBarre) / 100))
ELSIF OpenHour = 17 THEN
Range17 = Range17 + range
Media17 = Range17 / Contatore
Perc17 = (Media17 * 100) / MediaRange
Barre17 = max(1,round((Perc17 * TotaleBarre) / 100))
ELSIF OpenHour = 18 THEN
Range18 = Range18 + range
Media18 = Range18 / Contatore
Perc18 = (Media18 * 100) / MediaRange
Barre18 = max(1,round((Perc18 * TotaleBarre) / 100))
ELSIF OpenHour = 19 THEN
Range19 = Range19 + range
Media19 = Range19 / Contatore
Perc19 = (Media19 * 100) / MediaRange
Barre19 = max(1,round((Perc19 * TotaleBarre) / 100))
ELSIF OpenHour = 20 THEN
Range20 = Range20 + range
Media20 = Range20 / Contatore
Perc20 = (Media20 * 100) / MediaRange
Barre20 = max(1,round((Perc20 * TotaleBarre) / 100))
ELSIF OpenHour = 21 THEN
Range21 = Range21 + range
Media21 = Range21 / Contatore
Perc21 = (Media21 * 100) / MediaRange
Barre21 = max(1,round((Perc21 * TotaleBarre) / 100))
ELSIF OpenHour = 22 THEN
Range22 = Range22 + range
Media22 = Range22 / Contatore
Perc22 = (Media22 * 100) / MediaRange
Barre22 = max(1,round((Perc22 * TotaleBarre) / 100))
ELSIF OpenHour = 23 THEN
Range23 = Range23 + range
Media23 = Range23 / Contatore
Perc23 = (Media23 * 100) / MediaRange
Barre23 = max(1,round((Perc23 * TotaleBarre) / 100))
ENDIF
TotalePips = InizioDisplay
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre23,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h23: #Media23#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre22,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h22: #Media22#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre21,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h21: #Media21#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre20,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h20: #Media20#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre19,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h19: #Media19#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre18,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h18: #Media18#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre17,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h17: #Media17#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre16,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h16: #Media16#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre15,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h15: #Media15#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre14,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h14: #Media14#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre13,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h13: #Media13#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre12,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h12: #Media12#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre11,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h11: #Media11#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre10,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h10: #Media10#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre09,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h09: #Media09#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre08,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h08: #Media08#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre07,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h07: #Media07#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre06,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h06: #Media06#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre05,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h05: #Media05#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre04,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h04: #Media04#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre03,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h03: #Media03#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre02,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h02: #Media02#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre01,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h01: #Media01#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
TotalePips = TotalePips - DistanzaRighe
DRAWSEGMENT(barindex-Display,max(close,open)+TotalePips,barindex-Display+Barre00,max(close,open)+TotalePips)coloured(0,128,0,255)
DrawText("h00: #Media00#",barindex-Display+(round(TotaleBarre/divisore)),max(close,open)+TotalePips,SansSerif,Standard,10)coloured(0,128,0,255)
ENDIF
RETURN