Jetzt beitreten
Datum und Uhrzeit/probuilder · probacktest · proorder · proscreener

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

probuilder
Timestamp

Das 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)

probuilder
// 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)

probuilder
// 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
ENDIF

Der 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)

probuilder
// 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 1719849600 teilt keine Skala mit 20240701 oder 140000. Vergleiche über Formate hinweg kompilieren, liefern aber sinnlose Ergebnisse.
  • Nicht initialisierte Referenzvariablen. Muster wie Timestamp - firstBarTime liefern 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.
  • 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.