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

DayOfWeek

DayOfWeek returnerar veckodagen för en bar, 1 för måndag till 7 för söndag. DayOfWeek accepterar en förskjutning i hakparenteser, till exempel DayOfWeek[1], för att läsa en tidigare bar.

Syntax

probuilder
DayOfWeek[N]

Så fungerar det

DayOfWeek returnerar veckodagen för den bar som behandlas, som ett heltal från 1 till 7. Måndag är 1, tisdag 2 och så vidare fram till söndag, som är 7. Den läser kalenderdatumet som hör till varje bar, så den ändras längs tidsaxeln: i ett dagsdiagram vandrar värdet 1, 2, 3, 4, 5 genom en handelsvecka och hoppar över de dagar då marknaden är stängd.

Det valfria indexet N väljer en bar i förhållande till den som behandlas. DayOfWeek[0], eller enbart DayOfWeek, är den aktuella baren. Ett positivt N ser bakåt: DayOfWeek[1] är föregående bar. 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.

DayOfWeek är veckodagen per bar. Dess syskon är CurrentDayOfWeek, som läser veckodagen enligt klockan vid exekveringstidpunkten, och OpenDayOfWeek, som läser veckodagen vid öppningen av varje bar. Eftersom de flesta marknader inte handlas varje kalenderdag förekommer helgvärden sällan i ett diagram för ett enskilt instrument.

Exempel

Exempel 1, Måndagsflagga (Indikator)

probuilder
// Flag bars that fall on a Monday
myDay = DayOfWeek[0]
IF myDay = 1 THEN
    isMonday = 1
ELSE
    isMonday = 0
ENDIF
RETURN isMonday

Indikatorn ritar 1 på varje måndagsbar och 0 under resten av veckan, ett snabbt sätt att se var varje handelsvecka börjar.

Exempel 2, Skanna efter fredagsbarer (ProScreener)

probuilder
// Match instruments whose latest bar is a Friday
isFriday = DayOfWeek = 5
SCREENER[isFriday AND close > Average[20](close)] (DayOfWeek AS "Weekday")

Screenern returnerar endast instrument vars senaste bar faller på en fredag, med veckodagsnumret visat som referens.

Exempel 3, Undvik entries på måndagar (ProOrder)

probuilder
// Skip new entries on Mondays, take them on other weekdays
DEFPARAM CumulateOrders = false
notMonday = DayOfWeek <> 1
IF notMonday AND close CROSSES OVER Average[20](close) THEN
    BUY 1 CONTRACT AT MARKET
ENDIF

Strategin avvisar nya entries på måndagsbarer och tar signaler under resten av veckan, ett vanligt filter för system som betraktar veckans första dag som stökig.

Vanliga fel och fallgropar

  • Måndag är 1, söndag är 7. Numreringen går 1 till 7 från måndag. Ett test skrivet som om söndag vore 0 blir fel med ett.
  • Helgbarer är ovanliga. På de flesta instrument är marknaden stängd på helgerna, så värdena 6 och 7 förekommer sällan. Förlita dig inte på att de finns.
  • Per bar, inte klockan. DayOfWeek läser varje bars datum. För veckodagen i det ögonblick koden körs, använd CurrentDayOfWeek.
  • Offset utanför historiken. DayOfWeek[N] behöver N barer historik. Nära diagrammets vänstra kant är värdet odefinierat.
  • CurrentDayOfWeek, klockans veckodag vid exekveringstidpunkten.
  • OpenDayOfWeek, veckodag vid öppningen av varje bar.
  • Day, dag i månaden för varje bar, 1 till 31.
  • Month, månad för varje bar.
  • Year, fyrsiffrigt år för varje bar.
  • 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.
  • Today, datumet för den aktuella baren i formen YYYYMMDD.