- Direction d'Indexation dans les Tableaux, Buffers et Séries de Données
- Organisation de l'Accès aux Données
- 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
CopySeries
Retourne les timseries chronologiques de la structure MqlRates pour le symbole et la période spécifiés et pour la quantité demandée. Les données sont reçues dans les tableaux spécifiés. Les éléments sont comptés du présent vers le passé, ce qui signifie que la position de départ égale à 0 signifie la barre actuelle.
Si la quantité de données à copier est inconnue, il est recommandé d'utiliser un tableau dynamique pour les tableaux destination, car si la quantité de données dépasse ce qu'un tableau peut contenir, cela peut entraîner la tentative de redistribution du tableau pour qu'il corresponde à toutes les données demandées.
Si vous avez besoin de copier une quantité prédéterminée de données, il est recommandé d'utiliser un buffer alloué statiquement pour éviter une réallocation de mémoire inutile.
La propriété du tableau destination as_series=true ou as_series=false sera ignorée : lors de la copie, l'élément de la série chronologique le plus ancien sera copié au début de la mémoire physique allouée au tableau.
int CopySeries(
|
Paramètres
symbol_name
[in] Symbole.
timeframe
[in] Période.
start_pos
[in] Indice du premier élément copié.
count
[in] Nombre d'éléments copiés.
rates_mask
[in] une combinaison de flags de l'énumération ENUM_COPY_RATES.
array1, array2,...
[out] Tableaux destination des séries chronologiques d'éléments de type MqlRates. L'ordre des tableaux passés à la fonction doit correspondre à l'ordre des champs de la structure MqlRates.
Valeur de Retour
Le nombre d'éléments copiés ou -1 si une erreur se produit.
Note
Si l'intervalle entier des données demandées est au-delà des données disponibles sur le serveur, la fonction renvoie -1. Si les données demandées dépassent TERMINAL_MAXBARS (le nombre maximum de barres sur le graphique), la fonction renvoie également -1.
Lors de la demande de données à partir d'un indicateur, la fonction renvoie immédiatement -1 si les séries temporelles demandées ne sont pas encore construites ou si elles doivent être téléchargées depuis le serveur. Mais le téléchargement/la construction des données sera lancé.
Lorsque vous demandez des données à un Expert Advisor ou à un script, le téléchargement depuis le serveur est lancé si le terminal ne dispose pas localement des données correspondantes, ou la construction des données nécessaires est lancée 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é de données prêtes à l'expiration du délai d'attente. Mais le téléchargement de l'historique se poursuit et la fonction retourera plus de données lors de la prochaine requête similaire.
Différence entre CopySeries et CopyRates
La fonction CopySeries permet d'obtenir uniquement les séries temporelles nécessaires dans différents tableaux spécifiés au cours d'un appel, et toutes les données des séries temporelles seront synchronisées. Cela signifie que toutes les valeurs des tableaux destination à un certain indice N appartiendront à la même barre sur la paire Symbole/Timeframe spécifiée. Le développeur n'a donc pas besoin d'assurer la synchronisation de toutes les séries temporelles reçues par l'heure d'ouverture de la barre.
Contrairement à CopyRates, qui renvoie l'ensemble complet des séries temporelles sous forme de tableau MqlRates, la fonction CopySeries permet au programmeur d'obtenir uniquement les séries temporelles requises sous forme de tableaux séparés. Cela peut être fait en spécifiant une combinaison d'indicateurs pour sélectionner le type de séries chronologiques. L'ordre des tableaux passés à la fonction doit correspondre à l'ordre des champs dans la structure MqlRates :
struct MqlRates
|
Donc, si vous avez besoin d'obtenir les séries chronologiques des valeurs time, close et real_volume pour les 100 dernières barres du symbole/période actuels, vous devez utiliser l'appel suivant :
datetime time[];
|
Faites bien attention à l'ordre des tableaux "time, close, volume" il doit correspondre à l'ordre des champs dans la stucture MqlRates. L'ordre des valeurs dans rates_mask n'est pas important. Le masque pourrait être le suivant :
COPY_RATES_VOLUME_REAL|COPY_RATES_TIME|COPY_RATES_CLOSE |
Exemple :
//--- paramètres d'entrée
|
Voir aussi