Questions d'un "mannequin - page 59

 
Yedelkin:
Les tableaux à deux dimensions comme array[][] ne fonctionnent pas ?
En théorie, ils devraient, j'ai même essayé... Je ne l'ai pas maîtrisé. J'aimerais voir une mise en œuvre prête, si elle est possible en principe. Il y a eu beaucoup d'accrocs immédiatement... Si nous parlons d'un tableau à deux dimensions, la première chose qui m'a intrigué est que les tampons sont initialement indéfinis, c'est-à-dire dynamiques. Comment pourraient-ils être chargés dans le tableau parent ? Et puis... Si chaque tampon a sa propre longueur lorsqu'il est rempli, nous nous retrouverons avec un tableau cubique au lieu d'un tableau bidimensionnel, et ce ne sera même pas un cube, mais une sorte de tétris 3D.
 
x100intraday:
En théorie, ils devraient, j'ai même essayé... Je n'ai pas pu le faire. J'aimerais voir une implémentation finie, si c'est possible en principe. Il y a eu beaucoup d'accrocs immédiatement... Si nous parlons d'un tableau à deux dimensions, la première chose qui m'a intrigué est que les tampons sont initialement indéfinis, c'est-à-dire dynamiques. Comment pourraient-ils être chargés dans le tableau parent ? Et puis... Si chaque tampon a sa propre longueur individuelle lorsqu'il est rempli, nous nous retrouverons avec un tableau cubique au lieu d'un tableau 2D, mais ce ne sera même pas un cube, mais une sorte de tétris 3D.
Utilisez la structure comme enveloppe pour un tampon dynamique. Il a été testé - il fonctionne.
 

Pouvez-vous me dire comment connaître l'heure de clôture d'une transaction ?

Je ne le trouve pas dans les propriétés de l'accord.

 
masharov:

Pouvez-vous me dire comment connaître l'heure de clôture d'une transaction ?

Je ne le trouve pas dans les propriétés de l'accord.

La transaction (ordre) n'a pas d'heure de clôture, comme c'était le cas dans MT4. Afin de déterminer la durée de vie d'un "single trade", comme c'était le cas dans MT4, nous devrons analyser les trades d'"ouverture" (IN) et de "clôture" (OUT/INOUT).

Il en va de même pour le poste.

 
Le manuel de référence indique que pour la fonctionPositionGetSymbol() "si aucune position n'est trouvée, une chaîne vide sera renvoyée". Et si c'est le retour de chaînes vides qui doit être suivi, à quoi la valeur retournée par la fonction doit-elle être comparée : à NULL ou à "" (deux guillemets) ?
 
Yedelkin:
Le manuel de référence indique que pour la fonction PositionGetSymbol() "si aucune position n'est trouvée, une chaîne vide sera renvoyée". Et s'il est nécessaire de surveiller le retour des chaînes vides, à quoi doit être comparée la valeur de retour de la fonction : NULL ou "" (deux guillemets) ?
Vous devez utiliser une autre fonction pour vérifier s'il existe une position.
 
Renat:
Vous devez utiliser une autre fonction pour vérifier si la position existe.
Non, le but n'est pas de vérifier s'il y a une position, mais d'appliquer l'opérateur continue lorsqu'une chaîne vide est retournée dans la boucle. J'ai écrit dans un post précédent :"il faut surveiller le retour des chaînes vides", alors qui peut me dire ce qu'il faut comparer ?
Документация по MQL5: Основы языка / Операторы / Оператор продолжения continue
Документация по MQL5: Основы языка / Операторы / Оператор продолжения continue
  • www.mql5.com
Основы языка / Операторы / Оператор продолжения continue - Документация по MQL5
 
Yedelkin:
Non, le but n'est pas de vérifier si la position existe, mais d'appliquer l'opérateur continue lorsqu'une chaîne vide est retournée dans la boucle. J'ai écrit dans un message précédent :"il est nécessaire de suivre le retour des chaînes vides".alors que comparer, qui le dira ?

La section d'aide a un type void et une constante NULL. En général, vous auriez pu le vérifier il y a longtemps :

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   string a=NULL;
   string b="";
   if(a==b)
      Print("Пустая строка и NULL - одно и то же");
   else
      Print("Пустая строка не равна NULL");
  }
//+--
 
Rosh:

L'aide contient une section sur le type void et la constante NULL.

Eh bien, oui, il y a une section. Seulement, cette section ne dit pas exactement comment une chaîne vide est dénotée. L'exemple de la section utilise la variable NULL uniquement pour détecter une chaîne non initialisée.

Quant à l'autocontrôle, la question s'est posée après que le compilateur ait lâché la phrase suivante

switch(PositionGetSymbol(i)!=(NULL || ""))

comme suit :"conversion implicite de 'nombre' en 'chaîne de caractères'", mais la comparaison des valeurs de chaîne de caractères spécifiées séparément n'a pas soulevé d'objection de la part du compilateur. C'est pourquoi j'ai posé la question au lieu de m'énerver avec un raisonnement quasi-théorique sur le "cast to an old type" et d'essayer de simplifier le code.

D'après votre exemple, on peut voir qu'au moins les développeurs de langues utilisent des guillemets doubles sans espace pour désigner une chaîne vide. C'est ce que je voulais savoir. Merci.

 
Yedelkin:

Eh bien, oui, il y a une section. Seulement, cette section ne dit pas exactement comment une chaîne vide est identifiée. L'exemple de la section utilise la variable NULL uniquement pour détecter une chaîne non initialisée.

En ce qui concerne l'auto-test, la question s'est posée après que le compilateur ait prononcé la phrase suivante

Qu'attendiez-vous de cette expression ?

(NULL || "")
Lire les opérations booléennes