CurrentSecond
CurrentSecond geeft de seconde van de klok op het moment van uitvoering, 0 tot 59, identiek op elke bar van de grafiek. Gebruik Second om de seconde van het slot van elke bar te lezen.
Syntaxis
CurrentSecondHoe het werkt
CurrentSecond leest de klok op het moment dat de code wordt uitgevoerd en geeft de seconde binnen de huidige minuut, van 0 tot 59. 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:30 wordt ververst, geeft 30 op elke historische bar. De tegenhanger per bar is Second, die de seconde van de close van elke verwerkte bar geeft en meebeweegt langs de tijdas. Timing onder de minuut op historische data hoort bij Second; CurrentSecond beschrijft de actuele kloktijd.
In een live ProOrder-systeem is CurrentSecond zinvol, omdat de code in realtime wordt uitgevoerd terwijl bars binnenkomen. In een backtest weerspiegelt het de seconde waarop de test wordt uitgevoerd, wat het ongeschikt maakt voor historische instap- of uitstapvoorwaarden.
Voorbeelden
Voorbeeld 1, Halve-minuutmarkering (Indicator)
// Set the flag when the script executes at 30 seconds past the minute
mySecond = CurrentSecond
IF mySecond = 30 THEN
onHalfMinute = 1
ELSE
onHalfMinute = 0
ENDIF
RETURN onHalfMinuteDe indicator plot 1 over de hele grafiek wanneer hij precies op seconde 30 van de huidige minuut wordt herberekend, en anders 0.
Voorbeeld 2, Scan in de eerste seconden (ProScreener)
// Return matches only in the first ten seconds of the minute
earlySecond = CurrentSecond < 10
SCREENER[earlySecond AND close > Average[20](close)] (close AS "Close")De screener geeft een lege lijst terug zodra de klok seconde 10 voorbij is, een manier om geplande scans over een smal venster te spreiden.
Voorbeeld 3, Controle met secondefilter (ProOrder)
// Only evaluate entries during the last seconds of a minute
DEFPARAM CumulateOrders = false
lateSecond = CurrentSecond >= 55
IF lateSecond AND close CROSSES OVER Average[20](close) THEN
BUY 1 CONTRACT AT MARKET
ENDIFLive controleert het systeem het signaal alleen in de laatste seconden van elke minuut. Backtests kunnen deze tak niet zinvol doorlopen, omdat CurrentSecond op elke bar de seconde van de testrun bevat.
Veelvoorkomende fouten en valkuilen
- Dezelfde waarde op elke bar. CurrentSecond beschrijft de klok, niet de grafiek, dus een conditie zoals
CurrentSecond = 30is waar of onwaar voor de hele berekening in één keer. Timinglogica per bar vereistSecond. - Blinde vlek in de backtest. In een backtest geeft CurrentSecond de seconde waarop de test wordt uitgevoerd, dus filters die erop zijn gebouwd laten alles door of blokkeren alles en leveren resultaten op die niet overeenkomen met live gedrag.
- Smal matchvenster. Een exacte test zoals
CurrentSecond = 30geldt slechts tijdens één seconde kloktijd, dus een herberekening valt daar zelden precies op. Bereiken zoalsCurrentSecond < 10zijn betrouwbaarder. - Geen offset tussen haakjes.
CurrentSecond[1]compileert niet. Alleen constanten per bar zoalsSecond[N]accepteren een index.
Gerelateerde instructies
Second, seconde van het slot van elke bar, de variant per bar van deze constante.OpenSecond, seconde bij de open van elke bar.CurrentMinute, minuut van de klok op het moment van uitvoering.CurrentHour, uur van de klok op het moment van uitvoering.CurrentTime, volledige kloktijd bij uitvoering als geheel getal in HHMMSS.Minute, minuut van de close van elke bar.TIME, sluitingstijd van elke bar als geheel getal in HHMMSS.Timestamp, UNIX-tijd van de close van elke bar.