Timestamp
Timestamp returnerer Unix-tidsstempelet for lukketiden til gjeldende candlestick i ProBuilder, og teller sekunder som har gått siden 1. januar 1970 kl. 00:00 UTC.
Syntaks
TimestampNøkkelordet tar ingen parametere. En historikkindeks i hakeparenteser leser tidligere bars, så Timestamp[1] gir lukketidspunktet for forrige bar.
Slik fungerer det
Et Unix-tidsstempel representerer tid som det totale antallet sekunder som har gått siden Unix-epoken, 1. januar 1970 kl. 00:00:00 UTC. Timestamp rapporterer det antallet for lukkingen av hvert candlestick. Skalaen er universell: den avhenger ikke av plattformens tidssoneinnstilling, geografisk plassering eller regler for sommertid, noe som gjør den til det pålitelige grunnlaget for tidsberegninger i tradingskript.
Fordi tellingen er lineær, gir det å trekke én Timestamp-verdi fra en annen en eksakt differanse i sekunder. Dette er egenskapen som HHMMSS-verdier som TIME mangler, siden sifrene koder timer og minutter posisjonelt. Typiske mønstre er å lagre tidsstemplet til en referansehendelse i en variabel, og deretter sammenligne senere barer mot den for å måle hvor mye tid som har gått.
Det relaterte nøkkelordet OpenTimestamp rapporterer Unix-tiden for barens åpning i stedet for lukkingen. På en fullført bar, Timestamp - OpenTimestamp er lik barens varighet. På den levende baren som dannes, fortsetter Timestamp å øke, så samme uttrykk måler alderen på baren så langt.
Eksempler
Eksempel 1, Sekunder som har gått siden uken åpnet (Indikator)
// Store the timestamp of the first bar of each new week
IF DayOfWeek < DayOfWeek[1] THEN
firstBarTime = Timestamp
ENDIF
RETURN Timestamp - firstBarTime AS "elapsed seconds"Et fall i ukedagsnummeret markerer den første baren i en ny uke. Timestamp for den lagres, og hver påfølgende bar plotter antallet sekunder som har gått siden den referansen.
Eksempel 2, Gå ut av en posisjon etter en fast holdetid (ProOrder)
// Record the entry time, then exit after two hours on market
IF NOT OnMarket AND close CROSSES OVER Average[50](close) THEN
BUY 1 CONTRACT AT MARKET
entryStamp = Timestamp
ENDIF
IF LongOnMarket AND Timestamp - entryStamp >= 7200 THEN
SELL AT MARKET
ENDIFTimestamp for inngangsbaren lagres når posisjonen åpnes. Når differansen når 7200 sekunder, to timer, lukkes posisjonen uavhengig av pris.
Eksempel 3, Utelate instrumenter med sparsomme data (ProScreener)
// Match instruments whose last two bars closed less than a day apart
active = Timestamp - Timestamp[1] < 86400
SCREENER[active] ("Bar age")Å sammenligne lukketidsstemplene til de to siste barene filtrerer ut instrumenter hvis data kommer sjeldnere enn én gang per dag.
Vanlige feil og fallgruver
- Sekunder, ikke millisekunder. ProBuilder-tidsstempler teller sekunder. Terskler kopiert fra miljøer som bruker millisekund-epoker er feil med en faktor på 1000.
- Lukketid, ikke klokketid. På historiske barer er Timestamp øyeblikket den baren lukket, ikke nåtiden. Å behandle den som "nå" under en backtest-avspilling fører til betingelser som aldri var sanne historisk.
- Ikke sammenlignbar med datoer eller HHMMSS-verdier. Et tidsstempel som
1719849600deler ingen skala med20240701eller140000. Sammenligninger på tvers av formater kompilerer, men gir meningsløse resultater. - Uinitialiserte referansevariabler. Mønstre som
Timestamp - firstBarTimereturnerer hele epoketallet til referansevariabelen tilordnes første gang, siden utilordnede variabler starter på 0. Sikre uttrykket eller vent til referansehendelsen har inntruffet.
Relaterte instruksjoner
OpenTimestamp, Unix-tidsstempel for åpningen av baren.CurrentTime, klokketid i HHMMSS-format.OpenTime, åpningstiden for baren som et HHMMSS-heltall.TIME, stengetiden for en bar i HHMMSS-format.DayOfWeek, ukedagen til baren, nyttig for ukentlige ankerpunkter.Today, datoen for gjeldende bar i YYYYMMDD-format.BarIndex, antall barer siden begynnelsen av den innlastede historikken.