DEFPARAM CumulateOrders = False
defparam flatbefore = 080000
defparam flatafter = 180000
n = 1
// Condizioni per aprire una posizione long
t = low[1]
v = low[2]
y = low[3]
c1 = close < lowest[30](low)[1]
c11 = close < lowest[20](low)[1]
IF c1 and t>lowest[29](low)[1] and v>lowest[28](low)[1] and y>lowest[27](low)[1] then
BUY n CONTRACT AT lowest[30](low)[1] + 1*pipsize stop
ENDIF
if c11 and t>lowest[19](low)[1] and v>lowest[18](low)[1] and y>lowest[17](low)[1] THEN
BUY n CONTRACT AT lowest[20](low)[1] + 1*pipsize stop
ENDIF
// Condizioni per uscire da una posizione long
c2 = low < lowest[5](low)[1]
IF c2 THEN
sell AT MARKET
ENDIF
// Condizioni per aprire una posizione short
t1 = high[1]
v1 = high[2]
y1 = high[3]
c1 = close > highest[30](high)[1]
c12 = close > highest[20](high)[1]
IF c1 and t1<highest[29](high)[1] and v1<highest[28](high)[1] and y1<highest[27](high)[1] THEN
SELLSHORT n CONTRACT AT highest[30](high)[1] - 1*pipsize stop
ENDIF
IF c12 and t1<highest[19](high)[1] and v1<highest[18](high)[1] and y1<highest[17](high)[1] THEN
SELLSHORT n CONTRACT AT highest[20](high)[1] - 1*pipsize stop
ENDIF
// Condizioni per uscire da una posizione di vendita
c3 = high < highest[5](high)[1]
IF c3 THEN
exitshort AT MARKET
ENDIF
// Stop e target
IF close > open THEN //LONG
MinLow = low
StopLoss = low - 2*pipsize //2 pips sotto il minimo
ELSE //SHORT
MaxHigh = high
StopLoss = high + 2*pipsize //2 pips sopra il massimo
ENDIF
SET STOP PLOSS StopLoss
IF LongOnMarket THEN //per i LONG
IF low > MinLow THEN //verificare che sia un MINIMO più alto
MinLow = Low //aggiornare la variabile
ENDIF
SELL AT MinLow - 2*pipsize STOP //aggiornare l'ordine di STOP ad ogni candela
ENDIF
IF ShortOnMarket THEN //per gli SHORT
IF high < MaxHigh THEN //verificare che sia un MASSIMO più basso
MaxHigh = high //aggiornare la variabile
ENDIF
EXITSHORT AT MaxHigh + 2*pipsize STOP //aggiornare l'ordine di STOP ad ogni candela
ENDIF