Purtroppo non mi riesce di farla andare, mi sfugge qualcosa del linguaggio PRT.
Qui di seguito é l’indicatore da cui ho preso spunto e che se messo cosí com’é (ovviamente con le necessarie modifiche perché proscreener funzioni) funziona ma restituisce troppi segnali perché include eventi accaduti su candele molto vecchie.
p=15
overboughtzone=80
oversoldzone=20
k=3
d=6
// DIVERGENCES STO adapted from HK-LISSE code
x = stochastic[p,k]
y = average[d](x)
if x>overboughtzone then
hi=max(hi,x)
hico=max(hico,max(high,high[1]))
endif
if x crosses under y then
sto2b=sto1b
sto1b=hi
hi=0
p3b=p1b
p2b=max(p1b,hico1)
p1b=max(highest[3](high),hico)
if p2b=p1b then
p2b=max(p3b,p4b)
endif
hico=0
hico1=0
endif
if x<y then
p4b=hico1
hico1=max(hico1,high)
endif
if p1b>p2b and sto1b<sto2b and x crosses under y and x<x[1] then
signB= -2
else
signB= 0
endif
if x<oversoldzone then
lo=min(lo,x)
lowco=min(lowco,min(low,low[1]))
endif
if x CROSSES OVER y then
sto2h=sto1h
sto1h=lo
lo=100
p3h=p1h
p2h=min(p1h,lowco1)
p1h=min(lowest[3](low),lowco)
if p2h=p1h then
p2h=min(p3h,p4h)
endif
lowco=100000
lowco1=100000
endif
if x>y then
p4h=lowco1
lowco1=min(lowco1,low)
endif
if p1h<p2h and sto1h > sto2h and x crosses over y and x>x[1] then
signH= 2
else
signH= 0
endif
////////////////////////////////////////////////
return signH as " div STO bull ", signB as " div STO bear " , 0 as " zero "
La soluzione sarebbe prender nota della candela in cui si é verificato l’evento e validarla solo se appartiene alle ultime x candele. Non so peró quale istruzione fa a questo caso, barindex mi sembra non funzionare correttamente in proscreener.
la seguente é la routine su cui sto lavorando inclusa in un ciclo For… Next che peró non va perché non restituisce alcun risultato..
p=14
k=3
d=6
overboughtzone=80
oversoldzone=20
//mioADX = ADX[14]
mioStoc = stochastic[p,k]
FOR i = 30 TO 0 DO
//if mioADX[i]>25 then
// DIVERGENCES STO adapted from HK-LISSE code
x = mioStoc[i]
y = average[d](x)
if x>overboughtzone then
hi=max(hi,x)
hico=max(hico,max(high[i],high[i+1]))
endif
if x crosses under y then
sto2b=sto1b
sto1b=hi
hi=0
p3b=p1b
p2b=max(p1b,hico1)
p1b=max(highest[3](high[i]),hico)
if p2b=p1b then
p2b=max(p3b,p4b)
endif
hico=0
hico1=0
endif
if x<y then
p4b=hico1
hico1=max(hico1,high[i])
endif
c1=0
c1 = p1b>p2b and sto1b<sto2b and x crosses under y and x<mioStoc[i+1]
if x<oversoldzone then
lo=min(lo,x)
lowco=min(lowco,min(low[i],low[i+1]))
endif
if x CROSSES OVER y then
sto2h=sto1h
sto1h=lo
lo=100
p3h=p1h
p2h=min(p1h,lowco1)
p1h=min(lowest[3](low[i]),lowco)
if p2h=p1h then
p2h=min(p3h,p4h)
endif
lowco=100000
lowco1=100000
endif
if x>y then
p4h=lowco1
lowco1=min(lowco1,low[i])
endif
c2=0
c2 = p1h<p2h and sto1h>sto2h and x crosses over y and x>mioStoc[i+1]
screener[c1 or c2]
//endif
NEXT
Da un punto di vista prettamente logico dovrebbe funzionare, ma io non conoscendo granché il linguaggio PRT evidentemente qualcosa non gli garba..