CopyTicks
Retourne les ticks d'une structure MqlTick dans une matrice ou dans un vecteur. Les éléments sont comptés du passé vers le présent, ce qui signifie que l'élément à l'indice 0 est le plus ancien. Pour analyser un tick, vérifiez le champ flags qui montre exactement ce qui a changé dans le tick.
bool matrix::CopyTicks(
|
Méthode retournant un vecteur
bool vector::CopyTicks(
|
Paramètres
symbol
[in] Symbole.
flags
[in] Une combinaison de drapeaux de l'énumération ENUM_COPY_TICKS indiquant le contenu des données demandées. Lors de la copie vers un vecteur, vous ne pouvez spécifier qu'une seule valeur de l'énumération ENUM_COPY_TICKS, sinon une erreur sera retournée.
from_msc
[in] Heure à partir de laquelle les ticks sont demandés. L'heure est spécifiée en millisecondes depuis le 01/01/1970. Si from_msc=0, le dernier nombre de ticks égal à 'count' est renvoyé.
count
[in] Le nombre de ticks demandés. Si les paramètres 'from_msc' et 'count' ne sont pas spécifiés, tous les ticks disponibles, mais pas plus de 2000, seront écrits.
Valeur de Retour
Renvoie true en cas de succès ou false si une erreur se produit.
Note
Le premier appel à CopyTicks() lance la synchronisation de la base de données de ticks du symbole concerné stockée sur le disque dur. Si la base de données locale ne peut pas fournir tous les ticks demandés, les ticks manquants sont automatiquement téléchargés depuis le serveur de trading. Les ticks depuis from_msc spécifié dans CopyTicks() jusqu'au moment présent seront synchronisés. Après cela, tous les ticks arrivant pour ce symbole seront ajoutés à la base de données de ticks, le maintenant ainsi dans un état synchronisé.
Si les paramètres from_msc et count ne sont pas spécifiés, tous les ticks disponibles, mais pas plus de 2000, seront écrits dans la matrice ou dans le vecteur.
Pour les indicateurs, la méthode CopyTicks() retourne le résultat immédiatement : lorsqu'elle est appelée depuis un indicateur, la méthode CopyTick() retourne immédiatement tous les ticks disponibles du symbole et lance la synchronisation de la base de données des ticks s'il n'y a pas assez de données. Tous les indicateurs d'un même symbole opérent dans un seul thread commun, l'indicateur ne peut donc pas attendre la fin de la synchronisation. Après la synchronisation, CopyTicks() renverra tous les ticks demandés lors du prochain appel. Dans les indicateurs, la fonction OnCalculate() est appelée après l'arrivée de chaque tick.
Dans les Expert Advisors et les scripts, CopyTicks() peut attendre le résultat pendant 45 secondes : contrairement aux indicateurs, chaque Expert Advisor ou script fonctionne dans un thread séparé et peut donc attendre jusqu'à 45 secondes pour que la synchronisation se termine. Si la quantité requise de ticks ne parvient pas à être synchronisée pendant ce temps, CopyTicks() renverra les ticks disponibles au bout du délai imparti (timeout) et poursuivra la synchronisation. OnTick() dans Expert Advisors n'est pas un gestionnaire de chaque tick, il informe uniquement l'Expert Advisor des changements sur le marché. Il peut s'agir d'un lot de changements : le terminal peut recevoir simultanément plusieurs ticks, tandis que OnTick() ne sera appelé qu'une seule fois, pour informer l'Expert Advisor du dernier état du marché.
Taux de retour des données : le terminal stocke les 4 096 derniers ticks pour chaque instrument dans le cache à accès rapide (65 536 ticks pour les symboles avec la Profondeur du Marché en cours d'exécution). Les demandes concernant ces données sont celles exécutées le plus rapidement. Si les ticks demandés pour la session de trading en cours dépassent le cache, CopyTicks() appelle les ticks stockés dans la mémoire du terminal. Ces demandes nécessite plus de temps pour être terminées. Les demandes les plus lentes sont celles demandant des ticks des jours passés, puisque les données sont lues depuis le disque dur dans ce cas.
L'énumération ENUM_COPY_TICKS 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_TICKS. 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_TICKS_INFO |
1 |
Ticks contenant les changements de prix Bid et/ou Ask |
COPY_TICKS_TRADE |
2 |
Ticks contenant les changements de prix Last et/ou Volume |
COPY_TICKS_ALL |
3 |
Toutes les ticks |
COPY_TICKS_TIME_MS |
1<<8 |
L'heure du tick en millisecondes |
COPY_TICKS_BID |
1<<9 |
Price Bid |
COPY_TICKS_ASK |
1<<10 |
Prix Ask |
COPY_TICKS_LAST |
1<<11 |
Dernier prix (prix de la dernière transaction) |
COPY_TICKS_VOLUME |
1<<12 |
Volume du dernier prix |
1<<13 |
Drapeaux des Ticks |
|
Organisation des données |
|
|
COPY_TICKS_VERTICAL |
32768 |
Les ticks sont copiés dans la matrice le long de l'axe vertical. Les ticks reçus seront disposés verticalement dans la matrice, c'est-à-dire que les ticks les plus anciens seront dans la première ligne, et les ticks les plus récents seront dans la dernière ligne de la matrice.
Avec la copie par défaut, les ticks sont ajoutés dans une matrice le long de l'axe horizontal.
L'indicateur n'est applicable que lors de la copie vers une matrice. |
Analysez les indicateurs des ticks pour savoir quelles données ont changé :
- TICK_FLAG_BID le prix de l'Offre (Bid) du tick a changé
- TICK_FLAG_ASK le prix de la Demande (Ask) du tick a changé
- TICK_FLAG_LAST le prix de la dernière transaction du tick a changé
- TICK_FLAG_VOLUME le volume du tick a changé
- TICK_FLAG_BUY le tick est le résultat d'une opération d'achat
- TICK_FLAG_SELL le tick est le résultat d'une opération de vente
Voir aussi
Accès aux séries chronologiques et aux indicateurs, CopyTicks