CopyRates
Récupère la série historique de la structure MqlRates pour le symbole et la période spécifiés, avec le nombre spécifié d'éléments dans une matrice ou un vecteur. Les éléments sont décomptés du présent au passé, ce qui signifie que la position de départ égale à 0 signifie la barre actuelle.
Les données sont copiées de manière à ce que l'élément le plus ancien soit placé au début de la matrice/du vecteur. La fonction existe sous 3 formes.
Accès par la position initiale et le nombre d'éléments requis
bool matrix::CopyRates(
|
Accès par la date de début et le nombre d'éléments requis
bool matrix::CopyRates(
|
Accès par les dates de début et de fin de l'intervalle de temps désiré
bool matrix::CopyRates(
|
Méthodes vectorielles
Accès par la position initiale et le nombre d'éléments requis
bool vector::CopyRates(
|
Accès par la date de début et le nombre d'éléments requis
bool vector::CopyRates(
|
Accès par les dates de début et de fin de l'intervalle de temps désiré
bool vector::CopyRates(
|
Paramètres
symbol
[in] Symbole.
period
[in] Période.
rates_mask
[in] La combinaison d'indicateurs d'énumération ENUM_COPY_RATES spécifiant le type de série demandée. Lors de la copie vers un vecteur, une seule valeur de l'énumération ENUM_COPY_RATES peut être spécifiée, sinon une erreur se produit.
start
[in] Indice du premier élément à copier.
count
[in] Nombre d'éléments à copier.
from
[in] Barre du temps correspondant au premier élément.
to
[in] Barre du temps correspondant au dernier élément.
Valeur de Retour
Renvoie true en cas de succès, sinon false en cas d'erreur.
Note
Si l'intervalle des données demandées est complètement en dehors des données disponibles sur le serveur, alors la fonction renvoie false. Si les données en dehors de TERMINAL_MAXBARS (nombre maximum de barres sur le graphique) sont demandées, la fonction renvoie également false.
Lors de la demande de données à partir d'un EA ou d'un script, le téléchargement depuis le serveur est lancé si le terminal ne dispose pas des données appropriées localement, ou la construction des séries temporelles nécessaires commence si les données peuvent être construites à partir de l'historique local mais qu'elles ne sont pas encore prêtes. La fonction renvoie la quantité qui sera prête à l'expiration du délai d'attente. Mais le téléchargement de l'historique se poursuit et la fonction renverra plus de données au prochain appel.
Lors de la demande de données par la date de début et par le nombre d'éléments requis, seules les données dont la date est inférieure (avant) ou égale à celle spécifiée sont renvoyées. L'intervalle est défini et considéré jusqu'à une seconde. En d'autres termes, la date d'ouverture de toute barre pour laquelle la valeur est renvoyée (volume, écart, ouverture, haut, bas, clôture ou heure) est toujours égale ou inférieure à celle spécifiée.
Lors de la demande de données dans une plage de dates donnée, seules les données comprises dans l'intervalle demandé sont renvoyées. L'intervalle est défini et considéré jusqu'à une seconde. En d'autres termes, l'heure d'ouverture de toute barre pour laquelle la valeur est renvoyée (volume, spread, valeur du buffer de l'indicateur, ouverture, haut, bas, clôture ou temps) est toujours située dans l'intervalle demandé.
Par exemple, si le jour actuel de la semaine est le samedi, la fonction renvoie 0 lorsqu'elle tente de copier des données sur la période hebdomadaire en définissant start_time=Last_Tuesday et stop_time=Last_Friday car l'heure d'ouverture sur la période hebdomadaire tombe toujours le dimanche, mais pas une seule barre hebdomadaire ne se situe dans la plage spécifiée.
Si vous avez besoin d'obtenir la valeur correspondant à la barre incomplète actuelle, vous pouvez utiliser le premier formulaire d'appel indiquant start_pos=0 et count=1.
L'énumération ENUM_COPY_RATES contient les indicateurs permettant de spécifier le type de données à transmettre à la matrice ou au tableau. Le paramètre de combinaison de flags permet d'obtenir plusieurs séries de l'historique en une seule requête. L'ordre des lignes dans la matrice correspondra à l'ordre des valeurs dans l'énumération ENUM_COPY_RATES. En d'autres termes, la ligne avec des données Plus Haut sera toujours plus élevée dans la matrice que la ligne avec les données Plus Bas.
ID |
Valeur |
Description |
---|---|---|
COPY_RATES_OPEN |
1 |
Série des prix d'ouverture |
COPY_RATES_HIGH |
2 |
Série des prix Plus Haut |
COPY_RATES_LOW |
4 |
Série des prix Plus Bas |
COPY_RATES_CLOSE |
8 |
Série des prix de clôture |
COPY_RATES_TIME |
16 |
Séries des dates et heures (heure d'ouverture des barres)
Récupérer les dates et heures dans un vecteur ou une matrice d'éléments de type float (vectord et matrixf) entraîne des pertes d'environ 100 secondes puisque la précision du type float est limitée et les nombres entiers supérieurs à 1<<24 ne peuvent pas être représentés avec précision en float. |
COPY_RATES_VOLUME_TICK |
32 |
Volumes des Ticks |
COPY_RATES_VOLUME_REAL |
64 |
Volumes des Trades |
COPY_RATES_SPREAD |
128 |
Spreads |
Combinaison |
|
|
COPY_RATES_OHLC |
15 |
Séries OHLC (Ouverture, Plus Haut, Plus Bas et Clôture) |
COPY_RATES_OHLCT |
31 |
Séries OHLC (Ouverture, Plus Haut, Plus Bas et Clôture) + Temps |
Organisation des données |
|
|
COPY_RATES_VERTICAL |
32768 |
Les séries sont copiées dans la matrice le long de l'axe vertical. Les valeurs des séries reçues seront disposées verticalement dans la matrice, c'est-à-dire que les données les plus anciennes seront dans la première ligne, et les données les plus récentes seront dans la dernière ligne de la matrice.
Avec la copie par défaut, les séries sont ajoutées dans une matrice le long de l'axe horizontal.
L'indicateur n'est applicable que lors de la copie vers une matrice. |
Exemple :
//+------------------------------------------------------------------+
|
Voir aussi