- 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
Accès aux Timeseries et aux Données d'un Indicateur
Ce sont les fonctions permettant d'utiliser les timeseries et les indicateurs. Une série chronologique, ou timeserie, diffère des données habituelles par son ordre inverse - les éléments des timeseries sont indexés de la fin du tableau vers son début (des données les plus récentes aux plus anciennes). Pour copier les valeurs des séries chronologiques et les données d'un indicateur, il est recommandé de n'utiliser que des tableaux dynamiques, car les fonctions de copie sont conçues pour n'allouer que la taille nécessaire aux tableaux pour recevoir les valeurs.
Il existe une exception importante à cette règle : si les timeseries et les valeurs de l'indicateur doit être copiées souvent, par exemple à chaque appel à OnTick() dans les Expert Advisors ou à chaque appel de OnCalculate() dans les indicateurs, il est préférable dans ce cas d'utiliser des tableaux distribués de façon statique, car les opérations d'allocation mémoire pour les tableaux dynamiques nécessite davantage de temps, et ceci aura un effet pendant le test et l'optimisation.
La direction de l'indexation doit être prise en compte lors de l'utilisation de fonctions accédant aux timeseries et aux valeurs de l'indicateur. Tout est décrit dans la section Direction d'Indexation dans les Tableaux, les Buffers et les Timeseries.
L'accès aux données d'un indicateur et aux timeseries est implémenté que les données demandées soient prêtes ou pas (c'est le fameux accès asynchrone). Ceci est d'une grande importance pour le calcul d'un indicateur personnalisé, donc, s'il n'y a pas de données, les fonctions de type Copy...() retournent immédiatement une erreur. Cependant, lors de l'accès depuis des Expert Advisors et des scripts, plusieurs tentatives pour obtenir les données sont effectuées dans un court laps de temps, prévu pour donner le temps nécessaire pour télécharger les timeseries demandées ou pour calculer les valeurs de l'indicateur.
La section Organiser l'Accès aux Données décrit le détails pour récupérer, stocker et demander les données dans le terminal client MetaTrader 5.
Il est historiquement accepté que l'accès aux données de prix dans un tableau est effectué depuis la fin des données. Physiquement, les nouvelles données sont toujours écrites à la fin du tableau, mais l'indice du tableau est toujours égal à 0. L'indice 0 dans une timeserie correspond aux données de la barre courante, c'est à dire la barre qui correspond à l'intervalle de temps non encore fini pour la période en cours.
Une période est la période de temps pendant laquelle une seule barre de prix est formée. Il y a 21 périodes standards prédéfinies.
Fonction |
Action |
---|---|
Retourne l'état des données historiques |
|
Retourne le nombre de barres dans l'historique pour le symbole et la période spécifiés |
|
Retourne le nombre de données calculées dans un buffer d'indicateur ou -1 en cas d'erreur (les données n'ont pas encore été calculées. |
|
Retourne le handle sur l'indicateur technique spécifié créé avec un tableau de paramètres de type MqlParam |
|
A partir du handle spécifié, retourne le nombre de paramètres d'entrée de l'indicateur, ainsi que les valeurs et les types des paramètres |
|
Supprime le handle d'un indicateur et libère son bloc de calcul s'il n'est plus utilisé |
|
Retourne dans un tableau les données d'un buffer spécifié de l'indicateur spécifié |
|
Retourne dans un tableau les données historiques de la structure Rates pour un symbole et une période spécifiés |
|
Retourne les timseries chronologiques de la structure MqlRates pour le symbole et la période spécifiés et pour la quantité demandée |
|
Retourne dans un tableau les données historiques des heures d'ouverture des barres pour un symbole et une période spécifiés |
|
Retourne dans un tableau les données historiques des prix d'ouverture des barres pour un symbole et une période spécifiés |
|
Retourne dans un tableau les données historiques des prix les plus hauts des barres pour un symbole et une période spécifiés |
|
Retourne dans un tableau les données historiques des prix les plus bas des barres pour un symbole et une période spécifiés |
|
Retourne dans un tableau les données historiques des prix de clôture des barres pour un symbole et une période spécifiés |
|
Retourne dans un tableau les données historiques des volumes des ticks pour un symbole et une période spécifiés |
|
Retourne dans un tableau les données historiques des volumes des trades pour un symbole et une période spécifiés |
|
Retourne dans un tableau les données historiques des spreads pour un symbole et une période spécifiés |
|
Copie les ticks au format MqlTick dans le tableau ticks_array |
|
Copie les ticks au format MqlTick de l'intervalle de dates spécifié dans le tableau ticks_array |
|
Retourne le nombre de barres dans l'historique pour le symbole et la période spécifiés |
|
Retourne l'indice de la barre correspondant à l'heure spécifiée |
|
Retourne le prix de clôture (Close) de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
|
Retourne le prix le plus haut (High) de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
|
Retourne l'indice de la valeur la plus haute trouvée sur le graphique correspondant (décalage relatif à la barre courante) |
|
Retourne le prix le plus bas (Low) de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
|
Retourne l'indice de la valeur la plus basse trouvée sur le graphique correspondant (décalage relatif à la barre courante) |
|
Retourne le prix d'ouverture (Open) de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
|
Retourne l'heure d'ouverture de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
|
Retourne le volume de ticks de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
|
Retourne le volume réel de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
|
Retourne le volume de ticks de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
|
Retourne la valeur du spread de la barre (indiquée par le paramètre 'shift') sur le graphique correspondant |
En dépit du fait qu'en utilisant la fonction ArraySetAsSeries() il est possible de configurer l'accès aux éléments d'un tableau de la même façon que dans une timeserie, il faut se souvenir que les éléments d'un tableau sont stockés physiquement dans un seul ordre - seule la direction d'indexation change. Pour le démontrer, écrivons un exemple :
datetime TimeAsSeries[];
|
Le résultat obtenu ressemblera à ceci :
TimeCurrent = 2009.06.11 14:16:23
|
Comme nous le voyons dans la sortie ci-dessus, au fur et à mesure que l'indice du tableau TimeAsSeries augmente, la valeur du temps de l'indice baisse, c'est à dire que nous nous déplaçons du présent vers le passé. Pour le tableau classique ArrayNotSeries, le résultat est différent - au fur et à mesure que l'indice augmente, nous nous déplacçons du passé vers le présent.
Voir Aussi
ArrayIsDynamic, ArrayGetAsSeries, ArraySetAsSeries, ArrayIsSeries