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

Day

Day returnerar dagen i månaden, 1 till 31, för en bar i diagrammet. Day accepterar en förskjutning i hakparenteser, till exempel Day[1], för att läsa dagen för en tidigare bar.

Syntax

probuilder
Day[N]

Så fungerar det

Day returnerar dagen i månaden för den bar som behandlas, som ett heltal från 1 till 31. Den läser kalenderdatumet som hör till varje bar, så till skillnad från Current-familjen ändras den längs tidsaxeln: efterföljande barer i ett dagsdiagram stegar genom månadens dagar, och värdet nollställs efter den sista dagen i varje månad.

Det valfria indexet N väljer en bar i förhållande till den som behandlas. Day[0], eller enbart Day, är den aktuella baren. Ett positivt N ser bakåt: Day[1] är föregående bar, Day[5] är fem barer tillbaka. Diagrammet måste innehålla tillräckligt med historik för den begärda förskjutningen, annars är värdet odefinierat vid den vänstra kanten.

Day rapporterar bara dagnumret och bär ingen månad eller år. Att jämföra Day värden över en månadsgräns kan vara missvisande, eftersom dag 31 i en månad följs av dag 1 i nästa. För ett fullständigt datum använd Day tillsammans med Month och Year, eller ta till Days och Timestamp när du behöver ett enda monotont värde.

Exempel

Exempel 1, Dag för föregående bar (Indikator)

probuilder
// Retrieve the day of the month from the previous bar
myDay = Day[1]
RETURN myDay

Indikatorn ritar dagsnumret i månaden för baren omedelbart före varje behandlad bar, en stegad linje som klättrar genom månaden och faller vid varje månadsskifte.

Exempel 2, Skanna efter barer i månadens början (ProScreener)

probuilder
// Match instruments whose latest bar falls in the first three days of a month
earlyInMonth = Day <= 3
SCREENER[earlyInMonth AND close > Average[20](close)] (Day AS "Day")

Screenern returnerar endast instrument vars senaste bar ligger i de första dagarna av en kalendermånad, med dagsnumret visat intill.

Exempel 3, Filter för första handelsdagen (ProOrder)

probuilder
// Allow entries only when a new month has just started
DEFPARAM CumulateOrders = false
newMonthStart = Day < Day[1]
IF newMonthStart AND close CROSSES OVER Average[20](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

Villkoret Day < Day[1] är true på den första baren i en ny månad, eftersom dagnumret faller från ett högt värde tillbaka till 1. Strategin använder det som en entrygrind en gång per månad.

Vanliga fel och fallgropar

  • Dag i månaden, inte i veckan. Day returnerar 1 till 31, kalenderdagen. För veckodagen, använd DayOfWeek.
  • Ingen månad eller år. Day innehåller bara dagnumret, så dag 5 i mars och dag 5 i april ser identiska ut. Kombinera med Month och Year för ett fullständigt datum.
  • Månadsgränser. Ett test som Day > Day[1] fungerar inte på månadens första bar eftersom numret nollställs till 1. Hantera övergången explicit när du jämför över flera barer.
  • Offset utanför historiken. Day[N] behöver N barer historik. Nära diagrammets vänstra kant är värdet odefinierat.
  • OpenDay, dag i månaden vid öppningen av varje bar.
  • Month, månad för varje bar, paras med Day för ett fullständigt datum.
  • Year, fyrsiffrigt år för varje bar.
  • DayOfWeek, veckodag för varje bar, 1 för måndag till 7 för söndag.
  • Days, hela dagar som förflutit sedan 1 January 1900 fram till varje bar.
  • TIME, stängningstiden för varje bar som ett HHMMSS-heltal.
  • Timestamp, UNIX-tid för stängningen av varje bar.
  • Yesterday, datumet för dagen före en bar, i formen YYYYMMDD.