- 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
Accesso alle Timeseries e ad i dati degli Indicatori
Si tratta di funzioni per lavorare con le serie temporali (_* Timeseries) e con gli indicatori. Una timeseries si differenzia dal consueto array di dati, per via del suo ordinamento inverso - elementi delle timeseries sono indicizzati a partire dalla fine di un array fino al suo inizio (a partire dai dati più recenti a quelli più vecchi). Per copiare i valori delle time-series degli indicatori e dei dati, si consiglia di utilizzare solo array dinamici, perché le funzioni di copiatura sono progettate per assegnare la grandezza necessaria degli array che ricevono i valori.
C'è un' importante eccezione a questa regola: se i valori delle timeseries e degli indicatori devono essere copiati spesso, ad esempio ad ogni chiamata di OnTick() negli Expert Advisors o ad ogni chiamata di OnCalculate() negli indicatori, in questo caso sarebbe meglio utilizzare gli array staticamente distribuiti, perché operazioni di allocazione di memoria per gli array dinamici richiedono più tempo, e ciò avrà un effetto durante il testing e l'ottimizzazione.
Quando si utilizzano funzioni che accedono ai valori di timeseries e indicatori, la direzione di indicizzazione dovrebbe essere presa in considerazione. Questo è descritto nella sezione Direzione di indicizzazione negli e nelle timeseries.
L'accesso ai dati dell' indicatore e timeseries è implementato indipendentemente dal fatto se i dati richiesti sono pronti (il cosiddetto accesso asincrono). Questo è estremamente importante per il calcolo dell' indicatore personalizzato, quindi se non vi sono dati, funzioni di tipo Copy...() restituiscono immediatamente un errore. Tuttavia, quando si accede da Expert Advisor e script, diversi tentativi di ricezione dei dati vengono realizzati in una piccola pausa, che è volta a fornire un po' di tempo necessario per scaricare TimeSeries richieste per calcolare i valori degli indicatori.
La sezione Organizzare l' Accesso ai Dati descrive i dettagli di ricezione, archiviazione e richiede i dati sui prezzi nel terminale client MetaTrader 5.
È storicamente accettato che un accesso ai dati dei prezzi in un array viene eseguito a partire dalla fine dei dati. Fisicamente, i nuovi dati vengono sempre scritti alla fine dell'array, ma l'indice della matrice è sempre uguale a zero. L'indice 0 nell'array timeseries denota i dati della barra corrente, cioè la barra che corrisponde all'intervallo di tempo non-finito in questo timeframe.
Un timeframe è il periodo di tempo, durante il quale viene formata una barra di prezzo unico. Ci sono 21 timeframes standard predefiniti.
Funzione |
Azione |
---|---|
Restituisce le informazioni sullo stato dei dati storici |
|
Restituisce il numero di barre dello storico di un simbolo e periodo specificati |
|
Restituisce il numero di dati calcolati in un buffer indicatore, oppure -1 in caso di errore (dati non sono stati ancora calcolati) |
|
Restituisce l'handle per l'indicatore tecnico specificato creato da una serie di parametri di tipo MqlParam |
|
Basato sull' handler specificato, restituisce il numero di parametri di input dell'indicatore, nonché i valori e tipi dei parametri |
|
Rimuove un handle indicatore e rilascia il blocco di calcolo dell'indicatore, se non è usato da nessun altro |
|
Mette in un array i dati di un buffer specificato da un indicatore specificato |
|
Mette in un array i dati storici della struttura Rates per un simbolo e periodo specificati |
|
Ottiene le Timeseries sincronizzate dalla struttura MqlRates per il simbolo-periodo specificato e la quantità specificata. I dati vengono ricevuti nella serie di array indicati |
|
Mette in un array i dati storici dell'orario di apertura della barra per un simbolo e periodo specificati |
|
Mette in un array i dati storici sul prezzo di apertura della barra per un simbolo e periodo specificati |
|
Mette in un array i dati storici sul prezzo massimo della barra per un periodo e simbolo specificati |
|
Mette in un array i dati storici sul prezzo minimo della barra per un simbolo e periodo specificati |
|
Mette in un array i dati storici sul prezzo di chiusura della barra per un simbolo e periodo specificati |
|
Mette in un array i dati storici relativi ai volumi tick per un simbolo e periodo specificati |
|
Mette in un array i dati storici sui volumi trade per un simbolo e periodo specificati |
|
Mette in un array i dati storici sugli spread per un simbolo e periodo specificati |
|
La funzione riceve ticks nel formato MqlTick in ticks_array |
|
La funzione riceve ticks in formato MqlTick nell'intervallo di date specificato in ticks_array |
|
Restituisce il numero di barre di un simbolo e di un periodo corrispondenti, disponibili nello storico |
|
Restituisce l'indice della barra corrispondente al tempo/orario specificato |
|
Restituisce il prezzo Close (di chiusura) della barra (indicato dal parametro 'shift') sul chart corrispondente |
|
Restituisce il prezzo High della barra (indicata dal parametro 'shift') sul chart corrispondente |
|
Restituisce l'indice del valore più alto trovato sul chart corrispondente (spostamento relativo alla barra corrente) |
|
Restituisce il prezzo Low della barra (indicato dal parametro 'shift') sul chart corrispondente |
|
Restituisce l'indice del valore più piccolo trovato sul chart corrispondente (slittamento relativo alla barra corrente) |
|
Restituisce il prezzo Open della barra (indicata dal parametro 'shift') sul chart corrispondente |
|
Restituisce il tempo di apertura della barra (indicato dal parametro 'shift') sul chart corrispondente |
|
Restituisce il volume tick della barra (indicato dal parametro 'shift') sul chart corrispondente |
|
Restituisce il volume reale della barra (indicato dal parametro 'shift') sul chart corrispondente |
|
Restituisce il volume tick della barra (indicato dal parametro 'shift') sul chart corrispondente |
|
Restituisce il valore di spread della barra (indicato dal parametro 'shift') sul chart corrispondente |
Nonostante il fatto che con la funzione ArraySetAsSeries() è possibile impostare negli array l'accesso agli elementi come quelli nelle timeseries, va ricordato che gli elementi dell'array vengono fisicamente memorizzati in un solo e medesimo ordine - solo la direzione di indicizzazione cambia. Per dimostrare questo fatto cerchiamo di fare un esempio:
datetime TimeAsSeries[];
|
Come risultato si otterrà un output come questo:
TimeCurrent = 2009.06.11 14:16:23
|
Come si vede dall' output, così come aumenta l'indice dell'array TimeAsSeries, il valore temporale dell'indice diminuisce, cioè si passa dal presente al passato. Per l'array comune ArrayNotSeries il risultato è diverso - cos come indice cresce, si passa dal passato al presente.
Vedere anche
ArrayIsDynamic, ArrayGetAsSeries, ArraySetAsSeries, ArrayIsSeries