Timestamp
Timestamp returnerar Unix-tidsstämpeln för den aktuella candlestickens stängningstid i ProBuilder, och räknar sekunder som förflutit sedan 1 januari 1970 kl. 00:00 UTC.
Syntax
TimestampNyckelordet tar inga parametrar. Ett historikindex i hakparenteser läser tidigare barer, så Timestamp[1] ger stängningstidsstämpeln för föregående bar.
Så fungerar det
En Unix-tidsstämpel representerar tid som det totala antalet sekunder som förflutit sedan Unix-epoken, 1 januari 1970 kl. 00:00:00 UTC. Timestamp rapporterar det antalet för varje candlesticks stängning. Skalan är universell: den beror inte på plattformens tidszonsinställning, geografisk plats eller regler för sommartid, vilket gör den till den tillförlitliga grunden för tidsberäkningar i tradingskript.
Eftersom räkningen är linjär ger subtraktion av två Timestamp-värden en exakt skillnad i sekunder. Det är den egenskap som HHMMSS-värden som TIME saknar, eftersom deras siffror kodar timmar och minuter positionellt. Typiska mönster är att lagra tidsstämpeln för en referenshändelse i en variabel och sedan jämföra senare barer mot den för att mäta hur mycket tid som gått.
Det relaterade nyckelordet OpenTimestamp rapporterar Unix-tiden för barens öppning i stället för stängningen. På en avslutad bar, Timestamp - OpenTimestamp är lika med barens längd. På den bar som håller på att formas fortsätter Timestamp att öka, så samma uttryck mäter barens ålder så långt.
Exempel
Exempel 1, Sekunder som förflutit sedan veckan öppnade (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"En minskning av veckodagsnumret markerar den första baren i en ny vecka. Dess Timestamp lagras, och varje följande bar ritar antalet sekunder som förflutit sedan den referensen.
Exempel 2, Stänga en position efter en fast innehavstid (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
ENDIFEntrybarens Timestamp sparas när positionen öppnas. När skillnaden når 7200 sekunder, två timmar, stängs positionen oavsett pris.
Exempel 3, Utesluta instrument med gles data (ProScreener)
// Match instruments whose last two bars closed less than a day apart
active = Timestamp - Timestamp[1] < 86400
SCREENER[active] ("Bar age")Att jämföra stängningstidsstämplarna för de två senaste barerna filtrerar bort instrument vars data kommer in mer sällan än en gång per dag.
Vanliga fel och fallgropar
- Sekunder, inte millisekunder. ProBuilder-tidsstämplar räknar sekunder. Tröskelvärden kopierade från miljöer som använder millisekundepoker är fel med en faktor 1000.
- Stängningstid, inte klocktid. På historiska barer är Timestamp det ögonblick då baren stängde, inte den nuvarande tiden. Att behandla den som "nu" under en backtest-replay leder till villkor som aldrig var sanna historiskt.
- Inte jämförbar med datum eller HHMMSS-värden. En tidsstämpel som
1719849600delar ingen skala med20240701eller140000. Jämförelser mellan format kompilerar men ger meningslösa resultat. - Oinitierade referensvariabler. Mönster som
Timestamp - firstBarTimereturnerar hela epokräkningen fram till att referensvariabeln tilldelas första gången, eftersom otilldelade variabler börjar på 0. Skydda uttrycket eller vänta till referenshändelsen har inträffat.
Relaterade instruktioner
OpenTimestamp, Unix-tidsstämpel för barens öppning.CurrentTime, klocktid i formatet HHMMSS.OpenTime, barens öppningstid som ett HHMMSS-heltal.TIME, stängningstiden för en bar i formatet HHMMSS.DayOfWeek, barens veckodag, användbar för veckoankare.Today, datumet för den aktuella baren i formatet YYYYMMDD.BarIndex, antal barer sedan början av den inlästa historiken.