Iscriviti ora
Data e ora/probuilder · probacktest · proorder · proscreener

CurrentSecond

CurrentSecond restituisce il secondo dell'orologio al momento dell'esecuzione, da 0 a 59, identico su ogni bar del grafico. Usa Second per leggere il secondo della chiusura di ogni bar.

Sintassi

probuilder
CurrentSecond

Come funziona

CurrentSecond legge l'orologio nel momento in cui il codice viene eseguito e restituisce il secondo all'interno del minuto corrente, da 0 a 59. Il riferimento è il fuso orario del mercato dello strumento, che può differire da quello della macchina locale. La costante non accetta parametri né offset tra parentesi quadre.

Il valore appartiene alla famiglia Current di costanti di data e ora, che descrivono il momento dell'esecuzione anziché un bar del grafico. Ogni bar di un calcolo vede quindi lo stesso numero: un indicatore aggiornato alle 14:20:30 restituisce 30 su ogni bar storico. La costante equivalente per bar è Second, che restituisce il secondo della chiusura di ogni barra elaborata e cambia lungo l'asse temporale. La temporizzazione sotto il minuto sui dati storici va fatta con Second; CurrentSecond descrive l'ora corrente dell'orologio.

In un sistema ProOrder live CurrentSecond è significativo, poiché il codice viene eseguito in tempo reale man mano che arrivano le bar. In un backtest riflette il secondo in cui viene eseguito il test, il che lo rende inadatto a condizioni storiche di ingresso o uscita.

Esempi

Esempio 1, Flag di mezzo minuto (Indicatore)

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

L'indicatore traccia 1 su tutto il grafico quando viene ricalcolato esattamente al secondo 30 del minuto corrente, e 0 altrimenti.

Esempio 2, Scansione nei primi secondi (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")

Lo screener restituisce un elenco vuoto una volta che l'orologio supera il secondo 10, un modo per distribuire le scansioni programmate su una finestra stretta.

Esempio 3, Controllo filtrato per secondo (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

In live, il sistema controlla il segnale solo negli ultimi secondi di ogni minuto. I backtest non possono esercitare questo ramo in modo significativo, perché CurrentSecond contiene su ogni bar il secondo dell'esecuzione del test.

Errori e insidie comuni

  • Stesso valore su ogni bar. CurrentSecond descrive l'orologio, non il grafico, quindi una condizione come CurrentSecond = 30 è vero o falso per l'intero calcolo in una sola volta. La logica temporale bar per bar richiede Second.
  • Punto cieco del backtest. In un backtest CurrentSecond restituisce il secondo in cui viene eseguito il test, quindi i filtri costruiti su di esso passano o bloccano in blocco e producono risultati che non corrispondono al comportamento live.
  • Finestra di corrispondenza stretta. Un test esatto come CurrentSecond = 30 vale solo durante un singolo secondo di orologio, quindi è improbabile che un ricalcolo capiti proprio lì. Intervalli come CurrentSecond < 10 sono più affidabili.
  • Nessun offset tra parentesi. CurrentSecond[1] non compila. Solo costanti per bar come Second[N] accettano un indice.
  • Second, secondo della chiusura di ogni bar, l'equivalente per bar di questa costante.
  • OpenSecond, secondo all'apertura di ogni bar.
  • CurrentMinute, minuto dell'orologio al momento dell'esecuzione.
  • CurrentHour, ora dell'orologio al momento dell'esecuzione.
  • CurrentTime, orario completo dell'orologio all'esecuzione come intero HHMMSS.
  • Minute, minuto della chiusura di ogni bar.
  • TIME, orario di chiusura di ogni bar come intero HHMMSS.
  • Timestamp, tempo UNIX della chiusura di ogni bar.