Screening solo sulle ultime n barre?
Forums › ProRealTime forum Italiano › Supporto ProScreener › Screening solo sulle ultime n barre?
- This topic has 5 replies, 2 voices, and was last updated 7 years ago by pieroim.
-
-
11/16/2017 at 5:15 PM #53038
Mi spiego, lavorando sull’indicatore delle divergenze nello stocastico realizzato da Nicolas, trovato qui sul forum, ho realizzato una routine di screening che mi cerca appunto tutte del divergenze. La questione che si pone é che purtroppo mi recupera tantissimi segnali non potendo delimitare l’nalisi alle ultime “n” candele, in funzione del TF scelto.
Se mi interessano i risultati delle ultime 30 candele, ad esempio, come posso fare?
Barindex funziona nello screening? Se si, come lo si potrebbe usare per raggiungere lo scopo?
Grazie
Piero
11/16/2017 at 5:44 PM #53042Puoi partire da n candele indietro, esempio:
123456FOR i = 30 TO 0 DOIF close[i] > close[i+1] THEN..ENDIFNEXTOvviamente all’interno del ciclo tu metterai tutto quello che vuoi.
11/16/2017 at 6:06 PM #5304411/17/2017 at 12:36 PM #53106Purtroppo 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
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061// DIVERGENCES STO adapted from HK-LISSE codex = stochastic[p,k]y = average[d](x)if x>overboughtzone thenhi=max(hi,x)hico=max(hico,max(high,high[1]))endifif x crosses under y thensto2b=sto1bsto1b=hihi=0p3b=p1bp2b=max(p1b,hico1)p1b=max(highest[3](high),hico)if p2b=p1b thenp2b=max(p3b,p4b)endifhico=0hico1=0endifif x<y thenp4b=hico1hico1=max(hico1,high)endifif p1b>p2b and sto1b<sto2b and x crosses under y and x<x[1] thensignB= -2elsesignB= 0endifif x<oversoldzone thenlo=min(lo,x)lowco=min(lowco,min(low,low[1]))endifif x CROSSES OVER y thensto2h=sto1hsto1h=lolo=100p3h=p1hp2h=min(p1h,lowco1)p1h=min(lowest[3](low),lowco)if p2h=p1h thenp2h=min(p3h,p4h)endiflowco=100000lowco1=100000endifif x>y thenp4h=lowco1lowco1=min(lowco1,low)endifif p1h<p2h and sto1h > sto2h and x crosses over y and x>x[1] thensignH= 2elsesignH= 0endif////////////////////////////////////////////////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..
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667p=14k=3d=6overboughtzone=80oversoldzone=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 codex = mioStoc[i]y = average[d](x)if x>overboughtzone thenhi=max(hi,x)hico=max(hico,max(high[i],high[i+1]))endifif x crosses under y thensto2b=sto1bsto1b=hihi=0p3b=p1bp2b=max(p1b,hico1)p1b=max(highest[3](high[i]),hico)if p2b=p1b thenp2b=max(p3b,p4b)endifhico=0hico1=0endifif x<y thenp4b=hico1hico1=max(hico1,high[i])endifc1=0c1 = p1b>p2b and sto1b<sto2b and x crosses under y and x<mioStoc[i+1]if x<oversoldzone thenlo=min(lo,x)lowco=min(lowco,min(low[i],low[i+1]))endifif x CROSSES OVER y thensto2h=sto1hsto1h=lolo=100p3h=p1hp2h=min(p1h,lowco1)p1h=min(lowest[3](low[i]),lowco)if p2h=p1h thenp2h=min(p3h,p4h)endiflowco=100000lowco1=100000endifif x>y thenp4h=lowco1lowco1=min(lowco1,low[i])endifc2=0c2 = p1h<p2h and sto1h>sto2h and x crosses over y and x>mioStoc[i+1]screener[c1 or c2]//endifNEXTDa un punto di vista prettamente logico dovrebbe funzionare, ma io non conoscendo granché il linguaggio PRT evidentemente qualcosa non gli garba..
11/17/2017 at 2:49 PM #53117Intanto mi scuso, ma il ciclo FOR decrescente deve usare DOWNTO, non TO, tra i due numeri. La prima cosa errata che noto è la riga 65, ad ogni candela l’istruzione SCREENER può essere eseguita solo una volta, alla fine del codice, non dentro un ciclo. Prova a metterla alla fine, fuori dal ciclo, però tieni presente che C1 e C2 avranno l’ultimo valore (quando il ciclo arriva a 0, non delle altre candele. Comunque, per tornare al tuo post iniziale, l’esempio che ti ho fatto funziona. Io l’ho provato sul DAX ad 1 ora, cercando tutte quelle candele, entro le ultime 10, che abbiano un Massimo < alle due precedenti (una scaletta discendente a tre):
1234567c = 0FOR i = 10 DOWNTO 1 DOIF high[i] < high[i+1] AND high[i+1] < high[i+2] THENc = i //c restituisce il numero dell'ultima barra, chiusa, dove si è verificata la condizioneENDIFNEXTSCREENER [c] (c AS "barra")1 user thanked author for this post.
11/17/2017 at 5:06 PM #53123Ok, ho risolto con barindex, pensavo non funzionasse nel proscreener, poi Nicolas mi ha dato l’ok, ed ecco qua lo screening: https://www.prorealcode.com/topic/screening-of-the-only-last-x-bars/ Ora devo valutare meglio il comportamento della routine che cerca le divergenze, non mi convince.. almeno io avrei considerato le sole divergenze che nascono e muoiono nelle aree di sovraprezzo/vendita senza sconfinamenti, di solito sono le più attendibili. Vedo che il link non va.. eppure é quello il percorso..
riporto lo screening dovesse tornare utile..
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172p=14k=3d=6overboughtzone=80oversoldzone=20maxCandele = 10x = stochastic[p,k]y = average[d](x)if x>overboughtzone thenhi=max(hi,x)hico=max(hico,max(high,high[1]))endifif x crosses under y thensto2b=sto1bsto1b=hihi=0p3b=p1bp2b=max(p1b,hico1)p1b=max(highest[3](high),hico)if p2b=p1b thenp2b=max(p3b,p4b)endifhico=0hico1=0endifif x<y thenp4b=hico1hico1=max(hico1,high)endifc1=0if p1b>p2b and sto1b<sto2b and x crosses under y and x<x[1] and barindex>maxCandele thenc1 = p1b>p2b and sto1b<sto2b and x crosses under y and x<x[1]endifif x<oversoldzone thenlo=min(lo,x)lowco=min(lowco,min(low,low[1]))endifif x CROSSES OVER y thensto2h=sto1hsto1h=lolo=100p3h=p1hp2h=min(p1h,lowco1)p1h=min(lowest[3](low),lowco)if p2h=p1h thenp2h=min(p3h,p4h)endiflowco=100000lowco1=100000endifif x>y thenp4h=lowco1lowco1=min(lowco1,low)endifc2=0c2 = p1h<p2h and sto1h>sto2h and x crosses over y and x>x[1]if c2<>0 and barindex>maxCandele thenc2=0endifc2=0if p1h<p2h and sto1h>sto2h and x crosses over y and x>x[1] and barindex>maxCandele thenc2 = p1h<p2h and sto1h>sto2h and x crosses over y and x>x[1]endifscreener[c1 or c2] -
AuthorPosts
Find exclusive trading pro-tools on