Discussion de l'article "L'utilisation des bibliothèques MQL5 Standard de Cours de Trade dans la rédaction d'un Expert Advisor" - page 2

[Supprimé]  
Trolls:

Pourquoi la candidature n'est-elle pas imprimée ?

Voici le journal de travail


2011.01.31 20:20:18 00 (EURUSD,M1) EURUSD 0

Voici le code



Utilisez \Nmy_symbol.RefreshRates();\N au lieu de \Nmy_symbol.Refresh();\N. Et ça marche !
 
-Alexey-:
Utilisez \Nmy_symbol.RefreshRates();\Nà la place de \Nmy_symbol.Refresh();\N. Et ça marche !

Merci.

Cette question s'adresse probablement aux développeurs ou à la personne qui rédige l'aide.

L'article dit

mysymbol.Refresh()
Utilisé pour rafraîchir toutes les données pour un symbole. Lorsque vous spécifiez un nouveau nom de symbole pour une classe, cette fonction est appelée automatiquement.


mysymbol.RefreshRates()
Permet de mettre à jour les cotations. Lorsqu'un nouveau symbole est défini, cette fonction est appelée automatiquement.

1. Il s'avère que toutes les données ?

2. Quelle est la différence entre la spécification d'un nouveau symbole et la définition d'un nouveau symbole ?

3. Je ne comprends pas le terme "automatiquement". Il me semble avoir défini un symbole avec la commande my_symbol.Name(_Symbol), mais la mise à jour n'a pas eu lieu....

 
Trolls:

L'article dit

mysymbol.Refresh()
Utilisé pour rafraîchir toutes les données pour un symbole. Lorsqu'un nouveau nom de symbole est spécifié pour une classe, cette fonction est appelée automatiquement.

mysymbol.RefreshRates()
Permet de rafraîchir les cotations. Lorsqu'un nouveau symbole est défini, cette fonction est appelée automatiquement.

1. Il s'avère que toutes les données ?

2. Quelle est la différence entre spécifier un nouveau caractère et définir un nouveau caractère ?

3. Je ne comprends pas le terme "automatiquement". Il semble que j'aie défini le symbole avec la commande my_symbol.Name(_Symbol), mais la mise à jour n'a pas eu lieu....

Ce moment rare où vous n'avez pas à attendre la réponse de l'auteur de l'article ou de l'auteur de l'ouvrage de référence :) Il suffit de regarder le code source pour voir que RefreshRates() duplique complètement la fonction SymbolInfoTick(), qui "retourne les prix actuels pour le symbole spécifié dans une variable de type MqlTick". Par conséquent, lorsque les auteurs disent "à propos de la mise à jour des cotations", ils parlent en fait de la mise à jour des valeurs d'une variable de type MqlTick.

2. Une telle ligne existe dans le code source

void  Name(string name)  { m_name=name; Refresh();}
Cela indique que lors de l'appel de la fonction Name(), seule la fonction Refresh() est automatiquement activée. Je n'ai trouvé aucune information sur l'activation automatique de la fonction RefreshRates() lors de l'appel de la fonction Name(). Il s'avère donc qu'à ce jour, un changement de symbole pour la fonction Name() n'active pas automatiquement la fonction RefreshRates(). Nous devrons mettre à jour les valeurs de la variable de type MqlTick ("refresh quotes") de manière indépendante et forcée.
 
Trolls:

Pourquoi l'offre n'est pas imprimée ? Voici le journal de travail 2011.01.31 20:20:18 00 (EURUSD,M1) EURUSD 0

Voici le code

void OnTick()
  {
   my_symbol.Name(_Symbol);
   my_symbol.Refresh();
   Print(_Symbol," ",my_symbol.Bid());
  }

Voici la réponse à la question de savoir pourquoi la valeur Bid est imprimée à zéro. Le code source montre que la fonction Bid() est décrite par la ligne

double  Bid()  const { return(m_tick.bid);}

Ainsi, la valeur de la fonction Bid() est liée à la valeur d'un des éléments d'une variable de type MqlTick. Et cette variable n'est pas mise à jour automatiquement lors d'un changement de symbole, mais par un appel supplémentaire de la fonction RefreshRates(). Dans votre code, la fonction Refresh() est appelée - en fait, elle est appelée deux fois (en tenant compte du corps de la fonction Name()) - et la fonction RefreshRates() n'est pas appelée une seule fois.

[Supprimé]  
Vous pouvez probablement améliorer le code en ajoutant un appel à Refresh () dans la dernière partie deRefresh(). Toutes les données seront alors réellement mises à jour.....
 
Interesting:
Vous pouvez peut-être améliorer le code en ajoutant l'appel à RefreshRates () dans la dernière partie deRefresh(). Toutes les données seront alors réellement mises à jour.....
J'ai ajouté l'appel RefreshRates() à la fonction Name(). Mais il s'agit toujours de correctifs au niveau d'un utilisateur individuel pour ses besoins.
[Supprimé]  
Yedelkin:
J'ai ajouté l'appel RefreshRates() à la fonction Name(). Mais il s'agit toujours de correctifs au niveau d'un utilisateur individuel pour ses besoins.

Mais si les développeurs mettent Refresh() à d'autres endroits (à leur discrétion), ce sera une solution normale pour la plupart des utilisateurs.

Si nous disons que Refresh met à jour toutes les données, alors toutes les données devraient vraiment être mises à jour. IMHO


 
Interesting:

Mais si les développeurs le mettent dans Refresh() et à d'autres endroits (à leur discrétion), ce sera une solution normale pour la plupart des utilisateurs.

Si nous disons que Refresh met à jour toutes les données, alors toutes les données devraient être mises à jour. IMHO

Il n'y a pas d'objection à cela. Cependant, une solution normale pour les utilisateurs consisterait à fournir une description claire et compréhensible des modèles disponibles et de leurs propriétés. Ensuite, l'utilisateur trouvera lui-même comment utiliser ces constructions. Et comme une telle solution est difficile à atteindre pour diverses raisons, ceux qui se posent des questions supplémentaires à eux-mêmes et aux autres avanceront :)
[Supprimé]  
Yedelkin:
Il n'y a rien à redire à cela. Toutefois, la solution normale pour les utilisateurs consisterait à fournir une description claire et compréhensible des modèles disponibles et de leurs propriétés. L'utilisateur découvrirait alors lui-même comment utiliser ces constructions. Et comme une telle solution est difficile à atteindre pour diverses raisons, ceux qui posent des questions supplémentaires à eux-mêmes et aux autres iront de l'avant :)

Je ne sais pas, je n'utilise la bibliothèque standard qu'à des fins d'étude. J'écris tous mes projets sur mes propres composants.

J'attendrai que les constructeurs soient plus pratiques, et j'abandonnerai la bibliothèque standard au complet....

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 

Par ailleurs, j'ai découvert que la classe CHistoryOrderInfo contient quelques lignes comme celle-ci

return(FormatType(str,Type()));
...
FormatType(type,Type())

Mais la fonction Type() est absente de la classe.