CurrentTime
CurrentTime gibt die Uhrzeit zum Ausführungszeitpunkt als HHMMSS-Ganzzahl zurück, auf jedem Bar des Charts identisch. Verwenden Sie TIME, um die Schlusszeit jedes Bars zu lesen.
Syntax
CurrentTimeSo funktioniert es
CurrentTime liest die Uhr zum Zeitpunkt der Codeausführung und gibt die Tageszeit als sechsstellige Ganzzahl HHMMSS zurück, wobei HH die Stunde, MM die Minute und SS die Sekunde ist. Ein Wert von 073000 steht für 07:30:00. Referenz ist die Zeitzone des Marktes des Instruments, die von der des lokalen Rechners abweichen kann. Die Konstante nimmt keine Parameter und keinen Klammer-Offset an.
Der Wert gehört zur Current-Familie der Datums- und Zeitkonstanten, die den Moment der Ausführung beschreiben und nicht einen Bar im Chart. Jeder Bar einer Berechnung sieht daher dieselbe Zahl: Ein um 07:30:00 aktualisierter Indikator gibt auf jedem historischen Bar 073000 zurück. Das Gegenstück pro Bar ist TIME, der die Schlusszeit jeder verarbeiteten Bar zurückgibt und sich entlang der Zeitachse ändert. Auf historische Daten angewandte Session-Filter gehören zu TIME; CurrentTime beschreibt die aktuelle Uhrzeit.
Da der Wert eine gepackte Ganzzahl ist, funktionieren Vergleiche ganz natürlich: CurrentTime >= 090000 ist ab 09:00:00 wahr. In einem live laufenden ProOrder-System ist CurrentTime sinnvoll, da der Code in Echtzeit ausgeführt wird, sobald Bars eintreffen. In einem Backtest spiegelt es die Zeit wider, zu der der Test läuft, was es für historische Einstiegs- oder Ausstiegsbedingungen unbrauchbar macht.
Beispiele
Beispiel 1, Aufwach-Markierung (Indikator)
// Set the flag when the script executes at exactly 07:30:00
IF (CurrentTime = 073000) THEN
WakeUp = 1
ELSE
WakeUp = 0
ENDIF
RETURN WakeUpDer Indikator zeichnet über den gesamten Chart 1, wenn er um 07:30:00 Marktzeit neu berechnet wird, und sonst 0.
Beispiel 2, Scan innerhalb der Handelszeiten (ProScreener)
// Return matches only during the cash session
inSession = (CurrentTime >= 090000) AND (CurrentTime < 173000)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")Der Screener gibt außerhalb des gewählten Fensters eine leere Liste zurück und nutzt die kompakte Form HHMMSS für einen klaren Bereichstest.
Beispiel 3, Abschaltung zum Tagesende (ProOrder)
// Stop the strategy near the close
DEFPARAM CumulateOrders = false
IF CurrentTime >= 173000 THEN
QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFIm Live-Betrieb stoppt sich das System ab 17:30:00 Marktzeit selbst. Backtests können diesen Zweig nicht sinnvoll durchlaufen, da CurrentTime auf jedem Bar die Zeit des Testlaufs enthält.
Häufige Fehler und Stolperfallen
- Auf jedem Bar derselbe Wert. CurrentTime beschreibt die Uhrzeit, nicht den Chart, daher eine Bedingung wie
CurrentTime = 073000ist für die gesamte Berechnung auf einmal true oder false. Session-Logik pro Bar benötigtTIME. - Blinder Fleck im Backtest. In einem Backtest gibt CurrentTime die Zeit zurück, zu der der Test ausgeführt wird, sodass darauf aufgebaute Zeitfilter pauschal durchlassen oder pauschal blockieren und Ergebnisse erzeugen, die dem Live-Verhalten nicht entsprechen.
- Exakte Übereinstimmung ist fragil.
CurrentTime = 073000gilt nur für eine einzige Sekunde. Bereichsprüfungen wieCurrentTime >= 073000sind für Gating-Logik zuverlässiger. - Kein Bracket-Offset.
CurrentTime[1]lässt sich nicht kompilieren. Nur Konstanten pro Bar wieTIMEakzeptieren einen Index wieTIME[N].
Verwandte Befehle
TIME, Schlusszeit jedes Bars als HHMMSS-Ganzzahl, das bar-bezogene Gegenstück zu dieser Konstante.OpenTime, Eröffnungszeit jedes Bars als HHMMSS-Ganzzahl.OpenTimestamp, UNIX-Zeit der Eröffnung jedes Bars.Timestamp, UNIX-Zeit des Schlusses jedes Bars.CurrentHour, Stunde der Uhr zum Ausführungszeitpunkt.CurrentMinute, Minute der Uhr zum Ausführungszeitpunkt.CurrentSecond, Sekunde der Uhr zum Ausführungszeitpunkt.CurrentYear, Jahr der Uhr zum Ausführungszeitpunkt.