CurrentTime
CurrentTime geeft de kloktijd op het moment van uitvoering als een HHMMSS-integer, identiek op elke bar van de grafiek. Gebruik TIME om de slottijd van elke bar te lezen.
Syntaxis
CurrentTimeHoe het werkt
CurrentTime leest de klok op het moment dat de code wordt uitgevoerd en geeft de tijd van de dag als een zescijferige integer HHMMSS, waarbij HH het uur is, MM de minuut en SS de seconde. Een waarde van 073000 staat voor 07:30:00. De referentie is de tijdzone van de markt van het instrument, die kan afwijken van de lokale machine. De constante neemt geen parameters en geen offset tussen rechte haken.
De waarde hoort tot de Current-familie van datum- en tijdconstanten, die het moment van uitvoering beschrijven en niet een bar op de grafiek. Elke bar van een berekening ziet daarom hetzelfde getal: een indicator die om 07:30:00 wordt ververst, geeft 073000 op elke historische bar. De tegenhanger per bar is TIME, die de sluittijd van elke verwerkte bar geeft en meebeweegt langs de tijdas. Sessiefilters toegepast op historische data horen bij TIME; CurrentTime beschrijft de actuele kloktijd.
Omdat de waarde een gepackt geheel getal is, werken vergelijkingen vanzelf: CurrentTime >= 090000 is waar vanaf 09:00:00. In een live ProOrder-systeem is CurrentTime zinvol, omdat de code in realtime wordt uitgevoerd terwijl bars binnenkomen. In een backtest geeft het de tijd weer waarop de test loopt, wat het onbruikbaar maakt voor historische instap- of uitstapvoorwaarden.
Voorbeelden
Voorbeeld 1, Wekmarkering (Indicator)
// Set the flag when the script executes at exactly 07:30:00
IF (CurrentTime = 073000) THEN
WakeUp = 1
ELSE
WakeUp = 0
ENDIF
RETURN WakeUpDe indicator plot 1 over de hele grafiek wanneer hij wordt herberekend op 07:30:00 markttijd, en anders 0.
Voorbeeld 2, Scan binnen de sessie-uren (ProScreener)
// Return matches only during the cash session
inSession = (CurrentTime >= 090000) AND (CurrentTime < 173000)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")De screener geeft buiten het gekozen venster een lege lijst terug, met gebruik van de compacte HHMMSS-vorm voor een schone bereiktest.
Voorbeeld 3, Stilleggen aan het einde van de dag (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
ENDIFLive legt het systeem zichzelf stil vanaf 17:30:00 markttijd. Backtests kunnen deze tak niet zinvol doorlopen, omdat CurrentTime op elke bar de tijd van de testrun bevat.
Veelvoorkomende fouten en valkuilen
- Dezelfde waarde op elke bar. CurrentTime beschrijft de klok, niet de grafiek, dus een voorwaarde zoals
CurrentTime = 073000is waar of onwaar voor de hele berekening in één keer. Sessielogica per bar vereistTIME. - Blinde vlek in de backtest. In een backtest geeft CurrentTime de tijd waarop de test wordt uitgevoerd, dus tijdfilters die erop zijn gebouwd laten alles door of blokkeren alles en leveren resultaten op die niet overeenkomen met live gedrag.
- Exacte overeenkomst is fragiel.
CurrentTime = 073000geldt maar één seconde. Bereiktests zoalsCurrentTime >= 073000zijn betrouwbaarder voor gating-logica. - Geen offset tussen haakjes.
CurrentTime[1]compileert niet. Alleen constanten per bar zoalsTIMEaccepteren een index zoalsTIME[N].
Gerelateerde instructies
TIME, slottijd van elke bar als een HHMMSS-integer, de variant per bar van deze constante.OpenTime, openingstijd van elke bar als geheel getal in HHMMSS.OpenTimestamp, UNIX-tijd van de opening van elke bar.Timestamp, UNIX-tijd van de close van elke bar.CurrentHour, uur van de klok op het moment van uitvoering.CurrentMinute, minuut van de klok op het moment van uitvoering.CurrentSecond, seconde van de klok op het moment van uitvoering.CurrentYear, jaar van de klok op het moment van uitvoering.