durata candela VOLUME
Forums › ProRealTime forum Italiano › Supporto ProBuilder › durata candela VOLUME
- This topic has 9 replies, 2 voices, and was last updated 5 years ago by
Gabriele Battista.
-
-
06/14/2019 at 3:48 PM #100676
ciao ho scritto il codice di un indicatore che mi desse per grafici a volume la durata temporale di ogni candela. il codice è:
1234567891011if intradaybarindex>1 thendurata=opentime-opentime[1]elsedurata=durata[1]endifreturn durataIn alcuni casi da dei valori anomali, mi sai spiegare? Allego un grafico per spiegazione
06/14/2019 at 4:16 PM #100682Per scrivere il codice , utilizza il pulsante <> “insert PRT code”.
Grazie.
06/14/2019 at 8:06 PM #100692perdonami non ho capito dove devo mettere “insert PRT code”
06/14/2019 at 9:22 PM #100695E’ il pulsante evidenziato, cliccalo e poi scrivi il codice nell’apposita finestra che si apre.
06/14/2019 at 9:22 PM #100697Per la durata, attendi un pò, ci sto lavorando.
06/15/2019 at 8:04 AM #100708durata candela1234567891011if intradaybarindex>1 thendurata=opentime-opentime[1]elsedurata=durata[1]endifreturn durata06/15/2019 at 9:22 AM #100713Il tuo codice potrebbe essere scritto semplicemente:
1RETURN opentime-opentime[1]ma non fa quello che vuoi, il calcolo tra i due orari è fatto in modo numerico, per cui le ore 16:01:30 – le ore 15:59:45 diventa 160130 – 155945 = 14985, che è un numero senza senso. PRT supporta il solo tipo di dati numerico reale (in virgola mobile), non ha interi, date, stringhe, ecc…
Per cui è necessario estrapolare i singoli valori delle ore, minuti e secondi facendo delle operazioni matematiche, molto semplici, ma numerose (rspetto alla semplice riga a cui tu avevi pensato):
12345678910111213141516171819202122232425262728293031323334Ora1 = OpenTime //ORA attualex = round((Ora1 / 100) - 0.5) * 100 //trovi l'ora ed i minuti, senza secondiss1 = Ora1 - x //trovi i secondiy = round((x / 10000) - 0.5) * 10000 //trovi l'ora senza secondi e senza minutimm1 = (x - y) / 100 //trovi i minutihh1 = round((Ora1 / 10000) - 0.5)//////////////////////////////////////////////////////////////////////Ora2 = OpenTime[1] //ORA della candela precedentex = round((Ora2 / 100) - 0.5) * 100 //trovi l'ora ed i minuti, senza secondiss2 = Ora2 - x //trovi i secondiy = round((x / 10000) - 0.5) * 10000 //trovi l'ora senza secondi e senza minutimm2 = (x - y) / 100 //trovi i minutihh2 = round((Ora2 / 10000) - 0.5)//////////////////////////////////////////////////////////////////////// Calcolo delle differenzeDiffH = hh1 - hh2 //Differenza tra le oreIF DiffH < 0 THENDiffH = DiffH + 23ENDIFDiffM = mm1 - mm2 //Differenza tra i minutiIF DiffM < 0 THENDiffM = DiffM + 59ELSIF ss1 < ss2 THENDiffM = DiffM - 1ENDIF//ENDIFDiffS = ss1 - ss2 //Differenza tra i secondiIF DiffS < 0 THENDiffS = DiffS + 59ENDIF//////////////////////////////////////////////////////////////////////// Riportare tutto in SECONDIDiff = Diffs + (DiffM * 60) + (DiffH * 3600)RETURN Diff AS "Secondi"06/15/2019 at 12:15 PM #100723ci deve essere cmq qualcosa che non va ancora ci sono dei picchi di 70′ impossibili, anche nel tuo grafico
06/15/2019 at 12:38 PM #100729I picchi ci sono perché le candele sono così distanti tra loro, specialmente al cambio giorno.
Talvolta anche durante la giornata.
Non saprei dirti, prova a confrontare i dati con altre piattaforme, utilizzando gli stessi parametri.
06/15/2019 at 1:19 PM #100739ho controllato e c’era un errore nel codice al cambio di ora, ho corretto ed adesso funziona.
durata candela in secondi123456789101112131415161718192021222324252627282930313233343536Ora1 = OpenTime //ORA attualex = round((Ora1 / 100) - 0.5) * 100 //trovi l'ora ed i minuti, senza secondiss1 = Ora1 - x //trovi i secondiy = round((x / 10000) - 0.5) * 10000 //trovi l'ora senza secondi e senza minutimm1 = (x - y) / 100 //trovi i minutihh1 = round((Ora1 / 10000) - 0.5)//////////////////////////////////////////////////////////////////////Ora2 = OpenTime[1] //ORA della candela precedentex = round((Ora2 / 100) - 0.5) * 100 //trovi l'ora ed i minuti, senza secondiss2 = Ora2 - x //trovi i secondiy = round((x / 10000) - 0.5) * 10000 //trovi l'ora senza secondi e senza minutimm2 = (x - y) / 100 //trovi i minutihh2 = round((Ora2 / 10000) - 0.5)//////////////////////////////////////////////////////////////////////// Calcolo delle differenzeDiffH = hh1 - hh2 //Differenza tra le oreIF DiffH < 0 THENDiffH = DiffH + 23ELSIF DiffH=1 THENDiffH=0m1=m1+60ENDIFDiffM = mm1 - mm2 //Differenza tra i minutiIF DiffM < 0 THENDiffM = DiffM + 59ELSIF ss1 < ss2 THENDiffM = DiffM - 1ENDIFDiffS = ss1 - ss2 //Differenza tra i secondiIF DiffS < 0 THENDiffS = DiffS + 59ENDIF////////////////////////////////////////////////////////////////////////Riportare tutto in SECONDIDiff = Diffs + (DiffM * 60) + (DiffH * 3600)RETURN Diff AS "Secondi"1 user thanked author for this post.
-
AuthorPosts
Find exclusive trading pro-tools on