CurrentDayOfWeek
CurrentDayOfWeek returnerer ukedagen fra klokken ved kjøringstidspunktet, 0 søndag til 6 lørdag, den samme på hver bar, i motsetning til DayOfWeek-verdien per bar.
Syntaks
CurrentDayOfWeekSlik fungerer det
CurrentDayOfWeek leser klokken i det øyeblikket koden kjører, og returnerer ukedagen som et heltall. ProRealTime™ bruker tidssonen til instrumentets marked som referanse, så verdien kan avvike fra ukedagen på maskinen som viser diagrammet. Konstanten tar ingen parametere og godtar ingen forskyvning i klammeparentes.
Verdien følger plattformens konvensjon med 0 for søndag, 1 for mandag, 2 for tirsdag, og så videre opp til 6 for lørdag.
Fordi tallet kommer fra klokken og ikke fra diagramdata, ser hver bar i en beregning samme verdi. En indikator som beregnes om på en tirsdag returnerer 2 på hver historiske bar i diagrammet. Dette er den definerende forskjellen fra søskenkonstanten DayOfWeek, som returnerer ukedagen for lukket til hver bar som behandles, og derfor endrer seg langs tidsaksen. Betingelser som filtrerer historiske barer etter ukedag, hører sammen med DayOfWeek; CurrentDayOfWeek svarer på hvilken dag det er akkurat nå.
I et live ProOrder-system sammenfaller de to verdiene vanligvis på den siste intraday-baren, siden strategien behandler barer i sanntid. I en backtest avviker de fullstendig: CurrentDayOfWeek gjenspeiler dagen testen kjøres, ikke dagen til noen historisk bar.
Eksempler
Eksempel 1, Flagg en bestemt ukedag (Indikator)
// Set the flag when the script executes on a Wednesday
IF (CurrentDayOfWeek = 3) THEN
Wednesday = 1
ELSE
Wednesday = 0
ENDIF
RETURN WednesdayIndikatoren tegner 1 over hele diagrammet når den beregnes på nytt på en onsdag, og 0 ellers, noe som illustrerer at verdien ikke varierer per bar.
Eksempel 2, Skanning bare på fredager (ProScreener)
// Return matches only when the scan itself runs on a Friday
isFriday = (CurrentDayOfWeek = 5)
SCREENER[isFriday AND close > Average[20](close)] (close AS "Close")Skanneren gir resultater bare når den kjøres på en fredag, uavhengig av datoene til barene den skanner.
Eksempel 3, Helgesperre på et 24/7-marked (ProOrder)
// Stand aside at the weekend on a market that trades every day
DEFPARAM CumulateOrders = false
weekend = (CurrentDayOfWeek = 0) OR (CurrentDayOfWeek = 6)
IF NOT weekend AND close > Average[50](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFLive blokkerer filteret nye innganger på lørdager og søndager. I en backtest filtrerer samme kode ingenting meningsfullt, fordi hver historiske bar ser dagen testen kjøres på; en historisk versjon av dette filteret trenger DayOfWeek.
Vanlige feil og fallgruver
- Konstant over hele diagrammet. Hver bar evalueres til samme tall, ukedagen i utførelsesøyeblikket. Å bruke CurrentDayOfWeek til å filtrere historiske barer slipper i det stille gjennom eller blokkerer hele diagrammet på én gang. Bruk
DayOfWeekfor betingelser per bar. - Nummerering av søndag. Plattformens brukerhåndbok definerer området som 0 for søndag til 6 for lørdag. Noen referanser nummererer uken 1 til 7 med søndag som 7. Mandag til lørdag stemmer i begge systemene; verifiser håndteringen av søndag på et live diagram før du baserer deg på den.
- Backtest-resultater som ikke kan gjenskape live oppførsel. Et ukedagsfilter bygget på CurrentDayOfWeek oppfører seg riktig ved live kjøring, men kan ikke testes historisk, så backtest-statistikk for et slikt system gjenspeiler ikke live-filteret.
- Ingen forskyvning i klammer.
CurrentDayOfWeek[1]er ugyldig. Konstanten har ingen historikk å indeksere i; bare konstantene per bar, somDayOfWeek[N]godtar en forskyvning.
Relaterte instruksjoner
DayOfWeek, ukedag ved slutten av hver bar, søskenverdien per bar til denne konstanten.OpenDayOfWeek, ukedagen ved åpningen av hver bar.CurrentTime, klokketid ved kjøring som et HHMMSS-heltall.CurrentHour, timen på klokken ved utførelsestidspunktet.CurrentMinute, minuttet på klokken ved utførelsestidspunktet.CurrentMonth, måneden på klokken ved utførelsestidspunktet.CurrentYear, året på klokken ved utførelsestidspunktet.Day, dag i måneden ved slutten av hver bar.