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(
   string           symbol,                // nom du symbole
   ulong            flags,                 // drapeau indiquant le type de ticks à recevoir
   ulong            from_msc,              // heure à partir de laquelle les ticks sont demandés
   ulong            count                  // nombre de ticks à obtenir
   );

Méthode retournant un vecteur

bool  vector::CopyTicks(
   string           symbol,                // nom du symbole
   ulong            flags,                 // drapeau indiquant le type de ticks à recevoir
   ulong            from_msc,              // heure à partir de laquelle les ticks sont demandés
   ulong            count                  // nombre de ticks à obtenir
   );

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.

ENUM_COPY_TICKS

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

COPY_TICKS_FLAGS

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