Draw Monthly Segment
Forums › ProRealTime forum Italiano › Supporto ProBuilder › Draw Monthly Segment
- This topic has 6 replies, 2 voices, and was last updated 5 months ago by robertogozzi.
-
-
06/07/2024 at 9:54 AM #233609
Hello, I would like to modify the following indicator to draw the segment exactly till the end of each month, and not limiting it to the current barindex.
Any idea?
many thanks in advanceCiao, vorrei modificare il seguente indicatore per disegnare il segmento esattamente fino alla fine di ogni mese e non limitarlo al barindex corrente.
Qualche idea?
Molte grazie in anticipodefparam drawonlastbaronly = true
once lastmonthBarIndex = 0if barindex>0 then
If month<>month[1] then
hi=high
lo=low
lastmonthBarIndex = BarIndex
Endif
endifhi = max(hi,high)
lo = min(lo,low)DRAWSEGMENT(lastMonthBarIndex,hi,barindex,hi )
DRAWSEGMENT(lastMonthBarIndex,lo,barindex,lo )return
06/09/2024 at 5:45 PM #233659Eccolo:
1234567891011121314151617181920212223242526272829303132333435363738394041defparam drawonlastbaronly = trueonce lastmonthBarIndex = 0if barindex>0 thenIf month<>month[1] thenhi=highlo=lowlastmonthBarIndex = BarIndexEndifendifhi = max(hi,high)lo = min(lo,low)// Predisporre la data di fine mese correnteAnno = OpenYear * 10000Mese = OpenMonth// determinare l'ultimo giorno del meseGiorni = 31IF (Mese = 4) OR (Mese = 6) OR (Mese = 9) OR (Mese = 11) THENGiorni = 30ELSIF (Mese = 2) THENGiorni = 28// verificare quando Febbraio è bisestileIF OpenYear MOD 4 = 0 THENIF OpenYear MOD 100 = 0 THENIF OpenYear MOD 400 = 0 THENGiorni = 29ENDIFELSEGiorni = 29ENDIFENDIFENDIFFineMese = Anno + (Mese * 100) + Giorni// usare la data calcolate con DATETOBARINDEX per stampare fino all'ultimo giornoDRAWSEGMENT(lastMonthBarIndex,hi,DateToBarindex(FineMese),hi)DRAWSEGMENT(lastMonthBarIndex,lo,DateToBarindex(FineMese),lo)returnPubblica solo nella lingua del forum in cui stai postando. Ad esempio solo l’inglese nei forum di lingua inglese e il francese solo nei forum di lingua francese. Grazie 🙂
1 user thanked author for this post.
06/09/2024 at 8:26 PM #233663Grande Roberto, grazie mille, funziona perfettamente!
Se volessi invece applicarlo anche ai trimestri 0 semplicemente all’anno? Purtroppo non riesco ad adattare il codice, abbi pazienza 🙂TRIMESTRE:
if barindex>0 then
If month<>month[1] then
if month=4 or month=7 or month=10 or month= 1 then
hi=high
lo=low
lastQuarterBarIndex = BarIndex
Endif
endif
endif…..?grazie ancora, gentilissimo
ANNO:
if barindex>0 then
If year<>year[1] then
hi=high
lo=low
lastYearBarIndex = BarIndex
Endif
endif……?06/10/2024 at 10:23 AM #233674Questo è quello Trimestrale (il trimestre inizia quando il MESE diviso per 3 da come resto 1):
Trimestrale123456789101112131415161718192021222324252627282930313233343536defparam drawonlastbaronly = trueonce LastTrimBarIndex = 0if barindex>0 thenIf (OpenMonth<>OpenMonth[1]) AND ((OpenMonth MOD 3) = 1) thenhi=highlo=lowLastTrimBarIndex = BarIndex// Predisporre la data di fine mese correnteAnno = OpenYear * 10000Mese = OpenMonthGiorni = 31IF (Mese = 1) THENMese = 3ELSIF (Mese = 10) THENMese = 12ELSIF (Mese = 7) THENMese = 9Giorni = 30ELSIF (Mese = 4) THENMese = 6Giorni = 30ENDIF// determinare l'ultimo giorno dell'ultimo mese del trimestreFineMese = Anno + (Mese * 100) + GiorniEndifendifhi = max(hi,high)lo = min(lo,low)// usare la data calcolate con DATETOBARINDEX per stampare fino all'ultimo giornoDRAWSEGMENT(LastTrimBarIndex,hi,DateToBarindex(FineMese),hi)DRAWSEGMENT(LastTrimBarIndex,lo,DateToBarindex(FineMese),lo)returne questo è quello ANNUALE:
12345678910111213141516171819202122defparam drawonlastbaronly = trueonce LastBarIndex = 0if barindex>0 thenIf (OpenYear<>OpenYear[1]) THENhi=highlo=lowLastBarIndex = BarIndexAnno = OpenYear// determinare l'ultimo giorno dell'ultimo mese del trimestreFineMese = (Anno * 10000) + 1231Endifendifhi = max(hi,high)lo = min(lo,low)// usare la data calcolate con DATETOBARINDEX per stampare fino all'ultimo giornoDRAWSEGMENT(LastBarIndex,hi,DateToBarindex(FineMese),hi)DRAWSEGMENT(LastBarIndex,lo,DateToBarindex(FineMese),lo)return1 user thanked author for this post.
06/10/2024 at 2:19 PM #23368206/11/2024 at 6:09 PM #233765Roberto, ultima domanda: impostare una data di inizio prossimo mese e fine prossimo mese e disegnarci poi il segmento rimane comunque possibile?
Questo codice mi da errore:InPrMe = Anno + ((Mese+1) * 100) + 1
FiPrMe = Anno + ((Mese+1) * 100) + GiorniGrazie di nuovo
06/12/2024 at 10:42 AM #233799Si, però devi verificare:
- che MESE+1 non superi 12, se lo supera devi ripartire dal mese 1 ed incrementare l’anno
- che la formula con +GIORNI non ecceda la fine del mese, altrimenti devi incrementare il MESE (in tal caso vedi quanto detto al punto precedente) e calcolare qual’è il GIORNO del nuovo mese.
Le operazioni sulle date sono un pò lunghe e macchinose, si sbaglia facilmente 🙂
1 user thanked author for this post.
-
AuthorPosts