Bli medlem i dag
Dato og tid/probuilder · probacktest · proorder · proscreener

CurrentTime

CurrentTime returnerer klokketiden ved kjøring som et HHMMSS-heltall, identisk på hver bar i diagrammet. Bruk TIME for å lese sluttiden for hver bar.

Syntaks

probuilder
CurrentTime

Slik fungerer det

CurrentTime leser klokken i det øyeblikket koden kjører, og returnerer tiden på døgnet som et sekssifret heltall HHMMSS, der HH er timen, MM minuttet og SS sekundet. Verdien 073000 står for 07:30:00. Referansen er tidssonen til instrumentets marked, som kan avvike fra den lokale maskinen. Konstanten tar ingen parametere og ingen forskyvning i klammeparentes.

Verdien tilhører Current-familien av dato- og tidskonstanter, som beskriver utførelsesøyeblikket og ikke noen bar i diagrammet. Hver bar i en beregning ser derfor samme tall: en indikator som oppdateres 07:30:00 returnerer 073000 på hver historiske bar. Søskenkonstanten per bar er TIME, som returnerer stengetiden for hver bar som behandles og endrer seg langs tidsaksen. Sesjonsfiltre brukt på historiske data hører sammen med TIME; CurrentTime beskriver klokken nå.

Fordi verdien er et pakket heltall, fungerer sammenligninger naturlig: CurrentTime >= 090000 er sann fra 09:00:00 og utover. I et live ProOrder-system er CurrentTime meningsfull, siden koden kjøres i sanntid etter hvert som barer kommer inn. I en backtest gjenspeiler den tidspunktet testen kjøres på, noe som gjør den uegnet til historiske inngangs- eller utgangsbetingelser.

Eksempler

Eksempel 1, Oppvåkningsflagg (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

Indikatoren tegner 1 over hele diagrammet når den beregnes på nytt 07:30:00 markedstid, og 0 ellers.

Eksempel 2, Skanning innenfor handelstimene (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")

Skanneren returnerer en tom liste utenfor det valgte vinduet, og bruker den pakkede HHMMSS-formen for en ryddig områdetest.

Eksempel 3, Avstengning ved dagens slutt (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 stopper systemet seg selv fra 17:30:00 markedstid og utover. Backtester kan ikke prøve ut denne grenen på en meningsfull måte, fordi CurrentTime holder tiden for testkjøringen på hver bar.

Vanlige feil og fallgruver

  • Samme verdi på hver bar. CurrentTime beskriver klokken, ikke diagrammet, så en betingelse som CurrentTime = 073000 er sann eller falsk for hele beregningen på én gang. Sesjonslogikk per bar trenger TIME.
  • Blindsone i backtest. I en backtest returnerer CurrentTime tiden testen kjøres, så tidsfiltre bygget på den slipper gjennom eller blokkerer alt under ett og gir resultater som ikke stemmer med live oppførsel.
  • Eksakt treff er skjørt. CurrentTime = 073000 gjelder bare for ett enkelt sekund. Intervalltester som CurrentTime >= 073000 er mer pålitelige for betingelseslogikk.
  • Ingen forskyvning i klammer. CurrentTime[1] kompilerer ikke. Bare konstanter per bar, som TIME godtar en indeks som TIME[N].
  • TIME, sluttid for hver bar som et HHMMSS-heltall, søskenverdien per bar til denne konstanten.
  • OpenTime, åpningstiden for hver bar som et HHMMSS-heltall.
  • OpenTimestamp, UNIX-tid for åpningen av hver bar.
  • Timestamp, UNIX-tid for stengingen av hver bar.
  • CurrentHour, timen på klokken ved utførelsestidspunktet.
  • CurrentMinute, minuttet på klokken ved utførelsestidspunktet.
  • CurrentSecond, sekundet på klokken ved utførelsestidspunktet.
  • CurrentYear, året på klokken ved utførelsestidspunktet.