Erreurs, bugs, questions - page 1168

 
artmedia70:

OK, vous l'avez ;)

Je ne comprends pas ce qui n'est pas clair.

Double tronque les données, vous ne pouvez donc pas transférer directement les données longues vers double. Mais les deux sont de 8 octets chacun, donc vous pouvez transférer sans perte en utilisant simplement double comme conteneur, ce que j'ai fait dans l'exemple.

 
TheXpert:

Je ne comprends pas ce qui n'est pas clair.

Double tronque les données, vous ne pouvez donc pas transférer directement les données longues vers double. Mais les deux sont de 8 octets chacun, donc vous pouvez transférer sans perte en utilisant simplement double comme conteneur, ce que j'ai fait dans l'exemple.

Andrey, je n'ai pas compris le format de stockage et d'affichage en GV du terminal. Il semblait montrer l'ID du graphique, mais il montre 0.
 
artmedia70:
Andrey, je n'ai pas compris le format de stockage et d'affichage dans le GV du terminal. Il semblait montrer l'ID du graphique, mais il affiche 0.

GV montrera quelque chose ressemblant à des déchets en apparence, ces "déchets" se transformeront en ID de carte après la conversion inverse.

Le duble a son propre format de données, lorsque l'on rentre le long, on met le format duble et on l'utilise comme 8 octets de mémoire.

 
TheXpert:

GV montrera quelque chose ressemblant à un déchet en apparence, ce "déchet" se transformera en graphique ID après la conversion inverse.

Le double a son propre format de données, lorsque nous rentrons le double, nous mettons le format du double et l'utilisons simplement comme 8 octets de mémoire.

Oui, je m'en suis déjà rendu compte, merci.
 
J'ai remarqué que la mise à jour d'une bibliothèque ou de ressources branchées sur un autre script (indicateur) entraîne la recompilation de ce dernier et le rechargement du terminal. Pas de demande ! Est-ce un bug ou une fonctionnalité ? P.S. Il s'agit de MT4.
 
artmedia70:

C'est plutôt une question :

Recherche d'un GV existant du terminal par son nom. Grâce à lui, l'ID du graphique sur lequel l'EA fonctionne est transmis à l'indicateur. L'indicateur est suspendu à un autre symbole. C'est-à-dire que je veux passer à l'indicateur l'ID du graphique sur lequel le conseiller expert est exécuté. Je le cherche comme ça :

C'est ce que dit le terminal :


J'ai essayé de lire la variable. Je l'ai mis directement dans la chaîne et je l'ai mis dans le journal, ainsi que dans des variables de différents types - tout cela est identique. Il y a deux différences.

Qu'est-ce qu'il y a de mal à ça ?

Lisez ici le paragraphe "Conversion de données de structures simples" de https://www.mql5.com/ru/docs/basis/types/casting.

Exactement votre cas. Les doublets ont une précision beaucoup plus faible en _nombre_ de caractères que les longs. C'est pourquoi vous obtenez ce résultat avec une simple affectation.

