Bli medlem idag
Datum och tid/probuilder · probacktest · proorder · proscreener

CurrentTime

CurrentTime returnerar klocktiden vid exekvering som ett HHMMSS-heltal, identisk på varje bar i diagrammet. Använd TIME för att läsa stängningstiden för varje bar.

Syntax

probuilder
CurrentTime

Så fungerar det

CurrentTime läser klockan i det ögonblick koden körs och returnerar tiden på dygnet som ett sexsiffrigt heltal HHMMSS, där HH är timmen, MM minuten och SS sekunden. Värdet 073000 står för 07:30:00. Referensen är tidszonen för instrumentets marknad, som kan skilja sig från den lokala datorn. Konstanten tar inga parametrar och ingen förskjutning i hakparenteser.

Värdet hör till Current-familjen av datum- och tidskonstanter, som beskriver exekveringsögonblicket snarare än någon bar i diagrammet. Varje bar i en beräkning ser därför samma tal: en indikator som uppdateras 07:30:00 returnerar 073000 på varje historisk bar. Syskonkonstanten per bar är TIME, som returnerar stängningstiden för varje bar som behandlas och förändras längs tidsaxeln. Sessionsfilter som tillämpas på historiska data hör till TIME; CurrentTime beskriver klockan just nu.

Eftersom värdet är ett packat heltal fungerar jämförelser naturligt: CurrentTime >= 090000 är sant från 09:00:00 och framåt. I ett live-ProOrder-system är CurrentTime meningsfullt, eftersom koden körs i realtid när barer kommer in. I en backtest speglar det tidpunkten då testet körs, vilket gör det olämpligt för historiska entry- eller exitvillkor.

Exempel

Exempel 1, Väckningsflagga (Indikator)

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

Indikatorn ritar 1 över hela diagrammet när den räknas om vid 07:30:00 marknadstid, och 0 annars.

Exempel 2, Skanning inom sessionens timmar (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")

Screenern returnerar en tom lista utanför det valda fönstret och använder den packade HHMMSS-formen för ett rent intervalltest.

Exempel 3, Avstängning vid dagens slut (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 stoppar systemet sig självt från 17:30:00 marknadstid och framåt. Backtest kan inte pröva den här grenen på ett meningsfullt sätt, eftersom CurrentTime innehåller tiden för testkörningen på varje bar.

Vanliga fel och fallgropar

  • Samma värde på varje bar. CurrentTime beskriver klockan, inte diagrammet, så ett villkor som CurrentTime = 073000 är sant eller falskt för hela beräkningen på en gång. Sessionslogik per bar kräver TIME.
  • Blind fläck i backtest. I ett backtest returnerar CurrentTime tiden då testet exekveras, så tidsfilter byggda på den släpper igenom eller blockerar allt och ger resultat som inte stämmer med beteendet live.
  • Exakt matchning är ömtålig. CurrentTime = 073000 gäller bara under en enda sekund. Omfångstest som CurrentTime >= 073000 är mer tillförlitliga för villkorslogik.
  • Ingen bracket-offset. CurrentTime[1] kompilerar inte. Endast konstanter per bar som TIME accepterar ett index som TIME[N].
  • TIME, stängningstid för varje bar som ett HHMMSS-heltal, motsvarigheten per bar till den här konstanten.
  • OpenTime, öppningstiden för varje bar som ett HHMMSS-heltal.
  • OpenTimestamp, UNIX-tid för öppningen av varje bar.
  • Timestamp, UNIX-tid för stängningen av varje bar.
  • CurrentHour, klockans timme vid exekveringstidpunkten.
  • CurrentMinute, klockans minut vid exekveringstidpunkten.
  • CurrentSecond, klockans sekund vid exekveringstidpunkten.
  • CurrentYear, klockans år vid exekveringstidpunkten.