Buongiorno,
Lo screener che ho in mente è quello di visualizzare tutti i titoli che nel momento in cui ridiscendono, vanno a toccare con il loro minimo (o corpo della candela)
la MM Vidya da 15 o 40 periodi, purtroppo non ci sto riuscendo nemmeno con la modalità assistita, questo è il codice:
c1=CALL “Vidya New”[15,5]
c2=CALL “Vidya New”[40,40]
c3=low
c4=c3 crosses under c1
c5=c3 crosses under c2
screener [c4 or c5]
ho provato anche con una sola Vidya:
ONCE SC = 2/(40+1)
AbsCMO = (Abs(Chandle[40](Close)))/100
IF BarIndex <= 40 THEN
Vidya = Close
ELSE
Vidya = (SC*AbsCMO*Close)+(1-(SC*AbsCMO))*Vidya
ENDIF
c1= Vidya
c2= low crosses under c1
screener [c2]
la cosa immediatamente dopo, risolto questo problema, è dare un minimo di range al tocco del prezzo minimo sulla vidya, in pratica lo screener si dovrebbe attivare quando il minimo sta per toccare la Vidya dando uno scarto dello 0,30%.
Ho provato in diverse maniere, la modalita assistita scrive questo codice:
low CROSSES UNDER CALL “Vidya New[15,15](Giornaliero)
ma non mi da il risultato atteso
Grazie
IL primo non l’ho provato.
Il secondo (con la Vidya incorporata, invece che chiamata) funziona, ma devi usare lo smoothing, non i periodi, con ONCE:
ONCE SC = 2/(5+1)
Questo funziona (con lo 0.3% di margine):
ONCE SC = 2/(5+1)
AbsCMO = (Abs(Chandle[40](Close)))/100
IF BarIndex <= 40 THEN
Vidya = Close
ELSE
Vidya = (SC*AbsCMO*Close)+(1-(SC*AbsCMO))*Vidya
ENDIF
c1 = Vidya * 1.003
c2 = (low[1] > Vidya[1]) AND (low <= c1)
//c2 = (low[1] > c1[1]) AND (low <= c1)
screener [c2]
ti ho messo due righe per la variabile C2, una che verifica il LOW precedente con la VIDYA precedente (senza commento), l’altra (commentata) che verifica il LOW precedente con il VIDYA precedente maggiorato.
Fai delle prove per vedere quele ti è più utile.
Ciao Roberto e grazie per l’aiuto, cosa intendi quando dici di utilizzare lo smoothing?
Ho provato a utilizzare il tuo codice che dovrebbe darmi i titoli che con il minimo toccano la Vidya a 40 periodi (periodi 40, smoothing periodi 40,,, questo è il settaggio della Vidya gialla sul grafico)
lo screener dovrebbe essere cosi:
ONCE SC = 2/(40+1)
AbsCMO = (Abs(Chandle[40](Close)))/100
IF BarIndex <= 40 THEN
Vidya = Close
ELSE
Vidya = (SC*AbsCMO*Close)+(1-(SC*AbsCMO))*Vidya
ENDIF
c1 = Vidya * 1.003
c2 = (low[1] > Vidya[1]) AND (low <= c1)
//c2 = (low[1] > c1[1]) AND (low <= c1)
screener [c2]
spesso il risultato è quello dell’immagine, non capisco dove sbaglio…..
Come ho fatto io, non hai visto ONCE?
si lo visto, ma forse non riesco a capirne l’utilizzo, lo smoothing non dovrebbe essere
ONCE SC = 2/(40+1)
perche ?
ONCE SC = 2/(5+1)
lo sto utilizzando male o c’è qualcosa che non riesco a capire su ONCE?
io in pratica ho fatto il copia e incolla del tuo codice.
Dove hai preso il codice Vidya dovrebbe esserci scritto.
Ad ogni modo la VIDYA è formata da due parametri, il primo sono i Periodi, il secondo è lo Smoothing. E’ quest’ultimo che va indicato con la divisione.
Può essere anche 40, sia ben chiaro. Se vuoi usare una VIDYA[40,40] va bene, però dalla tua prima riga del tuo codice hai usato 5 come secondo parametro ed è quello da usare.
scusa robero mi hai fatto notare che la prima riga del codice che ho scritto, il secondo parametro è errato non doveva essere 5 ma bensi
15, speso uso la 15-15 o la 40-40 comunque ora faccio altri tentativi poi ti faccio sapere,,, speriamo di arrivare a sta cosa…
In effetti solo su un sito che ho trovato (oltre al file Average Filter Regression https://www.prorealcode.com/topic/indicateur-afr-average-filter-regression/) usa anche lo Smoothing.
Ad ogni modo, basta che quando fai la CALL metti entrambi i valori uguali (se ne ha due) ed hai risosto il problema senza dovere modificare il codice.
Ho visto la Vidya del link che mi hai dato (forse un po più semplificata), comunque io ho provato in diverse maniere ma il risultato finale non è quello atteso,
lo screener prende il codice ma il risultato è spesso come quello nella foto sopra, probabile che non digerisca bene lo smooth, ma sinceramente non saprei come altro fare (le mie conoscenze sulla programmazione sono molto limitate), non ho capito una cosa Roberto ma a te funziona? Ti filtra i titoli con il minimo sulla vidya?
L’errore è che stai usando la riga 9, con la VIDYA senza maggiorazione.
Usa la riga 10.
Le sto usando tutte,,,, ho cercato anche di trovare qualcosa che possa sostituire la riga, ONCE SC = 2/(40+1) che secondo me è quella con cui lo screener fa fatica,
diciamo che in media riesce a mostrare circa il 30% dei titoli con una certa precisione, il resto che propone sono letteralmente sbagliati specie se uso Vidya con periodi più alti
come 90 o 180 periodi….
Con 40 periodi mi da risultati scorretti, a volte.
Mentre con 10 e 20 periodi sono sempre giusti.
Penso sia il problema del limite delle 254 barre degli screener.
Ad esempio se usi una SMA puoi usare fino a 254 barre, ma se usi un’EMA devi limitarti a 80-100 circa perché nel calcolo l’EMA necessita di molte più barre di quanti siano i periodi.
Può darsi che l’indicatore CHANDE abbia bisogno di molte più barre per i suoi calcoli interni.
L’unica certezza sul motivo può dartela PRT.
ok, questo limite delle barre non lo sapevo, anche se mi ero accorto che su un 15 periodi i risultati erano molto migliori.
Una cosa Roberto, come posso integrare del codice che mi filtra le aziende di media e alta capitalizzazione?
La capitalizzazione può essere espressa mediante il PREZZO (close) moltiplicato oper il VOLUME scambiato:
Cap = close * volume
IF Cap > X THEN
.
.
ENDIF
nell’esempio si calcola il prezzo * volume scam,biato in quella barra ed in quella unità di tempo (che sia Daily, ovvero 1 orea, ecc…). Dopodiché quel valore co confronti col tuo filtro, chia sia 50000 o 1000000, ecc… per determinare se quel titolo deve essere considerato o meno.
ok ci provo, Roberto sei veramente un aiuto prezioso….