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

CurrentHour

CurrentHour returnerar timmen på klockan vid exekveringstillfället, 0 till 23, identisk på varje bar i diagrammet. Använd Hour för att läsa timmen för varje bars stängning.

Syntax

probuilder
CurrentHour

Så fungerar det

CurrentHour läser klockan i det ögonblick koden körs och returnerar timmen i 24-timmarsformat, från 0 till 23. 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 14:20 returnerar 14 på varje historisk bar. Syskonkonstanten per bar är Hour, som returnerar timmen för stängningen av varje bar som behandlas och förändras längs tidsaxeln. Sessionsfilter som tillämpas på historiska data hör till Hour eller TIME; CurrentHour beskriver klockan just nu.

I ett ProOrder-system live är CurrentHour meningsfull, eftersom koden exekveras i realtid när barer kommer in. I ett backtest återspeglar den timmen då testet körs, vilket gör den olämplig för historiska entry- eller exitvillkor.

Exempel

Exempel 1, Middagsflagga (Indikator)

probuilder
// Set the flag when the script executes during the 12 o'clock hour
IF (CurrentHour = 12) THEN
    GoLunch = 1
ELSE
    GoLunch = 0
ENDIF
RETURN GoLunch

Indikatorn ritar 1 över hela diagrammet när den räknas om mellan 12:00:00 och 12:59:59 marknadstid, och 0 vid alla andra tider på dygnet.

Exempel 2, Skanning begränsad till sessionens timmar (ProScreener)

probuilder
// Return matches only while the cash session is open
inSession = (CurrentHour >= 9) AND (CurrentHour < 17)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")

Screenern returnerar en tom lista utanför de valda timmarna, ett sätt att hålla en schemalagd skanning tyst utanför sessionen.

Exempel 3, Avstängning på kvällen (ProOrder)

probuilder
// Stop the strategy before the evening maintenance window
DEFPARAM CumulateOrders = false
IF CurrentHour >= 22 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 22:00 marknadstid och framåt. Backtest kan inte pröva den här grenen på ett meningsfullt sätt, eftersom CurrentHour innehåller timmen för testkörningen på varje bar.

Vanliga fel och fallgropar

  • Samma värde på varje bar. CurrentHour beskriver klockan, inte diagrammet, så ett villkor som CurrentHour = 12 är sant eller falskt för hela beräkningen på en gång. Sessionslogik per bar kräver Hour eller TIME.
  • Blind fläck i backtest. I ett backtest returnerar CurrentHour timmen då testet exekveras, så tidsfilter byggda på den släpper igenom eller blockerar allt och ger resultat som inte stämmer med beteendet live.
  • Marknadens tidszon, inte lokal tid. Timmen utgår från instrumentets marknad. Ett diagram över en notering i New York som visas från Europa returnerar New York-timmar, inte betraktarens lokala timmar.
  • Ingen bracket-offset. CurrentHour[1] kompilerar inte. Endast konstanter per bar som Hour[N] accepterar ett index.
  • Hour, timme för stängningen av varje bar, motsvarigheten per bar till den här konstanten.
  • OpenHour, timmen vid öppningen av varje bar.
  • CurrentMinute, klockans minut vid exekveringstidpunkten.
  • CurrentSecond, klockans sekund vid exekveringstidpunkten.
  • CurrentTime, fullständig klocktid vid exekvering som ett HHMMSS-heltal.
  • CurrentDayOfWeek, klockans veckodag vid exekveringstidpunkten.
  • TIME, stängningstiden för varje bar som ett HHMMSS-heltal.
  • Timestamp, UNIX-tid för stängningen av varje bar.