- Direzione di Indicizzazione negli Array, Buffers e TimeSeries
- Organizzazione di Accesso ai Dati
- SeriesInfoInteger
- Bars
- BarsCalculated
- IndicatorCreate
- IndicatorParameters
- IndicatorRelease
- CopyBuffer
- CopyRates
- CopySeries
- CopyTime
- CopyOpen
- CopyHigh
- CopyLow
- CopyClose
- CopyTickVolume
- CopyRealVolume
- CopySpread
- CopyTicks
- CopyTicksRange
- iBars
- iBarShift
- iClose
- iHigh
- iHighest
- iLow
- iLowest
- iOpen
- iTime
- iTickVolume
- iRealVolume
- iVolume
- iSpread
CopyTicks
La funzione riceve ticks nel formato MqlTick in ticks_array. In questo caso, i ticks sono indicizzati dal passato al presente, cioè il tick indicizzato 0 (zero) è il più vecchio nell'array. Per l'analisi del tick, controllare il campo flags, che mostra esattamente cosa è cambiato nel tick.
int CopyTicks(
|
Parametri
symbol_name
[in] Simbolo.
ticks_array
[out] Un array di tipo MqlTick per ricevere ticks.
flags
[in] Un flag per definire il tipo di ticks richiesti. COPY_TICKS_INFO – ticks con cambiamenti Bid e/o Ask , COPY_TICKS_TRADE – ticks con cambiamenti in Last e Volume, COPY_TICKS_ALL – all ticks. Per qualsiasi tipo di richiesta, i valori dei tick precedenti vengono aggiunti ai campi rimanenti della struttura MqlTick.
from
[in] La data dal quale vuoi ricchiedere ticks. In millisecondi da 1970.01.01. If from=0, l'ultimo count ticks verrà restituito.
count
[in] Il numero di ticks richiesti. Se i parametri 'from' e 'count' non sono specificati, tutti i ticks disponibili più recenti (ma non più di 2000) verranno scritti in per ticks_array [].
Valore restituito
Il numero di tick copiati o -1 in caso di errore.
Ulteriore nota
La funzione CopyTicks() permette di richiedere ed analizzare tutti i ticks ricevuti. La prima chiamata di CopyTicks() avvia la sincronizzazione del database del simbolo del tick memorizzato sul disco rigido. Se il database locale non fornisce tutti i ticks richiesti, allora i ticks mancanti verranno scaricati automaticamente dal trade server. Ticks che cominciano dalla data from specificata in CopyTicks() fino al momento corrente, verranno sincronizzati. Dopo di che, saranno aggiunti tutti i ticks in arrivo per questo simbolo al database dei ticks in modo da mantenerli nello stato sincronizzato.
Se i parametri from e count non sono stati specificati, tutti i ticks disponibili (ma non più di 2000) verranno scritti nel ticks_array[]. Il parametro flags permette di specificre il tipo di ticks richiesti.
COPY_TICKS_INFO – vengono restituiti ticks con cambiamento di prezzo Bid e/o Ask . Saranno inoltre aggiunti i dati di altri campi. Ad esempio, se solo Bid è cambiato, i campi ask e volume saranno riempiti con ultimi valori noti. Per sapere esattamente che cosa è cambiato, analizzare il campo flag, che avrà il valore di TICK_FLAG_BID e/o TICK_FLAG_ASK. Se un tick ha valore zero dei prezzi Bid ed Ask, e le flags mostrano che questi dati sono cambiati (flags= TICK_FLAG_BID | TICK_FLAG_ASK), ciò significa che il libro degli ordini (Market Depth - Profondità Mercato) è vuoto. In altre parole, non ci sono ordini d' acquisto(buy) e vendite(sell).
COPY_TICKS_TRADE – vengono restituiti ticks con i cambiamenti di prezzo Last e Volume. Saranno inoltre aggiunti i dati di altri campi, vale a dire gli ultimi noti valori di Bid ed Ask che saranno specificati nei campi appropriati. Per sapere esattamente che cosa è cambiato, analizzare il campo field, che avrà il valore TICK_FLAG_LAST e TICK_FLAG_VOLUME.
COPY_TICKS_ALL – vengono restituiti tutti i ticks con qualsiasi cambiamento. I cambi non cambiati verranno riempiti con gli ultimi valori noti.
La chiamata di CopyTicks() con il flag COPY_TICKS_ALL ritorna immediatamente tutti i ticks dall' intervallo della richiesta, mentre le chiamate in altre modalità richiedono un certo tempo per elaborare e selezionare i ticks, quindi non forniscono un significativo vantaggio di velocità.
Quando si richiedono i ticks (sia con COPY_TICKS_INFO che COPY_TICKS_TRADE), ogni ticke conterrà le piene informazioni di prezzo così come l'orario del tick (bid, ask, last e volume). Questa funzione viene fornita per facilitare l'analisi dello stato di trade al momento di ogni tick, quindi non è necessario richiedere una storia tick profonda e cercare i valori di altri campi.
Negli indicatori, la funzione CopyTicks() restituisce il risultato: quando viene chiamata da un indicatore, CopyTick() restituisce immediatamente tutti i tick disponibili di un simbolo, e lancerà la sincronizzazione del database ticks, se i dati disponibili non sono sufficienti. Tutti gli indicatori in un simbolo operano in un thread comune, in modo che l'indicatore non attenda il completamento della sincronizzazione. Dopo la sincronizzazione, CopyTicks() restituirà tutti i ticks richiesti durante la chiamata successiva. Negli indicatori, la funzione OnCalculate() è chiamata dopo l'arrivo di ogni tick.
CopyTicks() può attendere il risultato per 45 secondi in Expert Advisors e scripts: a differenza degli indicatori, ogni Expert Advisor e script operano in un thread separato, e quindi possono aspettare 45 secondi fino al completamento della sincronizzazione. Se la quantità necessaria di ticks non riesce ad essere sincronizzata durante questo tempo, CopyTicks() restituirà i ticks disponibili per timeout e continuerà la sincronizzazione. OnTick() in Expert Advisor non è un handler per ogni tick, essa solo notifica ad un Expert Advisor i cambiamenti nel mercato. Può essere una serie di cambiamenti: il terminale può contemporaneamente creare alcuni ticks, ma onTick() sarà chiamato solo una volta a notificare all' EA dello stato attuale del mercato.
Il tasso di restituzione dei dati: il terminale conserva nella cache l'accesso veloce a 4096 ultimi ticks per ogni strumento (65536 ticks per simboli con corrente Market Depth). 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 l'esecuzione. Le richieste più lente sono quelle che richiedono i ticks per altri giorni, dal momento che i dati vengono letti dal disco in questo caso.
Esempio:
#property copyright "Copyright 2000-2024, MetaQuotes Ltd."
|
Guarda anche