Mais vous pouvez utiliser pleinement les 64 bits d'une variable globale pour stocker _n'importe quelle information de 64 bits de long (comme les chaînes courtes de 8 octets de long, sans parler des longues).

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
J'ai rencontré le problème suivant. Après avoir redémarré le terminal, l'indicateur renvoie des valeurs "étranges" provenant d'un autre horizon temporel lorsqu'il est appelé depuis l'EA.
Le Conseiller Expert est sur M2, les données de l'indicateur sont prises sur M3.
1) Il y a un redémarrage du terminal à 14h40 :
PE 0 14:39:50.524 Terminal
MD 0 14:40:06.009 Terminal MetaTrader 5 Alfa-Forex x64 build 930 démarré
II 0 14:40:06.586 Terminal OpenCL non trouvé, installer le dernier pilote OpenCL pour de meilleures performances
JO 0 14:40:07.257 Experts expert FX_Money_Flow_v1_06 (EURUSD,M2) chargé avec succès
Expert Advisor écrit les valeurs de l'indicateur sur la dernière et l'avant-dernière barre :
OF 0 14:40:11.540 FX_Money_Flow_v1_06 (EURUSD,M2) La valeur de l'indicateur TF1 : -1.#QNAN -1.#QNAN
déjà sur la barre suivante, les données sont correctes :
NJ 0 14:41:46.622 FX_Money_Flow_v1_07 (EURUSD,M2) valeur de l'indicateur TF1 : -0.02798411604597126 -0.04893498839583753
2) Deuxième redémarrage à 19:55 :
CO 0 19:55:06.918 Terminal
RO 0 19:55:28.399 Terminal MetaTrader 5 Alfa-Forex x64 build 930 démarré
OP 0 19:55:28.992 Terminal OpenCL non trouvé, installer le dernier pilote OpenCL pour de meilleures performances
RD 0 19:55:29.507 experts expert FX_Money_Flow_v1_07 (EURUSD,M2) chargé avec succès
Encore la même chanson :
PQ 0 19:55:38.168 FX_Money_Flow_v1_07 (EURUSD,M2) valeur de l'indicateur TF1 : -1.#QNAN -1.#QNAN

Mais il ne fonctionne pas toujours correctement :

KF 0 23:59:51.987 FX_Money_Flow_v1_07 (EURUSD,M2) Valeur du facteur Indicateur TF1 : -1.#QNAN -1.#QNAN


Le graphique M3 est ouvert à ce moment-là et il y a un indicateur qui montre tout correctement :
(la différence de temps entre le terminal et les journaux est de 5 heures, la capture d'écran fait référence au deuxième redémarrage)
Dossiers :
 
OBJ_LABEL ne semble pas supporter l'UNICODE dans MT4 ? J'ai modifié la valeur à la fois par programme et à partir de la boîte de dialogue des propriétés de l'étiquette : le symbole est inséré et affiché correctement dans la boîte de dialogue, mais sur le graphique, il apparaît comme un point d'interrogation ( ?). La police est unicode, et dans le dialogue des propriétés de l'étiquette, elle est correctement sélectionnée dans la liste déroulante des polices.
 
stringo:

Lisez ici le paragraphe "Conversion des données des types de structures simples" de https://www.mql5.com/ru/docs/basis/types/casting.

C'est exactement votre cas. Les doublets ont une précision beaucoup plus faible en _nombre_ de caractères que les longs. C'est pourquoi vous obtenez ce résultat avec une simple affectation.

Mais vous pouvez utiliser pleinement les 64 bits de la variable globale pour stocker _n'importe quelle information de 64 bits de long (comme des chaînes courtes de 8 octets de long, sans parler des longues).

Oui, je l'ai lu, merci.
 
Veuillez expliquer la situation suivante. J'ai un indicateur multi-devises dont les valeurs ne changent pas en fonction du graphique auquel il est attaché - il calcule les valeurs pour les instruments spécifiés et n'est pas connecté avec la fenêtre actuelle. Je trace manuellement des lignes de support et de résistance sur cet indicateur. Maintenant, le truc : si je fais glisser un autre outil de l'aperçu du marché dans la fenêtre, l'apparence de l'indicateur reste la même et les lignes disparaissent. Si vous ouvrez la boîte de dialogue Liste d'objets, ces objets y sont toujours répertoriés. Les valeurs des points de terminaison (dates et valeurs) restent les mêmes (c'est-à-dire qu'elles devraient être visibles aux mêmes endroits) - c'est compréhensible, elles n'ont pas été modifiées. Cependant, les lignes ne sont pas visibles. Si vous faites ensuite glisser l'ancien outil qui se trouvait à l'origine sur la fenêtre, les lignes redeviennent visibles. Quel est le problème ?
Raison: