CurrentHour
CurrentHour geeft het uur van de klok op het moment van uitvoering, 0 tot 23, identiek op elke bar van de grafiek. Gebruik Hour om het uur van het slot van elke bar te lezen.
Syntaxis
CurrentHourHoe het werkt
CurrentHour leest de klok op het moment dat de code wordt uitgevoerd en geeft het uur in 24-uursnotatie, van 0 tot 23. De referentie is de tijdzone van de markt van het instrument, die kan afwijken van de lokale machine. De constante neemt geen parameters en geen offset tussen rechte haken.
De waarde hoort tot de Current-familie van datum- en tijdconstanten, die het moment van uitvoering beschrijven en niet een bar op de grafiek. Elke bar van een berekening ziet daarom hetzelfde getal: een indicator die om 14:20 wordt ververst, geeft 14 op elke historische bar. De tegenhanger per bar is Hour, die het uur van de close van elke verwerkte bar geeft en meebeweegt langs de tijdas. Sessiefilters toegepast op historische data horen bij Hour of TIME; CurrentHour beschrijft de actuele kloktijd.
In een live ProOrder-systeem is CurrentHour zinvol, omdat de code in realtime wordt uitgevoerd terwijl bars binnenkomen. In een backtest weerspiegelt het het uur waarop de test wordt uitgevoerd, wat het ongeschikt maakt voor historische instap- of uitstapvoorwaarden.
Voorbeelden
Voorbeeld 1, Middagmarkering (Indicator)
// Set the flag when the script executes during the 12 o'clock hour
IF (CurrentHour = 12) THEN
GoLunch = 1
ELSE
GoLunch = 0
ENDIF
RETURN GoLunchDe indicator plot 1 over de hele grafiek wanneer hij wordt herberekend tussen 12:00:00 en 12:59:59 markttijd, en 0 op elk ander moment van de dag.
Voorbeeld 2, Scan beperkt tot de sessie-uren (ProScreener)
// Return matches only while the cash session is open
inSession = (CurrentHour >= 9) AND (CurrentHour < 17)
SCREENER[inSession AND close > Average[20](close)] (close AS "Close")De screener geeft buiten de gekozen uren een lege lijst terug, een manier om een geplande scan buiten de sessie stil te houden.
Voorbeeld 3, Stilleggen in de avond (ProOrder)
// Stop the strategy before the evening maintenance window
DEFPARAM CumulateOrders = false
IF CurrentHour >= 22 THEN
QUIT
ENDIF
IF close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFLive legt het systeem zichzelf stil vanaf 22:00 markttijd. Backtests kunnen deze tak niet zinvol doorlopen, omdat CurrentHour op elke bar het uur van de testrun bevat.
Veelvoorkomende fouten en valkuilen
- Dezelfde waarde op elke bar. CurrentHour beschrijft de klok, niet de grafiek, dus een voorwaarde zoals
CurrentHour = 12is waar of onwaar voor de hele berekening in één keer. Sessielogica per bar vereistHourofTIME. - Blinde vlek in de backtest. In een backtest geeft CurrentHour het uur waarop de test wordt uitgevoerd, dus tijdfilters die erop zijn gebouwd laten alles door of blokkeren alles en leveren resultaten op die niet overeenkomen met live gedrag.
- Tijdzone van de markt, niet de lokale tijd. Het uur is gerefereerd aan de markt van het instrument. Een grafiek van een notering in New York die vanuit Europa wordt bekeken geeft New Yorkse uren, niet de lokale uren van de kijker.
- Geen offset tussen haakjes.
CurrentHour[1]compileert niet. Alleen constanten per bar zoalsHour[N]accepteren een index.
Gerelateerde instructies
Hour, uur van het slot van elke bar, de variant per bar van deze constante.OpenHour, uur bij de open van elke bar.CurrentMinute, minuut van de klok op het moment van uitvoering.CurrentSecond, seconde van de klok op het moment van uitvoering.CurrentTime, volledige kloktijd bij uitvoering als geheel getal in HHMMSS.CurrentDayOfWeek, weekdag van de klok op het moment van uitvoering.TIME, sluitingstijd van elke bar als geheel getal in HHMMSS.Timestamp, UNIX-tijd van de close van elke bar.