CurrentDayOfWeek
CurrentDayOfWeek returnerar veckodagen från klockan vid exekveringstillfället, 0 söndag till 6 lördag, samma på varje bar, till skillnad från DayOfWeek-värdet per bar.
Syntax
CurrentDayOfWeekSå fungerar det
CurrentDayOfWeek läser klockan i det ögonblick koden exekveras och returnerar veckodagen som ett heltal. ProRealTime™ använder tidszonen för instrumentets marknad som referens, så värdet kan skilja sig från veckodagen på den dator som visar diagrammet. Konstanten tar inga parametrar och accepterar ingen förskjutning i hakparenteser.
Värdet följer plattformens konvention med 0 för söndag, 1 för måndag, 2 för tisdag och så vidare upp till 6 för lördag.
Eftersom talet kommer från klockan snarare än från diagramdata ser varje bar i en beräkning samma värde. En indikator som räknas om på en tisdag returnerar 2 på varje historisk bar i diagrammet. Det är den definierande skillnaden mot syskonkonstanten DayOfWeek, som returnerar veckodagen för stängningen av varje bar som behandlas och därför ändras längs tidsaxeln. Villkor som filtrerar historiska barer efter veckodag hör till DayOfWeek; CurrentDayOfWeek svarar på frågan vilken dag det är just nu.
I ett ProOrder-system live sammanfaller de två värdena vanligtvis på den senaste intraday-baren, eftersom strategin behandlar barer i realtid. I ett backtest skiljer de sig helt: CurrentDayOfWeek återspeglar dagen då testet körs, inte dagen för någon historisk bar.
Exempel
Exempel 1, Flagga en specifik veckodag (Indikator)
// Set the flag when the script executes on a Wednesday
IF (CurrentDayOfWeek = 3) THEN
Wednesday = 1
ELSE
Wednesday = 0
ENDIF
RETURN WednesdayIndikatorn ritar 1 över hela diagrammet när den räknas om på en onsdag, och 0 annars, vilket visar att värdet inte varierar per bar.
Exempel 2, Skanning endast på fredagar (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")Screenern ger resultat endast när den körs på en fredag, oavsett datumen på de barer den skannar.
Exempel 3, Helgspärr på en 24/7-marknad (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 blockerar filtret nya entryer på lördagar och söndagar. I en backtest filtrerar samma kod inget meningsfullt, eftersom varje historisk bar ser den dag testet körs; en historisk version av det här filtret behöver DayOfWeek.
Vanliga fel och fallgropar
- Konstant över hela diagrammet. Varje bar utvärderas till samma tal, veckodagen för exekveringsögonblicket. Att använda CurrentDayOfWeek för att filtrera historiska barer släpper igenom eller blockerar hela diagrammet på en gång, utan varning. Använd
DayOfWeekför villkor per bar. - Numrering av söndag. Plattformens manual definierar intervallet som 0 för söndag till 6 för lördag. Vissa referenser numrerar veckan 1 till 7 med söndag som 7. Måndag till lördag stämmer i båda systemen; verifiera hanteringen av söndag i ett diagram live innan du förlitar dig på den.
- Backtest-resultat som inte kan återskapa beteendet live. Ett veckodagsfilter byggt på CurrentDayOfWeek fungerar korrekt i exekvering live men går inte att testa historiskt, så backtest-statistik för ett sådant system återspeglar inte filtret live.
- Ingen bracket-offset.
CurrentDayOfWeek[1]är ogiltigt. Konstanten har ingen historik att indexera i; bara de barvisa konstanterna somDayOfWeek[N]accepterar en offset.
Relaterade instruktioner
DayOfWeek, veckodag för stängningen av varje bar, motsvarigheten per bar till den här konstanten.OpenDayOfWeek, veckodag vid öppningen av varje bar.CurrentTime, klocktid vid exekvering som ett HHMMSS-heltal.CurrentHour, klockans timme vid exekveringstidpunkten.CurrentMinute, klockans minut vid exekveringstidpunkten.CurrentMonth, klockans månad vid exekveringstidpunkten.CurrentYear, klockans år vid exekveringstidpunkten.Day, dag i månaden vid stängningen av varje bar.