Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 449

 
Juer:

Come posso ottenere il valore di un campo di una variabile di tipo struttura, conoscendo il numero di sequenza del campo in quella struttura.

So che il campo #1 (cioè il doppio) ha cambiato valore. Come posso usare il numero di sequenza per trovare questo campo?

Oppure ditemi come posso ottenere il campo della struttura conoscendone il nome della stringa?

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

qui ho un valore

campo stringa="dval";

Voglio interrogare questo particolare campo della struttura.

 
Juer:

O ditemi, come posso ottenere un campo di struttura conoscendo il suo nome di stringa?

qui ho un valore

campo stringa="dval";

Voglio interrogare questo particolare campo della struttura.

Strutture e, classi e interfacce

 

Grazie, puoi dirmi dove si trova la risposta alla mia domanda?

 
Juer:

Grazie, ma puoi dirmi dov'è la risposta alla mia domanda?

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;

Qual è il problema, ci sono esempi di assegnazione e ottenimento di valore dalle strutture.

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

//...

string field=DoubleToString(Test.dval);

Hai solo bisogno di convertire il doppio instringa. DoubleToString

 
Konstantin Nikitin:

Qual è il problema, ci sono esempi di assegnazione e ottenimento di valore dalle strutture.

Tutto quello che dovete fare è convertire il doppio instringa. DoubleToString

Cosa hai scritto e come risolve il mio problema? Non lo capisco.

E questo era solo un esempio. La mia struttura ha diversi campi di diversi tipi. E non conosco il tipo di campo, conosco solo il nome del campo.

Ho un nome di campo stringa della struttura. Voglio, conoscendo questo nome, richiedere il campo corrispondente della struttura, cioè ottenere il valore in questo campo.

 

ti stai facendo viziare con il java).

hai bisogno di questo.
https://www.mql5.com/ru/code/13663

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

Cosa hai scritto e come risolve il mio problema? Non è chiaro.

E questo era solo un esempio. La mia struttura ha diversi campi di diversi tipi. E non conosco il tipo di campo, conosco solo il nome del campo.

Ho un nome di campo stringa della struttura. Voglio, conoscendo questo nome, interrogare il campo corrispondente della struttura, cioè ottenere il valore in questo campo.

Guarda qui, forse questo è quello che mi serve?

Forum sul trading, sistemi di trading automatico e test di strategia

Posso definire il tipo di piramide programmaticamente?

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

Cioè, prima di leggere il valore di una variabile, ottenere il suo tipo e poi leggere il valore in una variabile del tipo corrispondente.
 

Volete chiedere?

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

La funzione calcola i criteri di trading. La funzione restituisce i seguenti valori:

10- è scattato un criterio di trading per l'apertura di un ordine Buy a mercato;
20- il criterio di negoziazione per l'apertura di un ordine Sell è scattato
11- criterio di trading per la chiusura di un ordine di acquisto sul mercato attivato;
21- è scattato il criterio di trading per la chiusura di un ordine Sell market; 21 - è scattato il criterio di mercato per la chiusura di un ordine Sell;

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

perché il programma è così bloccato nei valori di ritorno?

 
Alexey Viktorov:

Guarda qui, forse questo è quello giusto.


Cioè, prima di leggere il valore di una variabile, ottenere il suo tipo e poi leggere il valore in una variabile del tipo corrispondente.

Ho diversi campi dello stesso tipo. Non credo che questo possa aiutare.

Ho trovato questohttps://www.mql5.com/ru/code/16282

Ho deciso di passare il suo indirizzo (offset) in byte invece del nome del campo.

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

Volete chiedere?

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

La funzione calcola i criteri di trading. La funzione restituisce i seguenti valori:

10- è scattato un criterio di trading per l'apertura di un ordine Buy a mercato;
20- il criterio di negoziazione per l'apertura di un ordine Sell è scattato
11- criterio di trading per la chiusura di un ordine di acquisto sul mercato attivato;
21- è scattato il criterio di trading per la chiusura di un ordine Sell market; 21 - è scattato il criterio di mercato per la chiusura di un ordine Sell;

perché il programma è così bloccato nei valori di ritorno?

Questo ciclo è una ripetizione multipla. Anche qui c'è una ramificazione. Quando la prima condizione si innesca, l'operatore return viene eseguito e l'esecuzione del programma si ferma. Se la condizione è falsa, viene controllata la seconda condizione, e così via. Se tutte e 4 le condizioni sono false, verrà eseguito quanto segue