Timestamp
Timestamp gibt in ProBuilder den Unix-Zeitstempel der Schlusszeit der aktuellen Kerze zurück und zählt die seit dem 1. Januar 1970 um 00:00 UTC vergangenen Sekunden.
Syntax
TimestampDas Schlüsselwort nimmt keine Parameter. Ein Historienindex in eckigen Klammern liest frühere Bars, daher Timestamp[1] gibt den Schlusszeitstempel des vorherigen Bars.
So funktioniert es
Ein Unix-Zeitstempel stellt die Zeit als die Gesamtzahl der Sekunden dar, die seit der Unix-Epoche am 1. Januar 1970 um 00:00:00 UTC vergangen sind. Timestamp meldet diese Zahl für den Schluss jeder Kerze. Die Skala ist universell: Sie hängt nicht von der Zeitzoneneinstellung der Plattform, der geografischen Lage oder den Sommerzeitregeln ab, was sie zur verlässlichen Grundlage für Zeitberechnungen in Trading-Skripten macht.
Da die Zählung linear ist, ergibt die Subtraktion zweier Timestamp-Werte eine exakte Differenz in Sekunden. Das ist die Eigenschaft, die HHMMSS-Werte wie TIME fehlt, da ihre Ziffern Stunden und Minuten positionell codieren. Typische Muster sind, den Zeitstempel eines Referenzereignisses in einer Variablen zu speichern und spätere Bars dann damit zu vergleichen, um zu messen, wie viel Zeit vergangen ist.
Das verwandte Schlüsselwort OpenTimestamp meldet die Unix-Zeit des Bar-Open statt des Close. Auf einem abgeschlossenen Bar, Timestamp - OpenTimestamp entspricht der Bar-Dauer. Auf der sich live bildenden Bar läuft Timestamp weiter, sodass derselbe Ausdruck das bisherige Alter der Bar misst.
Beispiele
Beispiel 1, Seit der Wocheneröffnung vergangene Sekunden (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"Ein Rückgang der Wochentagsnummer markiert den ersten Bar einer neuen Woche. Sein Timestamp wird gespeichert, und jeder folgende Bar zeichnet die Anzahl der seit dieser Referenz vergangenen Sekunden.
Beispiel 2, Eine Position nach einer festen Haltedauer schließen (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
ENDIFDer Timestamp des Einstiegs-Bars wird gespeichert, wenn die Position eröffnet wird. Sobald die Differenz 7200 Sekunden erreicht, also zwei Stunden, wird die Position unabhängig vom Kurs geschlossen.
Beispiel 3, Instrumente mit spärlichen Daten ausschließen (ProScreener)
// Match instruments whose last two bars closed less than a day apart
active = Timestamp - Timestamp[1] < 86400
SCREENER[active] ("Bar age")Der Vergleich der Schluss-Zeitstempel der letzten beiden Bars filtert Instrumente heraus, deren Daten seltener als einmal pro Tag eintreffen.
Häufige Fehler und Stolperfallen
- Sekunden, nicht Millisekunden. ProBuilder-Zeitstempel zählen Sekunden. Schwellenwerte, die aus Umgebungen mit Millisekunden-Epochen kopiert wurden, liegen um den Faktor 1000 daneben.
- Schlusszeit, nicht Echtzeituhr. Auf historischen Bars ist Timestamp der Moment, in dem dieser Bar geschlossen hat, nicht die gegenwärtige Zeit. Ihn während einer Backtest-Wiedergabe als "jetzt" zu behandeln führt zu Bedingungen, die historisch nie wahr waren.
- Nicht vergleichbar mit Datumsangaben oder HHMMSS-Werten. Ein Zeitstempel wie
1719849600teilt keine Skala mit20240701oder140000. Vergleiche über Formate hinweg kompilieren, liefern aber sinnlose Ergebnisse. - Nicht initialisierte Referenzvariablen. Muster wie
Timestamp - firstBarTimeliefern den vollen Epoch-Wert, bis die Referenzvariable erstmals zugewiesen wird, da nicht gesetzte Variablen bei 0 beginnen. Sichern Sie den Ausdruck ab oder warten Sie, bis das Referenzereignis eingetreten ist.
Verwandte Befehle
OpenTimestamp, Unix-Zeitstempel der Bar-Eröffnung.CurrentTime, Echtzeituhr im HHMMSS-Format.OpenTime, Eröffnungszeit des Bars als HHMMSS-Ganzzahl.TIME, Schlusszeit eines Bars im Format HHMMSS.DayOfWeek, Wochentag des Bars, nützlich für wöchentliche Ankerpunkte.Today, Datum des aktuellen Bars im Format YYYYMMDD.BarIndex, Anzahl der Bars seit Beginn der geladenen Historie.