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

CurrentSecond

CurrentSecond returnerar sekunden på klockan vid exekveringstillfället, 0 till 59, identisk på varje bar i diagrammet. Använd Second för att läsa sekunden för varje bars stängning.

Syntax

probuilder
CurrentSecond

Så fungerar det

CurrentSecond läser klockan i det ögonblick koden körs och returnerar sekunden inom den aktuella minuten, från 0 till 59. Referensen är tidszonen för instrumentets marknad, som kan skilja sig från den lokala datorn. Konstanten tar inga parametrar och ingen förskjutning i hakparenteser.

Värdet hör till Current-familjen av datum- och tidskonstanter, som beskriver exekveringsögonblicket snarare än någon bar i diagrammet. Varje bar i en beräkning ser därför samma tal: en indikator som uppdateras 14:20:30 returnerar 30 på varje historisk bar. Syskonkonstanten per bar är Second, som returnerar sekunden för stängningen av varje bar som behandlas och förändras längs tidsaxeln. Tidsättning under minutnivå på historiska data hör till Second; CurrentSecond beskriver klockan just nu.

I ett ProOrder-system live är CurrentSecond meningsfull, eftersom koden exekveras i realtid när barer kommer in. I ett backtest återspeglar den sekunden då testet körs, vilket gör den olämplig för historiska entry- eller exitvillkor.

Exempel

Exempel 1, Halvminutsflagga (Indikator)

probuilder
// 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 onHalfMinute

Indikatorn ritar 1 över hela diagrammet när den räknas om exakt vid sekund 30 i den aktuella minuten, och 0 annars.

Exempel 2, Skanning på de tidiga sekunderna (ProScreener)

probuilder
// Return matches only in the first ten seconds of the minute
earlySecond = CurrentSecond < 10
SCREENER[earlySecond AND close > Average[20](close)] (close AS "Close")

Screenern returnerar en tom lista när klockan passerat sekund 10, ett sätt att sprida schemalagda skanningar över ett smalt fönster.

Exempel 3, Sekundstyrd kontroll (ProOrder)

probuilder
// 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
ENDIF

Live kontrollerar systemet bara signalen under de sista sekunderna av varje minut. Backtest kan inte pröva den här grenen på ett meningsfullt sätt, eftersom CurrentSecond innehåller sekunden för testkörningen på varje bar.

Vanliga fel och fallgropar

  • Samma värde på varje bar. CurrentSecond beskriver klockan, inte diagrammet, så ett villkor som CurrentSecond = 30 är sant eller falskt för hela beräkningen på en gång. Tidslogik per bar kräver Second.
  • Blind fläck i backtest. I ett backtest returnerar CurrentSecond sekunden då testet exekveras, så filter byggda på den släpper igenom eller blockerar allt och ger resultat som inte stämmer med beteendet live.
  • Smalt matchningsfönster. Ett exakt test som CurrentSecond = 30 gäller bara under en enda sekund av klocktiden, så en omräkning hamnar sällan precis där. Intervall som CurrentSecond < 10 är mer tillförlitliga.
  • Ingen bracket-offset. CurrentSecond[1] kompilerar inte. Endast konstanter per bar som Second[N] accepterar ett index.
  • Second, sekund för stängningen av varje bar, motsvarigheten per bar till den här konstanten.
  • OpenSecond, sekunden vid öppningen av varje bar.
  • CurrentMinute, klockans minut vid exekveringstidpunkten.
  • CurrentHour, klockans timme vid exekveringstidpunkten.
  • CurrentTime, fullständig klocktid vid exekvering som ett HHMMSS-heltal.
  • Minute, minuten vid stängningen av varje bar.
  • TIME, stängningstiden för varje bar som ett HHMMSS-heltal.
  • Timestamp, UNIX-tid för stängningen av varje bar.