Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 449

 
Juer:

Comment puis-je obtenir la valeur d'un champ d'une variable de type structure, en connaissant le numéro de séquence du champ dans cette structure.

Je sais que le champ n° 1 (c'est-à-dire le double) a changé de valeur. Comment puis-je utiliser le numéro de séquence pour trouver ce champ ?

Ou dites-moi comment obtenir le champ de la structure en connaissant son nom de chaîne ?

struct test
  {
   int num;
   double dval;
   string sval;			
  };

J'ai ici une valeur

string field="dval" ;

Je veux interroger ce champ de structure particulier.

 
Juer:

Ou dites-moi, comment puis-je obtenir un champ de structure en connaissant son nom de chaîne ?

J'ai ici une valeur

string field="dval" ;

Je veux interroger ce champ de structure particulier.

Structures et, classes et interfaces

 

Merci, pouvez-vous me dire où se trouve la réponse à ma question ?

 
Juer:

Merci, mais pouvez-vous me dire où se trouve la réponse à ma question ?

struct trade_settings
  {
   double take;         // значения цены фиксации прибыли
   double stop;         // значение цены защитного стопа
   uchar  slippage;     // значение допустимого проскальзывания
  };
//--- создали и проинициализировали переменную типа trade_settings
trade_settings my_set={0.0,0.0,5};  
if (input_TP>0) my_set.take=input_TP;

Quel est le problème ? Il existe des exemples d'affectation et de valorisation des structures.

struct test
  {
   int num;
   double dval;
   string sval;                 
  };
test Test;

//...

string field=DoubleToString(Test.dval);

Il suffit de convertir le double enchaîne. DoubleToString

 
Konstantin Nikitin:

Quel est le problème ? Il existe des exemples d'affectation et de valorisation des structures.

Tout ce que vous avez à faire est de convertir le double enchaîne. DoubleToString

Qu'avez-vous écrit et comment cela résout-il mon problème ? Je ne comprends pas.

Et ce n'était qu'un exemple. Ma structure comporte plusieurs champs de différents types. Et je ne connais pas le type de champ, je ne connais que le nom du champ.

J'ai un nom de champ de type chaîne de caractères de la structure. Je veux, connaissant ce nom, demander le champ correspondant de la structure, c'est-à-dire obtenir la valeur dans ce champ.

 

tu sais, tu es gâté par la java.)

vous avez besoin de ça.
https://www.mql5.com/ru/code/13663

JSON Serialization and Deserialization (native MQL)
JSON Serialization and Deserialization (native MQL)
  • votes : 34
  • 2015.08.18
  • o_o
  • www.mql5.com
Сериализация и десериализация JSON-протокола. Портированный код со скоростной библиотеки С++. Практичный пример: авторизация на сайте и парсинг ответа Благодарности принимаются в виде примеров, кто как применяет MQL для работы с веб-ресурсами. Поделитесь своим опытом работы с JSON в MQL. В протокол добавлены функции Escape / Unescape...
 
Juer:

Qu'avez-vous écrit et comment cela résout-il mon problème ? Ce n'est pas clair.

Et ce n'était qu'un exemple. Ma structure comporte plusieurs champs de différents types. Et je ne connais pas le type de champ, je ne connais que le nom du champ.

J'ai un nom de champ de type chaîne de caractères de la structure. Je veux, connaissant ce nom, interroger le champ correspondant de la structure, c'est-à-dire obtenir la valeur de ce champ.

Regarde ici, peut-être que c'est ce dont j'ai besoin ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Puis-je définir le type de pyramide par programme ?

Anatoli Kazharski, 2015.06.17 17:07

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   double d_value =0.0;
   int    i_value =0;
   Print("d_value: type=",GetTypeName(d_value));
   Print("i_value: type=",GetTypeName(i_value));
  }
//+------------------------------------------------------------------+
//| Возвращает в строковом виде тип                                  |
//+------------------------------------------------------------------+
template<typename T>
string GetTypeName(const T &t)
  {
   return(typename(T));
  }

C'est-à-dire qu'avant de lire la valeur d'une variable, il faut obtenir son type et ensuite lire la valeur dans une variable du type correspondant.
 

Voulez-vous demander ?

https://book.mql4.com/ru/build/conditions

La fonction calcule les critères de négociation. La fonction renvoie les valeurs suivantes :

10- un critère de transaction pour l'ouverture d'un ordre d'achat sur le marché s'est déclenché;
20- le critère de transaction pour l'ouverture d'un ordre de vente a été déclenché.
11- critère de négociation pour la clôture d'un marché Ordre d'achat déclenché ;
21- le critère de négociation pour la clôture d'un ordre de marché de vente s'est déclenché ; 21 - le critère de marché pour la clôture d'un ordre de vente s'est déclenché ;

   if(M_0>S_0 && -M_0>Opn && St_M_0>St_S_0 && St_S_0<St_min)
      return(10);                      // Открытие Buy    
   if(M_0<S_0 &&  M_0>Opn && St_M_0<St_S_0 && St_S_0>St_max)
      return(20);                      // Открытие Sell 
   if(M_0<S_0 &&  M_0>Cls && St_M_0<St_S_0 && St_S_0>St_max)
      return(11);                      // Закрытие Buy    
   if(M_0>S_0 && -M_0>Cls && St_M_0>St_S_0 && St_S_0<St_min)
      return(21);                      // Закрытие Sell  
return 10 20 11 21 возвращаемые значения

pourquoi le programme est si verrouillé sur les valeurs de retour ?

 
Alexey Viktorov:

Regarde ici, c'est peut-être le bon.


C'est-à-dire qu'avant de lire la valeur d'une variable, il faut obtenir son type et ensuite lire la valeur dans une variable du type correspondant.

J'ai plusieurs champs du même type. Je ne pense pas que ça va aider.

J'ai trouvé ce sitehttps://www.mql5.com/ru/code/16282

J'ai décidé de passer son adresse (offset) en octets au lieu du nom du champ.

TypeToBytes
TypeToBytes
  • votes : 22
  • 2016.09.13
  • fxsaber
  • www.mql5.com
Эта кроссплатформенная библиотека позволяет удобно осуществлять побайтовую работу со структурами, массивами и стандартными типами данных. Возможности Побайтовое сравнение (== и !=) между собой структур, массивов и стандартных типов данных (в MQL по умолчанию отсутствуют операторы сравнения структур) в любом сочетании. Определение байтового...
 
Seric29:

Voulez-vous demander ?

https://book.mql4.com/ru/build/conditions

La fonction calcule les critères de négociation. La fonction renvoie les valeurs suivantes :

10- un critère de transaction pour l'ouverture d'un ordre d'achat sur le marché s'est déclenché;
20- le critère de transaction pour l'ouverture d'un ordre de vente a été déclenché.
11- critère de négociation pour la clôture d'un marché Ordre d'achat déclenché ;
21- le critère de négociation pour la clôture d'un ordre de marché de vente s'est déclenché ; 21 - le critère de marché pour la clôture d'un ordre de vente s'est déclenché ;

pourquoi le programme est si verrouillé sur les valeurs de retour ?

Ce cycle est une répétition multiple. Il y a aussi un embranchement ici. Lorsque la première condition se déclenche, l'opérateur return est exécuté et l'exécution du programme s'arrête. Si la condition est fausse, la deuxième condition est vérifiée, et ainsi de suite. Si les 4 conditions sont fausses, l'opération suivante sera exécutée

Raison: