Buon giorno o costruito un indicatore su rsi, sembra che funzioni però vorrei avere la conferma.
Come prima condizione RSI deve incrociare al ribasso una media mobile[8](RSI) in situazione di ipercomprato(sia per RSI che per la media mobile)
Dal momento che si è verificata questa condizione il segnale lo cerco nelle (X) candele successive, nel momento che la media mobile ha un valore minore rispetto alla media mobile sulla candela precedente, questo è il codice:
Ho un dubbio sull’utilità del BRAKE.
//////////variabili//////////
Miorsi = RSI[14](close)
Miamedia = average[8](Miorsi)
Ipercomprato = Miorsi and Miamedia > 70
Ipervenduto = Miorsi and Miamedia < 30
Segnale = Miamedia < Miamedia[1]
Segnale2 = Miamedia > Miamedia[1]
//////////Filtro 1 Segnale Short//////////
Filtro1 = 0
For I = 0 to 10 do
If Ipercomprato and Miorsi crosses under Miamedia and Segnale THEN
Filtro1 = 1
break
endif
next
if Filtro1 THEN
DRAWARROWDOWN(barindex,(Miamedia+5)) coloured(250,0,0)
endif
//////////Filtro 2 segnale Long//////////
Filtro2 = 0
for i = 0 to 10 DO
if ipervenduto and Miorsi crosses over Miamedia and Segnale2 then
DRAWARROWUP(barindex, (Miamedia-5))Coloured(0,255,0)
endif
break
next
return Miorsi coloured(0,0,250),70 coloured(250,0,0),30coloured(0,250,0),Miamedia, 50
Salve
Se si desidera mostrare gli incroci RSI con lo smoothing, è possibile utilizzare questo codice. Non è necessario eseguire il loop.
Se si volesse memorizzare, ad esempio, la barra in cui si verifica, allora avrebbe senso.
D’altra parte, il vostro codice presenta un errore nella definizione di ipercomprato e ipervenduto.
Ecco il codice
//////////variabili//////////
Miorsi = RSI[10](close)
Miamedia = average[8](Miorsi)
Ipercomprato = Miorsi > 70 and Miamedia > 70
Ipervenduto = Miorsi < 30 and Miamedia < 30
Segnale = Miamedia < Miamedia[1]
Segnale2 = Miamedia > Miamedia[1]
//////////Filtro 1 Segnale Short//////////
if Ipercomprato and Miorsi crosses under Miamedia and Segnale THEN
DRAWARROWDOWN(barindex,(Miamedia+5)) coloured(250,0,0)
endif
//////////Filtro 2 segnale Long//////////
if ipervenduto and Miorsi crosses over Miamedia and Segnale2 then
DRAWARROWUP(barindex, (Miamedia-5))Coloured(0,255,0)
endif
return Miorsi coloured(0,0,250),70 coloured(250,0,0),30coloured(0,250,0),Miamedia, 50
Scusa ma non mi sono spiegato bene, quello che stò cercando di fare non è trovare tutti i filtri nello stesso tempo, ma in due tempi diversi, cioè: prima deve verificarsi l’incrocio al ribasso dell’ RSI sulla sua mediamobile, da li il segnale mi dovrebbe apparire solo quando la media mobile e inferiore al valore della candela precedente, ovvero se avviene l’incrocio al ribasso, ma per due candele la media mobile continua a salire, non devo evere il segnale, se alla terza candela si verifica il ribasso a quel punto vorrei il segnale, ecco perchè o pensato ad un loop.
Un pò complicato lo ammetto, ma è per non stare a controllare sempre a vista, su due piedi mi è venuto in mente questo codice che potrebbe avere un senso.
//////////variabili//////////
Miorsi = RSI[14](close)
Miamedia = average[8](Miorsi)
Ipercomprato = Miorsi and Miamedia > 70
Ipervenduto = Miorsi and Miamedia < 30
Segnale = Miamedia < Miamedia[1]
//////////Filtro 1 Segnale Short//////////
Filtro1 = 0
For I = 0 to 10 do
If Ipercomprato and Miorsi crosses under Miamedia THEN
Filtro1 = Filtro1 + 1
endif
If filtro1 <= 10 and Segnale then
DRAWARROWDOWN(barindex,(Miamedia+5)) coloured(250,0,0)
endif
break
next
return
Ciao
Non ho capito.
Ecco una proposta senza loop.
//////////variabili//////////
periods = 10
Miorsi = RSI[periods](close)
Miamedia = average[8](Miorsi)
Ipercomprato = Miorsi > 70 and Miamedia > 70
Ipervenduto = Miorsi < 30 and Miamedia < 30
Segnale = Miamedia < Miamedia[1]
Segnale2 = Miamedia > Miamedia[1]
//////////Filtro 1 Segnale Short//////////
///start checking
if Ipercomprato and Miorsi crosses under Miamedia then
checkshort = 1
else
checkshort = checkshort
endif
///count x bars
if Miorsi < Miamedia then
x = 1 + x
else
x = 0
endif
///setup short
if checkshort and x>0 and x<10 and segnale then
checkshort = 0
drawarrowdown(barindex,Miamedia+5)coloured("red")
endif
//////////Filtro 2 Segnale Long//////////
if Ipervenduto and Miorsi crosses over Miamedia then
checklong = 1
else
checklong = checklong
endif
///count y bars
if Miorsi > Miamedia then
y = 1 + y
else
y = 0
endif
///setup long
if checklong and y>0 and y<10 and segnale2 then
checklong = 0
DRAWARROWUP(barindex, Miamedia-5)Coloured("green")
endif
return Miorsi as "RSI" coloured(0,0,250),Miamedia as "Media",70 coloured(250,0,0),30coloured(0,250,0), 50