Indicatore che ripete un segmento
Forums › ProRealTime forum Italiano › Supporto ProOrder › Indicatore che ripete un segmento
- This topic has 13 replies, 3 voices, and was last updated 3 years ago by Ermitage.
-
-
12/13/2020 at 10:16 PM #153608
Buonasera, avrei la necessità di creare un indicatore che a seconda del time frame (es. 15minuti) disegni un segmento orizzontale (lungo es 56 barre), partendo da una certa data e ora e lo ripeta nel futuro,
Il segmento in oggetto rispetto all’asse delle y dovrebbe essere posizionato al disotto del minimo della candela ( o al di sottodel minimo + una certa distanza)
allego una videata con segmenti creati a mano per spiegare meglio cosa vorrei ottenere
lo stesso dicasi per il posizionamento di un testo ( lettera A e lettere B1 e B2) in figura, anche queste vorrei che venissero posizionate in un certo punto del segmento (sia lungo la X relativa e sia lungo la coordinata Y relativa del segmento disegnato)
grazie
12/14/2020 at 11:34 AM #153667Hai scritto “allego una videata”, ma non c’è allegato.
Io personalmente preferisco disegnare con le linee e inserire una trasparenza quando non voglio visualizzare il livello, ma lo potresti anche fare con il DRAWSEGMENT…
Come idea potresti usare qualcosa del genere:line under low at given time, for a tot of candles12345678910111213141516171819// Settingsmytime = 90000 // the candle (in time tf) to spot the lowmaxbarsplot = 10 // for how many candles you want that level plottedmydist = 0 // your pesonal distance from the minimumif opentime = mytime thenlevel = lowcount = 1endifif opentime[1] >= mytime and count < maxbarsplot thencount = count + 1transparency = 255elsetransparency = 0endifreturn level - mydist coloured(0, 0, 0, transparency)Per la data basta che aggiungi un controllo su “opendate” nel primo if.
12/14/2020 at 1:09 PM #153678Per ripeterlo nel futuro occorre utilizzare la v11 ed usare un’istruzione grafica.
12/14/2020 at 2:11 PM #15369812/18/2020 at 10:39 AM #154248Questo è un esempio:
12345678defparam drawonlastbaronly = trueONCE Nbarre = 56IF low = lowest[30](low) THENMinimo = lowInizio = BarIndexENDIFDrawSegment(Inizio,Minimo,BarIndex + Nbarre,Minimo) coloured(255,0,0,255)RETURNse vuoi utilizzare una data di cui non conosci BarIndex, vedi DateToBarIndex https://www.prorealcode.com/documentation/datetobarindex/.
Ovviamente tutto questo solo con la nuova versione 11 della piattaforma, ma credo che ormai l’abbiano tutti, al massimo entro tutto il fine settimana, anche sui conti reali.
12/18/2020 at 6:52 PM #154335Buonasera Roberto,
innanzitutto grazie mille, chiedo ancora una cosa, se è possibile: avere bene un chiarimento dell’istruzione highest[54](high) del codice sotto e se fosse possibile determinare il minimo di una candela all’interno di un intervallo temporale
(es low = valore minimo di prezzo tra le candele comprese tra 17/12/2020 16:00 e 18/12/2020 16:00)
grazie
Drawn segment12345678defparam drawonlastbaronly=truemydate = 20210630drawsegment(datetobarindex(20200101),close,datetobarindex(mydate),highest[54](high))drawtext("#mydate#",datetobarindex(mydate),highest[54](high),dialog,bold,30) coloured(255,0,0)return12/18/2020 at 7:35 PM #154340No, non è possibile, occorre utilizzare un ciclo FOR…NEXT.
12/18/2020 at 8:33 PM #15435212/20/2020 at 12:38 AM #154509Buonasera, sono riuscito a scrivere un codice che in parte esegue quanto richiesto, il codice è piuttosto grezzo e richiede sicuramente di essere affinato, tuttavia partendo ad esempio dal 15 dicembre ore 16:00 riesco a disegnare il segmento se non fosse che non riesco a proiettarlo nel futuro.
Allego codice e ben venga chi riesce ad ottimizzarlo, in particolare non sono bene come far avanzare il valore “mydate” (dalle 16:00 del giorno x alle 16 del giorno x+1, considerando che raggiunto il venerdì dovrei farlo avanzare al lunedì), ho usato l’artifizio di sommare 1000000 al mydate espresso come YYYYMMDDhhmmss ma ovviamente necessita di controlli.
Grazie per l’aiuto
Segment12345678910111213141516171819202122232425262728293031323334353637defparam drawonlastbaronly=truemydate = 20201215160000mydist = 0.5GapA = 0.5GapB = 0.5inizio=135fine=191For i=1 to 5minimo = 999999//barraminimo = 0massimo = 0//barramassimo = 0For j=inizio to fineIF low[j] < minimo THENminimo = low[j]//barraminimo = jendifIF high[j] > massimo THENmassimo = high[j]//barramassimo = jendifnextdrawsegment(datetobarindex(mydate),minimo-GapA,datetobarindex(mydate+1000000),minimo-GapA)coloured(255,0,0)drawtext("A",datetobarindex(mydate+930000),minimo-GapA-mydist,dialog,bold,20) coloured(255,0,0)drawtext("B2",datetobarindex(mydate+963000),massimo+GapB,dialog,bold,20) coloured(255,0,0)drawtext("B1",datetobarindex(mydate+33000),massimo+GapB,dialog,bold,20) coloured(255,0,0)mydate = mydate+1000000inizio = inizio-56fine = fine-56If inizio <0 theninizio = 0endifNextreturn12/20/2020 at 2:26 AM #154518Hai assegnato a MyDate il valore 2020 12 15 160000 ore 16:00:00 del 15/12/2020
poi ci sommi 930000
risultato 2020 12 16 090000 ore 09:00:00 del 16/12/2020che è un risultato errato, qualunque fosse la somma che volevi fare, che siano state 93 ore o 9 ore e 30 minuti.
Sommare le date è molto lungo e comporta facilmente errori.
Ad ogni modo per stampare nel futuro puoi usare una data o una barra futura:
12drawtext("A",datetobarindex(20201222114500),minimo-GapA-mydist,dialog,bold,20) coloured(255,0,0)drawtext("A",BarIndex + 15,minimo-GapA-mydist,dialog,bold,20) coloured(255,0,0)nel primo caso gli dici di stampare alle ore 11:45 del 22/12/2020 e calcola da solo le barre necessarie, nel secondo caso gli dici tu a quale barra stampare.
12/20/2020 at 3:23 PM #154597Grazie Roberto per la consueta disponibilità. Purtroppo per rendere dinamico l’indicatore avrei bisogno di capire se è possibile determinare nota la data la relativa numero di barra, mi spiego alla data del 15-12-2020 16:00:00 la relativa barra è la 191. È possibile nota la data e ora della barra avere il relativo numero di barra?
12/21/2020 at 1:06 AM #154674Buonasera,
ho provato ad inserire un semplice codice per determinate la posizione della candela nota una certa data nel passato, nell’esempio inserisco su TF 15M la data 15/12/2020 16:00 e ottengo
che la candela è la 510 (cioè sul mio grafico con la visualizzazione attuale la posizione della candela è la 510 da sinistra verso destra). Se volessi sapere la posizione da destra verso sinistra. Come posso fare? Quindi ottenere il valore di 191
Grazie per l’aiuto
123456789defparam drawonlastbaronly=trueFOR i=0 to barindexIF Opendate[i] = 20201215 and Opentime[i]=160000 THENcontatore = barindex[i]+1BREAKENDIFNEXTreturn contatore12/21/2020 at 1:30 AM #154682No, purtroppo DATETOBARINDEX può essere usato solo direttamente nell’istruzione DRAW…., il risultato della conversione non può essere assegnato ad una variabile, quindi il suo valore di barIndex è sconosciuto.
12/21/2020 at 6:40 PM #154765Buonasera Roberto,
ma una cosa semplicissima che non riesco a fare è questa se il barindex che ovviamente varia da 0 a 769, io ho determinato il mio contatore che ha valore pari a 537
Voglio assegnare ad una costante il valore pari a 769 -537=232 cioè non voglio semplicemente fare differenza = barindex-contatore, in quanto ovviamente mi viene fuori una retta io vorrei un valore costante
cioè tirare fuori il valore 232 e assegnarlo ad una variabile costante.
Mi sembra banale ma non riesco
-
AuthorPosts
Find exclusive trading pro-tools on