Invece di NEWCLOSE e NEWOPEN devi usare miRSI nella stampa del segmento, altrimenti ti stampa i segmenti a quel prezzo ma per vederli dovresti stringere notevolmente il pannello rendendo le candele quasi piatte. Inoltre devi usare DEFPARAM DrawOnLastBarOnly = False, altrimenti non vedi niente.
//----------------------------------------------------------------
// RSI+SMA+DIV
// Setup consigliato
//
// PeriodRSI = 14
// PeriodSMA = 14
// PeriodRSISMA = 3
//
//----------------------------------------------------------------
DEFPARAM DrawOnLastBarOnly = False
Defparam CALCULATEONLASTBARS = 5000
//variables
divrsi=1
baissiere=1
cache=1
//Definizione dei parametri del codice
if close>open then
newclose=close
newopen=open
endif
if close<= open then
newclose=open
newopen=close
endif
N=40
// Setup indici x la strategia
miRSI = RSI[PeriodRSI](TotalPrice)
//iRSISMA = Average[PeriodRSISMA,4](iRSI)
//iRSISmoothed=TEMA[SmoothingPeriod](iRSI)
iRSISmoothed=Average[SmoothingPeriod,MATypeRSI](miRSI)
iSMA = Average[PeriodSMA,MATypeMA](miRSI)
highrsi=70 //overbought level
lowrsi=30 //oversold level
LowMidLevel=40
HighMidLevel=60
// Setup disegno divergenza
//miRSI=RSI[14](close)
lowrsi=30 //oversold level
highrsi=70 //overbought level
signalrsi=0
IF (mirsi[1]>mirsi AND mirsi[1]>mirsi[2]) THEN
rsiextrem2=mirsi[1]
rsiextrem1=highest[N](mirsi)
rsipmax2=close[1]
rsipmax=Highest[N](close)
IF(rsiextrem2<rsiextrem1 AND rsipmax2>rsipmax[1]) THEN
for rsii=1 to N
if close[rsii]=rsipmax[1] and baissiere and divrsi then
rsizzm=rsii
if newclose[1]>newclose[rsizzm] then
signalrsi=-1
flag=1
//drawsegment (barindex[1], newclose[1], barindex[rsizzm],newclose[rsizzm]) coloured(150,0,0)style(dottedline,2)
drawsegment (barindex[1], miRSI[1], barindex[rsizzm],miRSI[rsizzm]) coloured("Blue")style(dottedline,2)
endif
endif
next
endif
endif
IF (mirsi[1]>mirsi AND mirsi[1]>mirsi[2]) THEN
rsiextremB2=mirsi[1]
rsiextremB1=highest[N](mirsi)
rsipmaxB2=close[1]
rsipmaxB=Highest[N](close)
IF(rsiextremB2=rsiextremB1 AND rsipmaxB2>rsipmaxB[1]) THEN
for rsik=1 to N
if close[rsik]=rsipmaxB[1] and baissiere and divrsi and cache then
rsizzmB=rsik
if newclose[1]<newclose[rsizzmB] then
signalrsi=-2
flag=1
//drawsegment (barindex[1], newclose[1], barindex[rsizzmB],newclose[rsizzmB]) coloured(150,0,0)style(dottedline,1)
drawsegment (barindex[1], miRSI[1], barindex[rsizzmB],miRSI[rsizzmB]) coloured("Blue")style(dottedline,2)
endif
endif
next
endif
endif
IF (mirsi[1]<mirsi AND mirsi[1]<mirsi[2]) THEN
rsiextrem22=mirsi[1]
rsiextrem11=lowest[N](mirsi)
rsipmin2=close[1]
rsipmin=lowest[N](close)
IF(rsiextrem22>rsiextrem11 AND rsipmin2<rsipmin[1]) THEN
for rsij2=1 to N
if close[rsij2]=rsipmin[1] and divrsi then
rsizzm2=rsij2
if newopen[1]<newopen[rsizzm2] then
signalrsi=1
flag=1
//drawsegment(barindex[1],newopen[1], barindex[rsizzm2], newopen[rsizzm2]) coloured(150,0,0)style(line,2)
drawsegment(barindex[1],miRSI[1], barindex[rsizzm2], miRSI[rsizzm2]) coloured("Green")style(line,2)
endif
endif
next
endif
endif
IF (mirsi[1]<mirsi AND mirsi[1]<mirsi[2]) THEN
rsiextremC2=mirsi[1]
rsiextremC1=lowest[N](mirsi)
rsipminC2=close[1]
rsipminC=Lowest[N](close)
IF(rsiextremC2=rsiextremC1 AND rsipminC2>rsipminC[1]) THEN
for rsil=1 to N
if close[rsil]=rsipminC[1] and divrsi and cache then
rsizzmC=rsil
if newopen[1]>newopen[rsizzmC] then
signalrsi=2
flag=1
//drawsegment (barindex[1], newopen[1], barindex[rsizzmC],newopen[rsizzmC]) coloured(150,0,0)style(line,1)
drawsegment (barindex[1], miRSI[1], barindex[rsizzmC],miRSI[rsizzmC]) coloured("Green")style(line,2)
endif
endif
next
endif
endif
Return iRSISmoothed as "RSI Signal", iSMA as "SMA RSI", highrsi as "Level 70", lowrsi as "Level 30", LowMidLevel as "Level 40", HighMidLevel as "Level 60"
//Return rsizzmC AS "rsizzmC",rsizzm AS "rsizzm"