Gentile Roberto, ho creato un indicatore molto basico che mi cerca i valori di massimo, minimo e apertura a richiesta. Ti chiedo se è possibile inserirgli delle date fisse, tipo inizio anno, inizio mese e inizio settimana in modo che la piattaforma conti da sola le barre necessarie e mi restituisca i valori automaticamente. Grazie (di seguito il mio indicatore)
// indicatore di minimi, massimi e apertura a richiesta
nbarre=var //default 5
massimo=highest [nbarre](high)
minimo=lowest [nbarre](low)
apertura= open [var]
return massimo as "massimo", minimo as "minimo", apertura as "apertura"
Il codice della riga 9 va corretto;
apertura= open [nbarre]
Eccolo:
// indicatore di minimi, massimi e apertura a richiesta
DataRiferimento = 20220712 //12 Luglio 2022
nbarre = 0
for i = 0 to BarIndex
if OpenDate[i] < DataRiferimento then
nbarre = i - 1
if OpenDate[i] > DataRiferimento then
nbarre = 0
endif
endif
next
nbarre = max(1,nbarre)
massimo = highest[nbarre](high)
minimo = lowest[nbarre](low)
apertura = open[nbarre]
return massimo as "massimo", minimo as "minimo", apertura as "apertura"
Se la data è errata (non corrisponde a nessuna candela), verrà restituita la barra 1 (la precedente perché HIGHEST e LOWEST non possono avere valori < 1).
Però trovui l'open della data indicata, ma il minimo/massimo partendo dalla barra corrente, qualemMinimo/Massimo desideri?
I valori che mi occorrono sono in effetti dinamici, nel senso che partendo da diverse date si aggiornano continuamente. L’open è l’unico fisso relativo alla data impostata (inizio anno, inizio mese e inizio settimana), mentre i massimi e minimi sono, rispettivamente, il massimo e minimo da inizio anno, poi quello da inizio mese e quello da inizio settimana che aggiorno poi su un foglio online per determinare una formula di performance del titolo in analisi. Grazie ancora!
Allego una foto col mio basico indicatore per evidenziarti cosa mi serve trovare (es. i valori da inizio anno, quindi l’open, il massimo e il minimo di periodo a oggi). Cambiando il numero delle barre cerco i valori di inizio mese, poi di inizio trimestre etc.[attachment file=”immagine_2022-10-14_152328624.png”]
[attachment file=”immagine_2022-10-14_152504187.png”]
Comunque grazie, ma la tua modifica non funziona correttamente!
Risolto (almeno sembra).
C’era un errore di codice, per cui non indicava correttamente le barre.
C’era anche il problema che avevo scritto una ricerca che prendesse un considerazione una data ESATTA, in cui esistesse una candela, quindi dovevi prima verificare che i mercati fossero aperti quel giorno. Adesso l’ho cambiato ed ho stabilito che se il mercato è chiuso (quindi non c’è nessuna candela), prende la prima disponibile che non sia minore della data indicata. Se indichi il 9 Luglio (20220709), che è Sabato, prenderà come valida la data di Lunedì 11 Luglio 2022. Ovviamente se vuoi posso anche prendere la data minore di quella indicata, oppure fare come prima e non prenderla affatto, restituendo 0:
// indicatore di minimi, massimi e apertura a richiesta
DataRiferimento = 20220712 //12 Luglio 2022
nbarre = 0
for i = 1 to BarIndex
if OpenDate[i] = DataRiferimento then
nbarre = barindex - barindex[i] + 1
break
elsif OpenDate[i] < DataRiferimento then
nbarre = barindex - barindex[i - 1] + 1
break
endif
next
nbarre = max(1,nbarre)
massimo = highest[nbarre](high)
minimo = lowest[nbarre](low)
apertura = open[nbarre]
return massimo as "massimo", minimo as "minimo", apertura as "apertura"
Un breve report, Roberto, sull’ultimo suggerimento di codice. Funziona, anche se con una particolarità, infatti mi restituisce l’open del giorno prima rispetto alla data che inserisco nel codice. Ma conoscendo la particolarità basta digitare il giorno prima e voilà il gioco è fatto. Piuttosto ho notato che non è possibile avere le date tra le impostazioni dell’indicatore in piattaforma, ma è necessario entrare e modificare il codice con l’editor. Una richiesta infine: è possibile avere il codice di un conteggio barre, tipo il righello, semplicemente? Così potrei abbinare al mio codice basico e variare gli asset con facilità. Grazie e buon we (allego foto dei due lavori)
Si, l’ho corretto. ti ho anche aggiunto la data da modificare dalle proprietà (senza variare il codice):
// indicatore di minimi, massimi e apertura a richiesta
//
//DataRiferimento = 20220712 //12 Luglio 2022
nbarre = 0
for i = 1 to BarIndex
if OpenDate[i] = DataRiferimento then
nbarre = barindex - barindex[i]// + 1
break
elsif OpenDate[i] < DataRiferimento then
nbarre = barindex - barindex[i - 1]// + 1
break
endif
next
nbarre = max(1,nbarre)
massimo = highest[nbarre](high)
minimo = lowest[nbarre](low)
apertura = open[nbarre]
IF OpenDate < DataRiferimento THEN
massimo = 0
minimo = 0
apertura = 0
ENDIF
return massimo as "massimo", minimo as "minimo", apertura as "apertura"
ho tolto le linee PRIMA della data indicata, se vuoi rimetterle come prima basta che metti le doppie barre iniziali alle righe 19, 20 e 21.
Grazie, Roberto, ora funziona tutto bene!