Caractéristiques du langage mql4, subtilités et techniques - page 17

 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégies de trading

Caractéristiques du langage mql5, conseils et astuces

fxsaber, 2019.02.20 07:26

Les prix ne sont pas normalisés dans tous les modes Tester !

Pour faire court, il s'agit d'un bogue dans le Testeur.


Je ne sais pas si cela s'applique également au mode Birt.

 

Excusez-moi si c'est hors sujet (je ne peux pas dire que je suis le développement du langage), pourriez-vous expliquer exactement ce que fait cette ligne ?

#property strict

Laissez-moi vous expliquer.

Il existe un script qui compare deux prix (identiques dans MT).

#property strict

void OnStart()
{
   const int Total = OrdersHistoryTotal();
   int Prices1, Prices2;
   
   double open_price, close_price;
   OrderSelect("37027330", SELECT_BY_TICKET, MODE_HISTORY);
   open_price = OrderOpenPrice();
   close_price = OrderClosePrice();

   Print(open_price);
   Print(close_price);
   Print(open_price-close_price);
   
   return;
}

Dans MT, les prix sont égaux, mais la différence n'est pas égale à zéro (comme écrit ci-dessus).

Si cette ligne(#property strict) est supprimée, la différence est nulle.

Pourquoi ?

 
Dmitry Rannev :

Excusez-moi si c'est hors sujet (je ne peux pas dire que je suis le développement du langage), pourriez-vous expliquer ce que fait exactement cette ligne ?

Laissez-moi vous expliquer.

Il existe un script qui compare deux prix (identiques dans MT).

Dans MT, les prix sont égaux, mais la différence n'est pas égale à zéro (comme écrit ci-dessus).

Si cette ligne ( #property strict) est supprimée, la différence est nulle.

Pourquoi ?

"#property strict" n'est utile qu'avec mql4. Avec mql5 c'est inutile, car le mode "strict" est toujours vrai.
 
Alain Verleyen:
"#property strict" n'est utile qu'avec mql4. Avec mql5 c'est inutile car "strict" est toujours vrai.

C'est le MT4 dont nous parlons. Le problème de la normalisation a fait l'objet d'une discussion ci-dessus. Nous essayons de comprendre pourquoi certains prix dans MT4 sont égaux et quand ils sont comparés ne le sont pas. C'est la suite de.

 
Dmitry Rannev:

C'est le MT4 dont nous parlons. Le problème de la normalisation a fait l'objet d'une discussion ci-dessus. Nous essayons de comprendre pourquoi certains prix dans MT4 sont égaux et quand ils sont comparés ne le sont pas. C'est une suite.

Dimitri, ce sujet est usé jusqu'à la corde. Pardonnez-moi si je révèle un secret, mais vous avez des gens comme Kirill alias Programmeur, Sergei ... Je ne dirai pas le nom de famille, "c'est trop célèbre pour le donner" © Ils savent tout...

 
Dmitry Rannev:

Excusez-moi si c'est hors sujet (je ne peux pas dire que je suis le développement du langage), pourriez-vous expliquer exactement ce que fait cette ligne ?

Laissez-moi vous expliquer.

Il existe un script qui compare deux prix (identiques dans MT).

Dans MT, les prix sont égaux, mais la différence n'est pas égale à zéro (comme écrit ci-dessus).

Si cette ligne(#property strict) est supprimée, la différence est nulle.

Pourquoi ?

void OnStart()
{
  double Price1 = DBL_EPSILON;
  double Price2 = 0;

  Print(Price1 - Price2);          // 0 - грубо показывает.
  Print((Price1 - Price2) * 1 e15); // не ноль
}


Le strict n'a aucun effet sur l'égalité. Seulement sur l'impression - le chiffre est soit approximatif, soit plus précis.

 
Dmitry Rannev:

Dans MT, les prix sont égaux, mais la différence n'est pas nulle (comme écrit ci-dessus).

Si cette ligne(#property strict) est supprimée, alors la différence est nulle.

Les nombres de type double ne peuvent pas être vérifiés pour l'égalité (y compris le zéro), nous devons comparer leur différence à la valeur minimale(DBL_EPSILON, FLT_EPSILON, Point).

 
Ilya Malev:

Les nombres de type double ne peuvent pas être vérifiés pour l'égalité (y compris le zéro), vous devez comparer leur différence à la valeur minimale(DBL_EPSILON, FLT_EPSILON, Point).

Ce n'est pas de ça qu'il s'agit.

 
fxsaber:

Il s'agit d'autre chose.

J'ai essayé d'imaginer la cause de la question et je suis arrivé à la conclusion qu'il y avait peut-être des erreurs dans l'algorithme, et pas seulement une question sur l'impression.

 
Ilya Malev:

J'ai essayé d'imaginer la cause du problème et je suis arrivé à la conclusion qu'il y avait peut-être des erreurs dans l'algorithme et pas seulement une question d'impression.

Le problème a été décrit par fxsaber ci-dessus. Nous essayons d'en trouver la cause.

Raison: