Ciao Ivan,
Grazie per l’aiuto, hai scritto un codice che con poche righe funziona benissimo,
ho visto che nell’ultima riga hai utilizzato il “crosses over” mentre io ho utilizzato “c3=c1-c2″
e poi hai utilizzato ” Vidya2 = weightedaverage[7](Vidya)” distinguendola (giustamente) dalla Vidya1,
in questo modo ho riscritto il codice mio precedente filtrando anche un po di volume:
MKC= Volume>100000
ONCE SC = 2/(7+1)
AbsCMO = (Abs(Chandle[7](Close)))/100
IF BarIndex <= 100 THEN
Vidya = close
ELSE
Vidya = (SC*AbsCMO*Close)+(1-(SC*AbsCMO))*Vidya
ENDIF
c1 = weightedaverage[7](Vidya)
ONCE SC = 2/(7+1)
AbsCMO = (Abs(Chandle[7](Close)))/100
IF BarIndex <= 100 THEN
Vidya2 = close
ELSE
Vidya2 = (SC*AbsCMO*Close)+(1-(SC*AbsCMO))*Vidya2
ENDIF
c2= Vidya2
c3= c2 crosses over c1
screener [MKC and c3]
direi che funziona bene, ma dove era l’errore del primo codice scritto da me,
l’utilizzo della differenza delle due Vidya “c3= c1 – c2” e non il crosses over?
Te lo chiedo perche l’indicatore con i richiami che utilizza la differenza fra le due Vidya sembra che funzioni bene
indicator1 = CALL “Vidya Weighted”[Periodi1]//periodi superiori a Vidya New altrimenti
//non tornano gli incroci
indicator2 = CALL “Vidya New”[Periodi]
c1 =-(indicator1-indicator2)
return c1,0