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
CurrentTimeSlik 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)
// Set the flag when the script executes at exactly 07:30:00
IF (CurrentTime = 073000) THEN
WakeUp = 1
ELSE
WakeUp = 0
ENDIF
RETURN WakeUpIndikatoren tegner 1 over hele diagrammet når den beregnes på nytt 07:30:00 markedstid, og 0 ellers.
Eksempel 2, Skanning innenfor handelstimene (ProScreener)
// 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)
// 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 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 = 073000er sann eller falsk for hele beregningen på én gang. Sesjonslogikk per bar trengerTIME. - 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 = 073000gjelder bare for ett enkelt sekund. Intervalltester somCurrentTime >= 073000er mer pålitelige for betingelseslogikk. - Ingen forskyvning i klammer.
CurrentTime[1]kompilerer ikke. Bare konstanter per bar, somTIMEgodtar en indeks somTIME[N].
Relaterte instruksjoner
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.