Questions d'un "mannequin - page 69

 
rlx:

Tout est converti correctement et sans erreurs

Dans la section"Référence MQL5 / Notions de base du langage / Types de données / Conversion de type", deux choses sont mentionnées :

1) La conversion long=>double peut entraîner une perte de précision ;

2) le type datetime est autorisé au lieu du type long (ils prennent 8 octets chacun).

J'en arrive à la conclusion que, dans l'idéal, la conversion datetime =>double peut également entraîner une perte de précision. Mais je ne peux pas donner d'exemple.

rlx:

Pourquoi ne pas stocker les dates dans des tampons indic......or de type double?

Beaucoup de points sont ajoutés, ou une sorte de référence apparaît.

Il est plus simple de mettre un espace supplémentaire entre les deux mots : "tampons indicateurs" (deux espaces).

 
Yedelkin:

Dans la section"Guide de référence MQL5 / Notions de base du langage / Types de données / Conversion de type ", deux choses sont mentionnées :

1) La conversion long=>double peut entraîner une perte de précision ;

2) le type datetime est autorisé au lieu du type long (ils prennent 8 octets chacun).

J'en arrive à la conclusion que, dans l'idéal, la conversion datetime =>double peut également entraîner une perte de précision. Mais je ne peux pas donner d'exemple.

Il est plus facile de mettre un espace supplémentaire entre deux mots : "tampons indicateurs" (deux espaces).

Rédigez un simple test de conversion et vous verrez par vous-même. Et tu pourras le dire au reste d'entre nous plus tard.

 
Vladix:

Écrivez un test de transformation simple et vous verrez par vous-même. Et tu pourras le dire à tous les autres plus tard.

Avez-vous une réponse substantielle ?

Un "test de conversion simple" a déjà été donné par rlx. Il semble fonctionner correctement. Les doutes basés sur le matériel de référence sont exposés ci-dessus. S'il existe un exemple de conversion incorrecte date-heure =>double, veuillez le demander.

 
Yedelkin:

Y a-t-il une réponse substantielle ?

Un "test de conversion simple" a déjà été donnépar rlx. Il semble fonctionner correctement. Les doutes basés sur le matériel de référence sont indiqués ci-dessus. S'il existe un exemple de conversion incorrecte datetime =>double, veuillez me l'envoyer.

void OnStart()
  {   
   double vDbl = 1.7976931348623158 e+308;
   datetime vTime = (datetime)vDbl;
   
   Print((double)vTime);  
  }

2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018

Voici un exemple de cas où des problèmes peuvent survenir, mais ce n'est certainement pas votre cas.

 
Vladix:

2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018

Voici un exemple de cas où des problèmes peuvent survenir, mais ce n'est certainement pas votre cas.

Félicitations ! Vivre et apprendre !
 
Vladix:

2011.09.25 16:24:38 test (EURUSD,H1) -9.223372036854776e+018

Voici un exemple où il pourrait y avoir un problème, mais ce n'est certainement pas votre cas.

Ce n'est pas un exemple très correct, car l'imbécile dit "glass cock" pendant 20 minutes (il ne s'agit pas de vous mais de ceux qui vont l'utiliser).

La valeur de la date actuelle est 1316816136 ces 10 chiffres, c'est 40 ans, la mantisse double a 16 chiffres,

Par conséquent, le dépassement du double de mantis et la conversion incorrecte subséquente de la date en double se produiront dans 6*40=240 ans.

Je pense que nous aurons le temps de l'utiliser.

 
Yedelkin:
Spas ! On vit et on apprend longtemps !

J'ai maintenant mis au point un exemple juste pour vous. Le résultat est le suivant :

le type datetime est défini jusqu'au 31.12.3000 23:59:59, il est32535215999

le type double est défini jusqu'à1,7976931348623158e+308

Il s'avère que lors de la conversion de la valeur maximale possible de datetime en double, il reste une marge admissible dans le nombre de chiffres significatifs.

On peut donc en conclure qu'il fonctionnera correctement dans tous les cas.

Urain:

Cet exemple n'est pas très correct, car il est dit à un imbécile avec une bite en verre pendant 20 minutes.

Ce n'est pas une bonne analogie.

C'est juste un exemple de la nécessité de vérifier les valeurs limites des valeurs lorsque l 'on donne des types, juste à titre d'information. Mais encore une fois, ce n'est pas le cas.

 

Les calculs précédents, je ne les ai pas faits correctement, plus précisément ici : 15 chiffres sont utilisés, car si le 16ème est présent, il y a une erreur de conversion.

   long i,l;double d;
   for(i=0;i<999999999999999;i+=365*86400){d=(double)i;l=(long)d;if(i!=l)break;}
   Print("до ",(1970+i/(365*86400))," года datetime в double преобразуется верно");

jusqu'à 31711762 ans la conversion de la date en double est correcte.

Donc nous dormons bien jusqu'à la 31 millionième année.

 

Appel de fonctions importées de la bibliothèque ex5.

Veuillez expliquer. Lire https://www.mql5.com/ru/docs/runtime/imports

Les bibliothèques système (DLL) sont chargées selon les règles du système d'exploitation. Si la bibliothèque est déjà chargée (par exemple, par un autre Expert Advisor et même par un autre terminal client fonctionnant en parallèle), l'appel va à la bibliothèque déjà chargée.

Comment les bibliothèques ex5 sont-elles chargées ?Si la bibliothèque est déjà chargée (par exemple, par un autre Expert Advisor, et même par un autre terminal client, fonctionnant en parallèle),

Pour le test, j'ai créé la bibliothèque

lib.mq5.

#property library
int      i=0;

int Get(void) export {return(i++);}

Compiler lib.mq5 en lib.ex5

Conseiller expert créé

expert.mq5

#import "lib.ex5"
  int Get(void);
#import
void OnTick()
  {
   Print(Get());
  }

Je l'ai compilé.

J'ai mis le conseiller expert sur l'EURUSD.

Il imprime

0

1

2

3

4

5

Mettre un Expert Advisor (optionnel) sur GBPUSD

Imprimés

6 --- du conseiller expert EURUSD

0 --- de GBPUSD Expert Advisor.

7 --- du conseiller expert EURUSD

1 --- du conseiller GBPUSD.

8 --- du conseiller EURUSD

2 --- du conseiller GBPUSD.

C'est-à-dire qu'une autre copie de la bibliothèque lib.ex5 est téléchargée pour le conseiller expert GBPUSD.

Quelqu'un sait-il comment imprimer

6 --- du conseiller expert EURUSD

7 --- de GBPUSD Expert Advisor.

8 --- de EURUSD Expert Advisor.

9 --- du conseiller GBPUSD.

10 --- Conseiller EURUSD

11 --- du conseiller GBPUSD.

Utiliser uniquement les capacités de MT5

PS// Ou peut-être que je dois brancher la bibliothèque d'une manière spéciale.

///// J'ai besoin que cette bibliothèque ex5 soit chargée une fois.

Документация по MQL5: Программы MQL5 / Вызов импортируемых функций
Документация по MQL5: Программы MQL5 / Вызов импортируемых функций
  • www.mql5.com
Программы MQL5 / Вызов импортируемых функций - Документация по MQL5
 

Bonjour. Pourriez-vous me dire. Pourquoi les ordres et les transactions ont-ils un ticket mais pas les positions ?

Et quelle est la différence entre un ticket et un identifiant ?