Buongiorno, sto cercando di costruire uno screener basato sul nuovo indicatore postato da qualche giorno su prorealcode. Ebbene, son riuscito a elaborarne uno, ma non mi soddisfa molto e per questo chiedo aiuto; vorrei uno screener che mi suggerisca i titoli che nelle ultime barre lette (diciamo le ultime 5) mi trovi i titoli che invertano la MA20 e la devstd della MA20. L’indicatore usato è il seguente:
//Mean MA Deviation
HDev = average[MAPeriod](close)+1*STD[MAPeriod](average[MAPeriod](close))
LDev = average[MAPeriod](close)-1*STD[MAPeriod](average[MAPeriod](close))
Return HDev-high coloured(255,0,0) AS “Hdev”, low-LDev coloured(0,255,0) AS “Ldev”, 0 coloured(0,0,0) AS “0”
e questo è il mio tentativo di screener long
// Screener Mean MA20 long
//HDEV
Indicator1 = average[20](close)+1*STD[20](average[20](close))
// LDEV
indicator2 = average[20](close)-1*STD[20](average[20](close))
c1= indicator1[1] > -2.0
c2= indicator2[1] < +2.0
c3= indicator1[5] > -3.0
c4= indicator2[5] < +3.0
SCREENER[c1 and c2 and c3 and c4] ((close/DClose(1)-1)*100 AS "% Var ieri")
Grazie per i suggerimenti
Per scrivere il codice , utilizza il pulsante <> “insert PRT code”, per render eil codice più comprensibile. Grazie.
Le righe 6 e 7, se ho ben capito, sono alternative, quindi usare AND (significa che entrambe le condizioni devono essersi verificate) comporta che nessun risultato potrà essere restituito.
Per quanto riguarda le righe 8 e 9, queste NON vanno a ricercare se la cndizione si è verificata nelle ultime 5 barre, ma solo sulla QUINTULTIMA! Tali righe non sono necessarie.
Aggiungo che non ho capito perché alle righe 6-7 cìè 2.0, mentre alle righe 8-9 cìè 3.0.
Inoltre alle righe 6-9 verifichi l’indicatore con una costante (2.0 o 3.0), ma non specifichi di cosa, cioè della chiusura, apertura, minimo, massimo, ecc…
Questo è il codice modificato che dovrebbe funzionare (però non l’ho provato):
//HDEV
Indicator1 = average[20](close)+1*STD[20](average[20](close))
// LDEV
indicator2 = average[20](close)-1*STD[20](average[20](close))
c1 = summation[5](close > indicator2) //è vero se la condizione si è verificata nelle ultime 5 barre
c2 = summation[5](close < indicator1) //è vero se la condizione si è verificata nelle ultime 5 barre
SCREENER[c1 or c2] ((close/DClose(1)-1)*100 AS “% Var ieri”) //deve visualizzare quando l'una OPPURE l'altra condizione è vera
Spero di avere capito bene quel che stavi cercando. Fammi sapere.
Intanto, grazie! Quello postato è solo l’ultimo di una serie di tentativi che non restituivano risultato e su cui ho pasticciato… io non sono bravo a scrivere codici! Domani mattina ti riferisco i risultati, grazie ancora
Ho caricato il codice suggerito, ma purtroppo lo screener restituisce troppi valori e non fa differenza tra quelli che incrociano le due linee dell’indicatore due o tre barre fà o 10 e più barre fà. Era successo anche ai miei diversi tentativi di riscontrare che proscreener non fa differenza tra poche o tante barre. Forse bisogna trovare una logica differente…
Forse il problema nasce dall’uso della STD.
Puoi riscrevere, in dettaglio, quello che desideri cercare e cosa esattamente intendi per invertire la MA20 e la devstd MA20, magari allegando una foto di un esempio.
Grazie Roberto, ci provo a descrivere cosa vorrei ottenere dallo screener. Mi sembra che l’indicatore Mean MA Deviation individui ottimamente le fasi di inversione del trend a breve quando la linea verde incrocia la rossa nella MA20 e quindi occorre catturare quella fase per cavalcare il nuovo trend. Per questo motivo indicavo gli ultimi 5 giorni di mercato per non andare troppo indietro nell’analisi. Ti allego una foto di Siri (mercato Usa) per chiarire il punto. Grazie ancora[attachment file=68829]
Non avevo mai usato questo indicatore, peraltro pubblicato recentemente, quindi non capivo bene cosa facesse.
Questo è il codice, mi pare funzioni, provalo e fammi sapere.
// Hdev = linea rossa
// Ldev = linea verde
Hdev, Ldev, ignored = CALL "MA StdDev"[20]
c1 = summation[5](Hdev CROSSES OVER Ldev)
c2 = summation[5](Hdev CROSSES UNDER Ldev)
SCREENER[c1 OR c2] ((close/DClose(1)-1)*100 AS "% Var ieri")
Moltissime grazie, Roberto! Adesso lo screener funziona con precisione. Ha la tendenza a trovare molti titoli, ma è anche normale nel senso che quando i mercati invertono tendenza molti titoli seguono il trend. Basta aggiungere alcune condizioni tipo il titolo deve trovarsi sopra la SMA200 e la SMA20 e penso che si tagliano via molte titoli dalla lista. Grazie ancora