Buongiorno,
volevo chiedere informazioni per quanto concerne dei codici giocattolo che sto scrivendo.
Non capisco perché le istruzioni non fanno quel che dico (o penso di dirgli).
Ho creato una piccola funzioncina (stupidissima) che restituisce:
– 1 : se 3 medie mobili sono allineate verso l’alto
– 0: se 3 medie mobili non sono tutte allineate
– -1: se 3 medie mobili sono allineate verso il basso
La funzione, stampata graficamente, restituisce i valori corretti con i vari allineamenti (quindi escluderei l’errore).
La richiamo con: mytrend = CALL “In Trend”[10, 0, 20, 1, 30, 1]
I problemi:
- SCREENER (highest[3](close) = highest[20](high))
mi aspetto che restituisca i titoli dove la più alta chiusura negli ultimi 3 giorni è uguale al massimo degli ultimi 20 giorni (quindi marubozu su una delle ultime 3 candele e con un massimo a 20 giorni)
- SCREENER(mytrend = 1 AND mytrend[5] = -1)
mi aspetto che restituisca i titoli il cui valore attuale di mytrend è 1, e 5 giorni fa era -1 (quindi le medie sono passate da allineate verso il basso ad allineate in senso opposto)
- SCREENER(mytrend = 1 AND mytrend = -1)
mi aspetto non restituisca nulla dato che mytrend non può essere +1 e -1 allo stesso tempoNel dubbio posto anche il codice della funzione
mm1 = Average[p1,t1](close)
mm2 = Average[p2,t2](close)
mm3 = Average[p3,t3](close)
IF (mm1 > mm2 AND mm2 > mm3) THEN
trend = 1
ELSIF (mm1 < mm2 AND mm2 < mm3) THEN
trend = -1
ELSE
trend = 0
ENDIF
return trend as "trend"
In tutti i casi, guardando i risultati proposti dallo screener, ci sono titoli che non hanno i requisiti…Dove sbaglio?
Grazie
Screener richiede le parentesi quadre per le condizioni di selezione, quelle tonde sono per il criterio d’ordinamento:
SCREENER[highest[3](close) = highest[20](high)]
Grazie, in effetti ora funzionano.
Ero certo di aver fatto uno stupido errore, grazie di avermi riportato sulla retta via.