Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 449

 
Juer:

Wie kann ich den Wert eines Feldes einer Variablen vom Typ Struktur ermitteln, wenn ich die laufende Nummer des Feldes in dieser Struktur kenne?

Ich weiß, dass sich der Wert von Feld Nr. 1 (d. h. double) geändert hat. Wie kann ich die laufende Nummer verwenden, um dieses Feld zu finden?

Oder sagen Sie mir, wie ich das Feld der Struktur bekommen kann, wenn ich den Stringnamen kenne?

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

Hier habe ich einen Wert

string field="dval";

Ich möchte dieses bestimmte Strukturfeld abfragen.

 
Juer:

Oder sagen Sie mir, wie kann ich ein Strukturfeld erhalten, wenn ich seinen Stringnamen kenne?

Hier habe ich einen Wert

string field="dval";

Ich möchte dieses bestimmte Strukturfeld abfragen.

Strukturen und, Klassen und Schnittstellen

 

Danke, können Sie mir sagen, wo sich die Antwort auf meine Frage befindet?

 
Juer:

Danke, aber können Sie mir sagen, wo die Antwort auf meine Frage zu finden ist?

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;

Wo liegt das Problem? Es gibt Beispiele für die Zuweisung und den Erhalt von Werten aus Strukturen.

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

//...

string field=DoubleToString(Test.dval);

Sie müssen nur double instring umwandeln. DoubleToString

 
Konstantin Nikitin:

Wo liegt das Problem? Es gibt Beispiele für die Zuweisung und den Erhalt von Werten aus Strukturen.

Alles, was Sie tun müssen, ist, double instring zu konvertieren. DoubleToString

Was haben Sie geschrieben und wie löst es mein Problem? Ich verstehe das nicht.

Und das war nur ein Beispiel. Meine Struktur hat mehrere Felder unterschiedlichen Typs. Und ich kenne den Feldtyp nicht, ich kenne nur den Feldnamen.

Ich habe eine Zeichenfolge Feldname der Struktur. Wenn ich diesen Namen kenne, möchte ich das entsprechende Feld der Struktur abfragen, d. h. den Wert in diesem Feld erhalten.

 

du weißt schon, du wirst auf dem Java verwöhnt.)

Sie brauchen dies.
https://www.mql5.com/ru/code/13663

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

Was haben Sie geschrieben und wie löst es mein Problem? Das ist nicht klar.

Und das war nur ein Beispiel. Meine Struktur hat mehrere Felder unterschiedlichen Typs. Und ich kenne den Feldtyp nicht, ich kenne nur den Feldnamen.

Ich habe eine Zeichenfolge Feldname der Struktur. Wenn ich diesen Namen kenne, möchte ich das entsprechende Feld der Struktur abfragen, d. h. den Wert in diesem Feld erhalten.

Schauen Sie hier, vielleicht ist es das, was ich brauche?

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Kann ich den Pyramidentyp programmatisch definieren?

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));
  }

Das bedeutet, dass vor dem Lesen des Wertes einer Variablen ihr Typ ermittelt und der Wert dann in eine Variable des entsprechenden Typs eingelesen wird.
 

Möchten Sie eine Frage stellen?

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

Die Funktion berechnet die Handelskriterien. Die Funktion gibt die folgenden Werte zurück:

10- ein Handelskriterium für die Eröffnung eines Marktkaufauftrags wurde ausgelöst;
20- Handelskriterium für die Eröffnung eines Verkaufsauftrags hat ausgelöst
11- Handelskriterium für die Schließung einer ausgelösten Marktkauforder;
21- das Handelskriterium für die Schließung einer Verkaufsorder hat ausgelöst; 21 - das Marktkriterium für die Schließung einer Verkaufsorder hat ausgelöst;

   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 возвращаемые значения

Warum ist das Programm so sehr auf die Rückgabewerte fixiert?

 
Alexey Viktorov:

Schauen Sie hier, vielleicht ist das der Richtige.


D. h., bevor Sie den Wert einer Variablen lesen, ermitteln Sie ihren Typ und lesen dann den Wert in eine Variable des entsprechenden Typs.

Und ich habe mehrere Felder desselben Typs. Ich glaube nicht, dass das helfen wird.

Ich habe dies gefundenhttps://www.mql5.com/ru/code/16282

Ich habe beschlossen, die Adresse (Offset) in Bytes anstelle des Feldnamens zu übergeben.

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

Möchten Sie eine Frage stellen?

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

Die Funktion berechnet die Handelskriterien. Die Funktion gibt die folgenden Werte zurück:

10- ein Handelskriterium für die Eröffnung eines Marktkaufauftrags wurde ausgelöst;
20- Handelskriterium für die Eröffnung eines Verkaufsauftrags hat ausgelöst
11- Handelskriterium für die Schließung einer ausgelösten Marktkauforder;
21- das Handelskriterium für die Schließung einer Verkaufsorder hat ausgelöst; 21 - das Marktkriterium für die Schließung einer Verkaufsorder hat ausgelöst;

Warum ist das Programm so sehr auf die Rückgabewerte fixiert?

Dieser Zyklus ist eine mehrfache Wiederholung. Auch hier gibt es eine Verzweigung. Wenn die erste Bedingung eintritt, wird der Operator Return ausgeführt und die Programmausführung beendet. Wenn die Bedingung falsch ist, wird die zweite Bedingung geprüft usw. Wenn alle 4 Bedingungen falsch sind, wird Folgendes ausgeführt

Grund der Beschwerde: