Questions des débutants MQL5 MT5 MetaTrader 5 - page 244

 
forexman77:
Pouvez-vous me dire s'il existe d'autres moyens rapides d'obtenir le prix actuel que "SymbolInfoTick". Peut-être existe-t-il un moyen plus rapide d'obtenir le devis actuel ?

SymbolInfoDouble peut être utilisé

avec les identifiantsSYMBOL_BID etSYMBOL_ASK.

 
Fleder:

SymbolInfoDouble peut être utilisé

avec les identifiantsSYMBOL_BID etSYMBOL_ASK.

Merci !

On ne sait pas très bien ce qui découle de "SYMBOL_BID" (l'offre est la meilleure offre de vente). S'agit-il toujours de la cotation actuelle ou du meilleur prix du marché de la coupe ESN ?

 
forexman77:

Merci !

On ne sait pas très bien ce qui découle de "SYMBOL_BID" (l'offre est la meilleure offre de vente). S'agit-il toujours de la cotation actuelle ou du meilleur prix du marché de la coupe ESN ?

La cotation actuelle et le meilleur prix dans la coupe de marché ECN sont la même chose.

 
Fleder:

La cotation actuelle et le meilleur prix dans le Dock ECN sont une seule et même chose.

En général, il s'avère que si nous utilisons "SymbolInfoDouble" lors de la requête, une transaction à ce prix peut ne pas avoir lieu, c'est-à-dire qu'il s'agit de l'offre actuelle.

Si nous utilisons "SymbolInfoTick", alors le prix était exactement là, c'est-à-dire qu'il s'agit du prix actuel auquel la dernière transaction a eu lieu, lorsque nous utilisons double last ; // Prix actuel de la dernière transaction (Last)

 
forexman77:

En général, il s'avère que si nous utilisons "SymbolInfoDouble" dans la requête, une transaction à ce prix ne peut pas se produire, c'est-à-dire qu'il s'agit de l'offre actuelle.

Si nous utilisons "SymbolInfoTick", alors le prix était bien là, c'est-à-dire qu'il s'agit du prix actuel auquel la dernière transaction a eu lieu.

Note

Si cette fonction est utilisée pour obtenir des informations sur le dernier tick, il est préférable d'utiliserSymbolInfoTick(). Il est tout à fait possible qu'il n'y ait pas eu de cotation pour ce symbole depuis le moment où le terminal s'est connecté au compte de trading. Dans ce cas, la valeur demandée sera indéfinie.

SymbolInfoTick peut renvoyer une valeur indéfinie s'il n'y a pas eu un seul tick depuis que le terminal s'est connecté au serveur.

SymbolInfoDouble exclut cette situation.

 
Fleder:

Note

Si la fonction est utilisée pour obtenir des informations sur le dernier tick, il est préférable d'utiliserSymbolInfoTick(). Il est tout à fait possible qu'il n'y ait pas eu de cotation pour ce symbole depuis que le terminal a été connecté au compte de trading. Dans ce cas, la valeur demandée sera indéfinie.

SymbolInfoTick peut retourner une valeur indéfinie s'il n'y a pas eu un seul tick depuis que l'EA a été connecté au graphique.

SymbolInfoDouble exclut une telle situation.

Je l'ai. Merci ! Maintenant, il ne reste plus qu'à trouver un exemple de code simple pour vérifier combien de temps prend chaque fonction lorsqu'elle est appelée ?
 
forexman77:
Je l'ai. Merci ! Il ne reste plus qu'à trouver un exemple de code simple pour vérifier combien de temps il faut pour appeler les deux fonctions ?
uint start=GetTickCount();
// здесь Ваш код вызова 
Print("Вызов прошёл за = ",GetTickCount()-start);
 
barabashkakvn:

Cette astuce ne fonctionnera probablement pas dans cette situation.

Il y aura toujours un dépassement de zéro.

Les fonctionsSymbolInfoTick etSymbolInfoDouble sont trop rapides- pas plus que des unités de microsecondes.

 
Fleder:

Cette astuce ne fonctionnera probablement pas dans cette situation.

Il y aura toujours un dépassement de zéro.

Les fonctionsSymbolInfoTick etSymbolInfoDouble sont trop rapides- pas plus que des unités de microsecondes.

D'autant plus intéressant, il y a un exemple de code. Nous attendons le résultat.
 
barabashkakvn:
Fleder:

Cette astuce ne fonctionnera probablement pas dans cette situation.

Il y aura toujours un dépassement de zéro.

Les fonctionsSymbolInfoTick etSymbolInfoDouble sont trop rapides- pas plus que des unités de microsecondes.

Dans le script, j'ai créé cette petite chose :

void OnStart()
  {
uint start=GetTickCount();
double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
Alert("ask=",ask);
uint time=GetTickCount()-start;
Alert("time=",time);
   
  }
//+------------------------------------------------------------------+

temps=0

SymbolInfoTick sera vérifié le lundi.