CopyTicks

Ottiene i tick dalla struttura MqlTick in una matrice o vettore. Gli elementi sono contati dal passato al presente, il che significa che il tick con l'indice 0 è il più vecchio. Per analizzare un tick, controllare il campo flag che mostra cosa esattamente è cambiato nel tick .

bool  matrix::CopyTicks(
   string           symbol,                // nome del simbolo
   ulong            flags,                 // flag che indica il tipo di tick da ricevere
   ulong            from_msc,              // ora dalla quale i tick sono richiesti
   ulong            count                  // numero di tick da ricevere
   );

Metodo Vettoriale

bool  vector::CopyTicks(
   string           symbol,                // nome del simbolo
   ulong            flags,                 // flag che indica il tipo di tick da ricevere
   ulong            from_msc,              // ora dalla quale i tick sono richiesti
   ulong            count                  // numero di tick da ricevere
   );

Parametri

symbol

[in]  Simbolo.

ticks_mask

[in] Una combinazione di flag dall'enumerazione ENUM_COPY_TICKS indicando il contenuto dei dati richiesti. Quando si copia in un vettore, è possibile specificare un solo valore dall'enumerazione ENUM_COPY_TICKS, altrimenti si verificherà un errore.

flags

[in]  Un flag che definisce il tipo di tick richiesto. COPY_TICKS_INFO indica i tick registrati dalle modifiche di Bid e/o Ask, COPY_TICKS_TRADE — tick con le modifiche di Last e Volume, COPY_TICKS_ALL — tutti i tick. Per qualsiasi tipo di richiesta, i valori del tick precedente vengono aggiunti ai restanti campi della struttura MqlTick.

from_msc

[in] Ora d'inizio dalla quale i tick sono richiesti. L'ora è specificata in millisecondi dal 01/01/1970. Se from_msc=0, l'ultimo numero di tick pari a 'count' vengono restituiti.

count

[in] Il numero dei tick richiesti. Se i parametri 'from_msc' e 'count' non sono specificati, tutte i tick disponibili, ma non più di 2000, saranno scritti.

 

Valore Restituito

Restituisce true in caso di successo, o false in caso di errore.

Note

La prima chiamata di CopyTicks() avvia la sincronizzazione del database tick del simbolo corrispondente memorizzato sul disco rigido. Se il database locale non fornisce tutti i tick richiesti, i tick mancanti verranno scaricati automaticamente dal server di trading. I tick specificati da from_msc in CopyTicks() fino al momento corrente saranno sincronizzati. Dopo di che, tutti i tiucke in arrivo per questo simbolo verranno aggiunti al database tick mantenendo così lo stato sincronizzato.

Se i parametri from_msc e count non sono specificati, tutti i tick disponibili, ma non più di 2000, saranno scritti nella matrice/ vettore.

Negli indicatori, il metodo CopyTicks() restituisce immediatamente il risultato: Quando viene chiamato da un indicatore, CopyTick() restituisce immediatamente tutti i tick disponibili di un simbolo e avvia la sincronizzazione del database dei tick se i dati disponibili non sono sufficienti. Tutti gli indicatori sullo stesso simbolo operano in un filo conduttore comune, così l'indicatore può non attendere il completamento della sincronizzazione. Dopo la sincronizzazione, CopyTicks() restituirà tutti i tick richiesti durante la chiamata successiva. Negli indicatori, la funzione OnCalculate() viene chiamata dopo l'arrivo di ogni tick.

Negli Expert Advisors e script, CopyTicks() può attendere il risultato per 45 secondi: diverso dagli indicatori, ogni Expert Advisor o script opera in un thread separato, e quindi può attendere fino a 45 secondi per il completamento della sincronizzazione. Se la quantità richiesta di tick non viene sincronizzata durante questo tempo, CopyTicks() restituirà i tick disponibili al timeout e continuerà la sincronizzazione. >OnTick() negli Expert Advisors non è un gestore di ogni tick, informa solo l'Expert Advisor sui cambiamenti nel mercato. Questo può essere una serie di modifiche: il terminale può ricevere contemporaneamente più tick, mentre OnTick() sarà chiamato solo una volta, per informare l'Expert Advisor circa l'ultimo stato del mercato.

Tasso di ritorno dei dati: il terminale memorizza gli ultimi 4096 tick per ogni strumento nella cache di accesso rapido (65536 tick per i simboli con la Profondità di Mercato in esecuzione). Le richieste riguardanti questi dati sono eseguite più velocemente. Se i ticks richiesti per la sessione di trading corrente sono oltre la cache, CopyTicks() chiama i ticks memorizzati nella memoria del terminale. Queste richieste richiedono più tempo per essere completate. Le richieste più lente sono quelle che richiedono i tick per altri giorni, poiché i dati vengono letti dall'unità in questo caso.

ENUM_COPY_TICKS

L'enumerazione ENUM_COPY_TICKS contiene i flag per specificare il tipo di dati da passare alla matrice o all'array. La combinazione di flag consente di ottenere diverse serie dalla cronologia in una richiesta. L'ordine delle righe nella matrice corrisponderà all'ordine dei valori nell'enumerazione ENUM_COPY_TICKS. In altre parole, la riga con i dati dei Massimi sarà sempre più alta nella matrice rispetto alla riga con i dati dei Minimi.

ID

Valore

Descrizione

COPY_TICKS_INFO

1

Ticks contenenti variazioni di prezzi Bid e/o Ask

COPY_TICKS_TRADE

2

Tick contenenti le variazioni del prezzo di Last e/o Volume

COPY_TICKS_ALL

3

Tutti i ticks

COPY_TICKS_TIME_MS

1<<8

Ora del tick in millisecondi

COPY_TICKS_BID

1<<9

Prezzo del Bid

COPY_TICKS_ASK

1<<10

Prezzo dell'Ask

COPY_TICKS_LAST

1<<11

Ultimo prezzo (prezzo dell'ultimo contratto)

COPY_TICKS_VOLUME

1<<12

Volume dell'ultimo prezzo

COPY_TICKS_FLAGS

1<<13

Flag dei tick

Disposizione dei dati

 

 

COPY_TICKS_VERTICAL

32768

I tick vengono copiati nella matrice lungo l'asse verticale. I tick ricevuti saranno disposti verticalmente nella matrice, cioè, i tick più vecchi saranno nella prima riga, mentre i tick più recenti saranno nell'ultima riga della matrice.

 

Con la copia predefinita, i tick vengono aggiunti in una matrice lungo l'asse orizzontale.

 

Il flag è applicabile solo quando si copia in una matrice.

Analizzare i flag dei tick per scoprire quali dati sono cambiati:

  • TICK_FLAG_BID — il tick ha cambiato il prezzo del bid
  • TICK_FLAG_ASK — il tick ha cambiato il prezzo dell'ask
  • TICK_FLAG_LAST — il tick ha cambiato il prezzo dell'ultima offerta
  • TICK_FLAG_VOLUME — il tick ha cambiato il volume
  • TICK_FLAG_BUY — il tick è il risultato di un contratto d'acquisto
  • TICK_FLAG_SELL — il tick è il risultato di un contratto di vendita

 

Vedi anche

Accesso alle Timeseries e Indicatori, CopyTicks