Word nu lid
Datum en tijd/probuilder · probacktest · proorder · proscreener

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

probuilder
CurrentTime

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

probuilder
// Set the flag when the script executes at exactly 07:30:00
IF (CurrentTime = 073000) THEN
    WakeUp = 1
ELSE
    WakeUp = 0
ENDIF
RETURN WakeUp

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

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

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

Live 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 = 073000 is waar of onwaar voor de hele berekening in één keer. Sessielogica per bar vereist TIME.
  • 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 = 073000 geldt maar één seconde. Bereiktests zoals CurrentTime >= 073000 zijn betrouwbaarder voor gating-logica.
  • Geen offset tussen haakjes. CurrentTime[1] compileert niet. Alleen constanten per bar zoals TIME accepteren een index zoals TIME[N].
  • 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.