DEFPARAM DrawOnLastBarOnly = true
//
// inizializzazione delle variabili
//
IF BarIndex = 0 THEN
Pips = 100 * pipsize //100 pips oltre/sotto la chiusura
MaxBarre = 40 //40 barre di durate della linea dal segnale
Media = 0
Conto = 0
Barra = 0
InizioRett = 0
FineRett = 0
PrezzoMax = 0
PrezzoMin = 0
ENDIF
//
// se il conto è iniziato, incrementarlo di 1 e verificare che non abbia superato il massimo,
// nel qual caso si riparte dall'inizio azzerando tutto
//
IF Conto > 0 THEN
Conto = Conto + 1
IF Conto > MaxBarre THEN
Media = 0
Conto = 0
Barra = 0
InizioRett = 0
FineRett = 0
PrezzoMax = 0
PrezzoMin = 0
ENDIF
ENDIF
//
// questa è la condizione di partenza
//
Media = average[10,0](close) CROSSES OVER average[20,0](close)
//
// Se la condizione si è verificata iniziare il conto delle barre e salvare i parametri
// (barra e massimo dove la condizione si è verificata)
//
IF Media THEN
Conto = 1
Barra = BarIndex
Prezzo = high
InizioRett = 0
FineRett = 0
PrezzoMax = 0
PrezzoMin = 0
ENDIF
//
// se il conteggio è già in corso verificare se occorre iniziare a visualizzare il
// rettangolo alla rottura della linea
//
IF Conto > 0 THEN
IF close > Prezzo AND InizioRett = 0 THEN
InizioRett = BarIndex
FineRett = 0
PrezzoMax = close + Pips
PrezzoMin = close - Pips
ENDIF
ENDIF
//
// se la visualizzazione del rettangolo è già iniziata, verificare quando deve fermarsi
//
IF InizioRett > 0 THEN
IF close >= PrezzoMax OR close <= PrezzoMin THEN
IF FineRett = 0 THEN
FineRett = BarIndex
ENDIF
ENDIF
ENDIF
//
// visualizzazione sul grafico del segmento e del rettangolo, se il conteggio è attivo
//
IF Conto > 0 THEN
// la linea NON deve superare la fine del rettangolo
y = min(Barra + (MaxBarre - 1),BarIndex)
IF FineRett > 0 THEN
y = FineRett
ENDIF
DRAWSEGMENT(Barra,Prezzo,y,Prezzo) COLOURED(0,128,0,255)
// il rettangolo NON deve superare il limite di quanto i prezzi sono usciti
IF InizioRett > 0 THEN
x = BarIndex
IF FineRett > 0 THEN
x = FineRett
ENDIF
DRAWRECTANGLE(InizioRett,PrezzoMax,x,PrezzoMin) COLOURED(255,0,0,255)
ENDIF
ENDIF
RETURN