CopyRates
Ottiene la serie storica della struttura MqlRates del periodo-simbolo specificato nella quantità specificata in una matrice o un vettore. Gli elementi sono contati dal presente al passato, il che significa che la posizione di partenza uguale a 0 significa la barra corrente.
I dati vengono copiati in modo che l'elemento più vecchio sia posto all'inizio della matrice/vettore. Ci sono tre opzioni di funzione.
Accesso tramite posizione iniziale e numero di elementi richiesti
bool matrix::CopyRates(
|
Accesso tramite data iniziale e numero di elementi richiesti
bool matrix::CopyRates(
|
Accesso tramite data iniziale e finale dell'intervallo di tempo richiesto
bool matrix::CopyRates(
|
Metodi vettoriali
Accesso tramite posizione iniziale e numero di elementi richiesti
bool vector::CopyRates(
|
Accesso tramite data iniziale e numero di elementi richiesti
bool vector::CopyRates(
|
Accesso tramite data iniziale e finale dell'intervallo di tempo richiesto
bool vector::CopyRates(
|
Parametri
symbol
[in] Simbolo.
period
[in] Periodo.
rates_mask
[in] L'enumerazione ENUM_COPY_RATES combinazione di flag specificando il tipo di serie richieste. Quando si copia un vettore, può essere specificato un solo valore dall'enumerazione ENUM_COPY_RATES, altrimenti si verifica un errore.
start
[in] Indice del primo elemento copiato.
count
[in] Numero degli elementi copiati.
from
[in] Ora della barra corrispondente al primo elemento.
to
[in] Ora della barra corrispondente all'ultimo elemento.
Valore Restituito
Restituisce true in caso di successo, altrimenti false in caso di errore.
Note
Se l'intervallo dei dati richiesti è completamente fuori dai dati disponibili sul server, la funzione restituisce false. Se i dati al di fuori TERMINAL_MAXBARS (numero massimo di barre sul grafico) vengono richiesti, la funzione restituisce ugualmente false.
Quando si richiedono dati da un'EA o da uno script, viene avviato il download dal server se il terminale non dispone dei dati appropriati localmente, o la costruzione delle Timeseries necessarie inizia se i dati possono essere costruiti dalla cronologia locale, ma non sono ancora pronti. La funzione restituisce la quantità che sarà pronta entro la scadenza del timeout, tuttavia il download della cronologia continua e la funzione restituisce più dati durante la successiva richiesta simile.
Quando si richiedono dati tramite data d'inizio e numero di elementi richiesti, vengono restituiti solo dati la cui data è inferiore a (prima) o uguale a quella specificata. L'intervallo è impostato e considerato fino a un secondo. In altre parole, la data di apertura di qualsiasi barra per cui viene restituito il valore (volume, spread, Apertura, Massimo, Minimo, Chiusura o Tempo) è sempre uguale o inferiore a quella specificata.
Quando si richiedono dati in un determinato intervallo di date, vengono restituiti solo i dati che rientrano nell'intervallo richiesto. L'intervallo è impostato e considerato fino a un secondo. In altre parole, il tempo di apertura di qualsiasi barra per cui viene restituito il valore (volume, spread, valore del buffer dell'indicatore, Apertura, Massimo, Minimo, Chiusura o Tempo) si trova sempre nell'intervallo richiesto.
Ad esempio, se il giorno corrente della settimana è Sabato, la funzione restituisce 0 quando si tenta di copiare i dati sull'intervallo di tempo settimanale impostando start_time=Last_Tuesday e stop_time=Last_Friday perché l'orario di apertura settimanale cade sempre di domenica, ma nessuna singola barra settimanale rientra nell'intervallo specificato.
Se è necessario ottenere il valore corrispondente della barra incompleta corrente, è possibile utilizzare il primo modulo di chiamata che indica start_pos=0 e count=1.
L'enumerazione ENUM_COPY_RATES 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_RATES. 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_RATES_OPEN |
1 |
Serie dei prezzi d'Apertura |
COPY_RATES_HIGH |
2 |
Serie dei prezzi Massimi |
COPY_RATES_LOW |
4 |
Serie dei prezzi Minimi |
COPY_RATES_CLOSE |
8 |
Serie dei prezzi di Chiusura |
COPY_RATES_TIME |
16 |
Serie Temporali (ora di apertura della barra)
Mettere il tempo nel vettore e nella matrice float (vectord e matrixf) causa perdite di ~100 secondi dato che la precisione di float la precisione è decisamente limitata e i numeri interi maggiori di 1<<24 non possono essere rappresentati esattamente in float. |
COPY_RATES_VOLUME_TICK |
32 |
Tick Volume |
COPY_RATES_VOLUME_REAL |
64 |
Volumi degli scambi |
COPY_RATES_SPREAD |
128 |
Spread |
Combinazione |
|
|
COPY_RATES_OHLC |
15 |
Serie Apertura, Massimo, Minimo e Chiusura |
COPY_RATES_OHLCT |
31 |
Serie Apertura, Massimo, Minimo, Chiusura e Ora |
Disposizione dei dati |
|
|
COPY_RATES_VERTICAL |
32768 |
Le serie vengono copiate nella matrice lungo l'asse verticale. I valori delle serie ricevute saranno disposti verticalmente nella matrice, cioè i dati più vecchi saranno nella prima riga, mentre i dati più recenti saranno nell'ultima riga della matrice.
Con la copia predefinita, le serie vengono aggiunte in una matrice lungo l'asse orizzontale.
Il flag è applicabile solo quando si copia in una matrice. |
Esempio:
//+------------------------------------------------------------------+
|
Vedi anche