CurrentYear
CurrentYear gibt die vierstellige Jahreszahl der Uhr zum Ausführungszeitpunkt zurück, auf jedem Bar des Charts identisch. Verwenden Sie Year, um das Jahr des Schlusses jedes Bars zu lesen.
Syntax
CurrentYearSo funktioniert es
CurrentYear liest die Uhr zum Zeitpunkt der Codeausführung und gibt das Kalenderjahr als vierstellige Ganzzahl zurück, zum Beispiel 2026. 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 2026 aktualisierter Indikator gibt auf jedem historischen Bar 2026 zurück. Das Gegenstück pro Bar ist Year, der das Jahr des Schlusses jeder verarbeiteten Bar zurückgibt und sich entlang der Zeitachse ändert. Eine Segmentierung historischer Daten nach Jahren gehört zu Year; CurrentYear beschreibt den aktuellen Kalenderzeitpunkt.
In einem live laufenden ProOrder-System ist CurrentYear sinnvoll, da der Code in Echtzeit ausgeführt wird, während die Bars eintreffen. In einem Backtest spiegelt es das Jahr wider, in dem der Test läuft, was es für historische jahresbasierte Bedingungen unbrauchbar macht.
Beispiele
Beispiel 1, Beschriftung mit dem aktuellen Jahr (Indikator)
// Retrieve the year of the clock at execution time
iYear = CurrentYear
RETURN iYear AS "this is the current year"Der Indikator zeichnet über den gesamten Chart eine flache Linie beim aktuellen Jahr, die bei jeder Neuberechnung des Skripts auf das Jahr der Uhrzeit aktualisiert wird.
Beispiel 2, Durch das Jahr gesteuerter Scan (ProScreener)
// Return matches only from a chosen year onward
recentEnough = CurrentYear >= 2026
SCREENER[recentEnough AND close > Average[50](close)] (close AS "Close")Der Screener meldet erst Ergebnisse, wenn die Uhr 2026 oder später erreicht, eine einfache Kalendersperre für einen geplanten Scan.
Beispiel 3, Jahresbasierter Stop (ProOrder)
// Stop the strategy at the turn of a chosen year
DEFPARAM CumulateOrders = false
IF CurrentYear >= 2027 THEN
QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFIm Live-Betrieb stoppt sich das System selbst, sobald der Kalender in 2027 wechselt. Backtests können diesen Zweig nicht sinnvoll durchlaufen, da CurrentYear auf jedem Bar das Jahr des Testlaufs enthält.
Häufige Fehler und Stolperfallen
- Auf jedem Bar derselbe Wert. CurrentYear beschreibt den Kalender, nicht den Chart, daher ist eine Bedingung wie
CurrentYear = 2026ist für die gesamte Berechnung auf einmal true oder false. Jahreslogik pro Bar benötigtYear. - Blinder Fleck im Backtest. In einem Backtest gibt CurrentYear das Jahr zurück, in dem der Test ausgeführt wird, sodass darauf aufgebaute Jahresfilter pauschal durchlassen oder pauschal blockieren und Ergebnisse erzeugen, die dem Live-Verhalten nicht entsprechen.
- Zeitzone des Marktes, nicht Ortszeit. Das Jahr bezieht sich auf den Markt des Instruments und berücksichtigt den lokalen Zeitversatz des Betrachters nicht.
- Kein Bracket-Offset.
CurrentYear[1]lässt sich nicht kompilieren. Nur Konstanten pro Bar wieYear[N]akzeptieren einen Index.
Verwandte Befehle
Year, vierstellige Jahreszahl des Schlusses jedes Bars, das bar-bezogene Gegenstück zu dieser Konstante.OpenYear, Jahr bei der Eröffnung jedes Bars.CurrentMonth, Monat der Uhr zum Ausführungszeitpunkt.CurrentHour, Stunde der Uhr zum Ausführungszeitpunkt.CurrentTime, vollständige Uhrzeit bei Ausführung als HHMMSS-Ganzzahl.Month, Monat jedes Bars.Day, Tag des Monats jedes Bars.TIME, Schlusszeit jedes Bars als HHMMSS-Ganzzahl.