- 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
CopyTicks
La fonction reçoit les ticks au format MqlTick dans ticks_array. Dans ce cas, les ticks sont indexés depuis le passé vers le présent, c'est à dire que le tick l'index 0 est le plus vieux tick dans le tableau. Pour l'analyse des ticks, vérifiez le champ flags, qui montre exactement ce qui a changé dans le tick.
int CopyTicks(
|
Paramètres
symbol_name
[in] Symbole.
ticks_array
[out] Un tableau de types MqlTick pour reçevoir les ticks.
flags
[in] Un flag pour définir le type des ticks demandés. COPY_TICKS_INFO ticks avec les changements Bid et/ou Ask, COPY_TICKS_TRADE ticks avec les changement de Last et de Volume, COPY_TICKS_ALL tous les ticks. Pour tout type de demande, les valeurs des ticks précédents sont ajoutées aux champs restants de la structure MqlTick.
from
[in] La date à partir de laquelle vous souhaitez demander les ticks. En millisecondes depuis le 01/01/1970. Si from=0, le dernier count des ticks sera retourné.
count
[in] Le nombre de ticks demandés. si les paramètres 'from' et 'count' ne sont pas spécifiés, tous les ticks récents disponibles (mais pas plus de 2000) seront écrits dans le tableau ticks_array[].
Valeur de retour
Le nombre de ticks copiés ou -1 en cas d'erreur.
Note Supplémentaire
La fonction CopyTicks() permet de demander et d'analyser tous les ticks reçus. Le premier appel à CopyTicks() initie la synchronisation de la base de données des ticks du symbole stockée sur le disque dur. Si la base de données locale ne fournit pas tous les ticks demandés, alors les ticks manquants seront automatiquement téléchargés depuis le serveur de trading. Les ticks commençant à partir de la date from spécifiée dans CopyTicks() jusqu'au moment actuel seront synchronisés. Après cela, tous les ticks arrivant pour ce symbole seront ajoutés à la base de donnée des ticks, la gardant ainsi synchronisée.
Si les paramètres from et count ne sont pas spécifiés, tous les ticks récents disponibles (mais pas plus de 2000) seront écrits dans le tableau ticks_array[]. Le paramètre flags permet de spécifier le type des ticks demandés.
COPY_TICKS_INFO seuls les ticks avec des changements de prix Bid et/ou Ask sont retournés. Les données des autres champs seront également ajoutées. Par exemple, si seulement le Bid a changé, les champs ask et volume seront remplis avec les dernières valeurs connues. Pour savoir exactement ce qui a changé, analysez le champ flags, qui contiendra les valeurs TICK_FLAG_BID et/ou TICK_FLAG_ASK. Si un tick a des valeurs des prix Bid et Ask à zéro, et que les flags montrent que ces données ont changé (flags=TICK_FLAG_BID|TICK_FLAG_ASK), cela signifie que le livre des ordres (Market Depth) est vide. En d'autres termes, il n'y a aucun ordre buy ou sell.
COPY_TICKS_TRADE seuls les ticks avec les changements de prix Last et de volume sont retournés. Les données des autres champs seront également ajoutées, c'est à dire que les dernières valeurs connues de Bid et Ask seront spécifiées dans les champs correspondants. Pour savoir exactement ce qui a changé, analysez le champ flags, qui contiendra les valeurs TICK_FLAG_LAST et/ou TICK_FLAG_VOLUME.
COPY_TICKS_ALL tous les ticks ayant un changement sont retournés. Les champs inchangés seront remplis avec les dernières valeurs connues.
L'appel à CopyTicks() avec le flag COPY_TICKS_ALL retourne immédiatement tous les ticks de l'intervalle demandé, tandis qu'un appel dans les autres mode nécessite du temps pour traiter et sélectionner les ticks, ils ne procurent donc pas un avantage significatif en terme de vitesse.
Lors de la demande de ticks (COPY_TICKS_INFO ou COPY_TICKS_TRADE), chaque tick contient toutes les informations de prix, ainsi que l'heure du tick (bid, ask, last et volume). Cette fonctionnalité est fournie pour une analyse plus facile de l'état du trade au moment de chaque tick, il n'y a donc pas besoin de demander un historique profond des ticks et de rechercher les valeurs des autres champs.
Pour les indicateurs, la fonction CopyTicks() retourne le résultat : lorsqu'elle est appelée depuis un indicateur, CopyTick() retourne immédiatement tous les ticks disponibles pour un symbole, et lancera la synchronisation de la base de données des ticks, si les données disponibles ne sont pas suffisantes. Tous les indicateurs pour un même symbole opèrent dans un thread commun, afin que l'indicateur ne soit pas bloqué par la synchronisation. Après la synchronisation, l'appel suivant à CopyTicks() retournera tous les ticks demandés. Pour les indicateurs, la fonction OnCalculate() est appelée après l'arrivée de chaque tick.
CopyTicks() peut attendre le résultat pendant 45 secondes dans les Expert Advisors et les scripts : puisque distinct des indicateurs, chaque Expert Advisor et chaque script opère dans un thread séparé, et peut donc attendre 45 secondes jusqu'à la fin de la synchronisation. Si le nombre demandé de ticks échoue à être synchronisés pendant ce temps imparti, CopyTicks() retournera les ticks disponibles au moment du timeout et continuera la synchronisation. OnTick() dans les Expert Advisors n'est pas le handler de chaque tick, il ne fait que notifier aux Expert Advisors des changements dans le marché. Ce peut être un ensemble de changements : le terminal peut effectuer simultanément plusieurs ticks, mais OnTick() ne sera appelée qu'une seule fois pour notifier l'EA du dernier état du marché.
Le taux de retour de données : le terminal stocke dans le cache d'accès rapide les 4096 derniers ticks pour chaque instrument (65536 ticks pour les symboles avec un Market Depth en cours d'exécution). Si les ticks demandés pour la session actuelle de trading sont dans le cache, CopyTicks() appelle les ticks stockés dans la mémoire du terminal. Ces demandes demande plus de temps d'exécution. Les demandes les plus lentes sont celles demandant les ticks d'autres jours, puisque les données sont lues depuis le disque dur dans ce cas.
Exemple :
#property copyright "Copyright 2016, MetaQuotes Software Corp."
|
Voir aussi