Indicatore Filtro Orario
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Indicatore Filtro Orario
- This topic has 24 replies, 3 voices, and was last updated 2 months ago by Gianpy.
-
-
09/13/2024 at 3:55 PM #237544
Buonasera,
ho iniziato a impostare il codice per un indicatore che mi colora il background del grafico a seconda del momento della giornata.
Funziona, però mi piacerebbe che disegnasse solo nella giornata di oggi.
Qualcuno mi può aiutare? Grazie in anticipo!
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354startBI1 = 003000endBI1 = 080000startBO1 = 093000endBO1 = 110000startBI2 = 150000endBI2 = 163000startBO2 = 180000endBO2 = 180000startBI3 = 200000endBI3 = 203000startBO3 = 220000endBO3 = 223000currentDay = dateif intradaybarindex=0 thenalreadydrawnBI1 = 0alreadydrawnBI2 = 0alreadydrawnBI3 = 0alreadydrawnBO1 = 0alreadydrawnBO2 = 0alreadydrawnBO3 = 0endifif time>=startBI1 and time<=endBI1 and date = currentDay thenbackgroundcolor("Green",5)alreadydrawnBI1=1endifif time>=startBI2 and time<=endBI2 and date = currentDay thenbackgroundcolor("Green",5)alreadydrawnBI2=1endifif time>=startBI3 and time<=endBI3 and date = currentDay thenbackgroundcolor("Green",5)alreadydrawnBI3=1endifif time>=startBO1 and time<=endBO1 and date = currentDay thenbackgroundcolor("Red",5)alreadydrawnBO1=1endifif time>=startBO2 and time<=endBO2 and date = currentDay thenbackgroundcolor("Red",5)alreadydrawnBO2=1endifif time>=startBO3 and time<=endBO3 and date = currentDay thenbackgroundcolor("Red",5)alreadydrawnBO3=1endifRETURN09/13/2024 at 4:29 PM #237545No, non è possibile annullare i giorni precedenti.
Esiste DEFPARAM DrawOnLastBarOnly che può essere settato su TRUE o FALSE, ma riguarda solo gli oggetti stampati con le varia istruzioni DRAW.
09/13/2024 at 4:52 PM #237548Potresti anche fare qualcosa di simile a quello che ho fatto in quest'altro post: https://www.prorealcode.com/topic/affihcer-seulement-sur-periode-choisi/#post-237414 Si tratta di disegnare un rettangolo. Puoi far passare il rettangolo da 0 a un numero molto alto imitando l'istruzione
backgroundcolor
2 users thanked author for this post.
09/14/2024 at 11:54 AM #237567Grazie Ivan!! Non ci avevo pensato.
Ho provato a modificare in questo modo (inserisco solo una parte di codice, per semplificare):
12345678910111213141516171819DEFPARAM DrawOnLastBarOnly=truestartBI1 = 003000endBI1 = 080000if time=startBI1 thenstartbarBI1=barindexendifif time<=endBI1 thenendbarBI1=barindexendifif time>=startBI1 and time<=endBI1 thendrawrectangle(startbarBI1,1000000,endbarBI1,0) coloured("Green",25) bordercolor("Green",25)//backgroundcolor("Green",5)endifRETURNTuttavia, se lascio backgroundcolor, in effetti disegna correttamente. Con il rettangolo non mi disegna niente (sicuramente sbaglio qualcosa io).
Tra l’altro mi è venuta in mente un’altra cosa… io avrei bisogno che disegnasse in tempo reale. Così com’è lo fa o attende la fine del tempo prefissato in alto?
Mi spiego meglio… se questo filtro deve disegnare fra mezzanotte e le 8 del mattino, lui aspetta che siano le 08.01? Perché, se sono le 3.00, a me piacerebbe trovarmi la candela corrente su sfondo verde, così come anche le precedenti, fino a mezzanotte.
Per questo ho modificato l’istuzione “if time<=endBI1 then endbarBI1=barindex endif” in “if time<=endBI1 then endbarBI1=barindex endif”. Non so se ho fatto giusto ma, anche così, con backgroundcolor pare disegnare correttamente.
Spero di essermi spiegato in maniera esaustiva.
E chiedo ancora scusa per la confusione che creo, ma davvero a livello programmazione sono imbarazzante.
09/16/2024 at 12:08 PM #237621Ho modificato così:
12345678910111213141516171819DEFPARAM DrawOnLastBarOnly=truestartBI1 = 003000endBI1 = 080000if time=startBI1 thenstartbarBI1=barindexendifif time<=endBI1 thenendbarBI1=barindexendifif time>=startBI1 and time<=endBI1 thendrawrectangle(startbarBI1,1000000,endbarBI1,0) coloured("Green",25) bordercolor("Green",25)startbarBI1=endbarBI1endifRETURNFunziona. Anche se esteticamente non è bellissimo per via dei bordi e anche a causa del fatto che, in corrispondenza della prima candela, chiaramente il rettangolo si riduce a una linea verticale (metto immagine).
Mi rimane da capire se disegna in tempo reale, ma lo verificherò oggi.
L’altro problema è che, inserendo la prima riga per fare disegnare solo oggi, pare non disegnare affatto.
09/17/2024 at 4:22 AM #237666Prova a commentare la riga 16, mettendo all’inizio le doppie barre:
1//startbarBI1=endbarBI109/17/2024 at 12:10 PM #23770609/17/2024 at 4:30 PM #237720Non capisco bene cosa vuoi disegnare, tutto il rettangolo alle 00:30 alle 08:00, oppure una sola barra per volta?
09/18/2024 at 8:58 AM #237741Hai assolutamente ragione, Roberto. Provo a spiegarmi meglio.
Di base sì, mi piacerebbe che disegnasse un rettangolo alla volta, fra le 00.00 e le 08.00, in tempo reale.
Ora… mi rendo conto che a mezzanotte magari non può che fare una linea verticale verde (ma va bene così). Poi, a mezzanotte e mezza, mi piacerebbe che facesse un rettangolo fra le candele di mezzanotte e mezzanotte e mezza. Poi un altro fra le 00.30 e le 01.00 e così via 08.00.
Spero di essermi riuscito a spiegare meglio, questa volta.
09/18/2024 at 10:34 AM #237761Questo fa quello che chiedi, che venga usata la riga DEFPARAM DrawOnLastBarOnly=true oppure no:
1234567891011121314151617181920//DEFPARAM DrawOnLastBarOnly=trueONCE startBI1 = 000000ONCE endBI1 = 080000ONCE FirstBar = 0IF (Time = startBI1) THENFirstBar = BarIndexENDIFIF Time >= startBI1 AND Time <= endBI1 THENif (Minute MOD 30) = 0 THENstartBar = barindexendifendBar = BarIndexIF startBar <> startBar[1] THENdrawrectangle(startBar,1000000,endBar,0) coloured("Green",15) bordercolor("Green",15)ENDIFELSEdrawrectangle(FirstBar,1000000,endBar,0) coloured("Green",15) bordercolor("Green",15)ENDIFRETURN1 user thanked author for this post.
09/18/2024 at 11:09 AM #237764Grazie mille, Roberto!
In effetti, credo che tu ti sia avvicinato parecchio. Tuttavia, restituisce ancora degli errori.
Ti invio due screenshot. In quello che si chiama “FO con prima riga” ho incluso il parametro per disegnare solo oggi. Come vedi non disegna i rettangoli di oggi, però ne fa uno enorme nel passato.
Il secondo, quello che ho nominato “FO senza prima riga”, non ha il parametro e disegna, in effetti, correttamente i rettangoli di oggi. Tuttavia, disegna anche un rettangolo enorme nel passato. Se guardi l’inizio dello screenshot, noterai che è il grosso rettangolo è più scuro perché ce ne sono due sovrapposti. E più vai indietro nel tempo più, chiaramente, diventa scuro.
09/18/2024 at 11:20 AM #237769Riepilogo quello che ho compreso:
- voui che dalle ore 00:00 stampi ogni 30 minuti un rettangolo che va dalla barra del primo minuto fino alla barra del 30esimo minuto (dal minuto 0 al minuto 29 e poi dal minuto 30 al minuto 59)
- vuoi che ogni rettangolo resti visibile fino alle 08:00
Dopo le 08:00 che deve succedere,tutto sparisce oppure il rettangolo tra le 00:00 e le 08:00 deve restare?
Ogni rettangolo dei 30 minuti deve avere il bordo visibile oppure no?
09/18/2024 at 12:41 PM #23777409/18/2024 at 3:12 PM #237782Quindi se usi DEFPARAM DrawOnLastBarOnly=true, vedrai i singoli rettangoli mentre si formano e, dopo le 8, un unico rettangolo grande senza.
Se non usi DEFPARAM DrawOnLastBarOnly=true, vedrai s singoli rettangoli, che vengono mantenuti sempre, anche per i giorni passati.
1 user thanked author for this post.
09/18/2024 at 4:05 PM #237785Ok, Roberto. Grazie mille.
Il problema è che, togliendo la prima riga, non solo rimangono i quadrati che servono ma, come ti dicevo, ne viene disegnato anche uno grosso, successivo alle 08.00 che arriva fino a mezzanotte. Se guardi l’immagine che ti ho allegato te ne accorgi.
-
AuthorPosts
Find exclusive trading pro-tools on