Erreurs, bugs, questions - page 288

 

afin de ne pas répéter le post. Veuillez consulter le site https://www.mql5.com/ru/forum/2547/page1#comment_45265

Qu'est-ce que je fais de mal ? Ça semble être la même chose que dans l'article. Je veux apprendre à travailler avec des classes standard. Mais il semble que je m'y prenne mal (.

Обсуждение статьи "Как использовать торговые классы Стандартной библиотеки при написании советника"
Обсуждение статьи "Как использовать торговые классы Стандартной библиотеки при написании советника"
  • www.mql5.com
Обсуждение статьи "Как использовать торговые классы Стандартной библиотеки при написании советника".
 
Trolls:

afin de ne pas répéter le post. Veuillez consulter le site https://www.mql5.com/ru/forum/2547/page1#comment_45265

Qu'est-ce que je fais de mal ? Ça semble être la même chose que dans l'article. Je veux apprendre à travailler avec des classes standard. Mais il semble que je m'y prenne mal (.

Répondu là.
 

Une erreur dans la fonction

string  DoubleToString(
   double  value,      // число
   int     digits=8    // кол-во знаков после запятой
   );

Lorsque les chiffres >= 12

void testDoubleToString()
  {
   int i,j,cn=11,digits=DBL_DIG+1;
   double dblVal,dblValFromStr,pres=0.1;
   string dblStr;
   Print("Start testDoubleToString cn=",cn," digits=",digits);
   for(i=1; i<=digits; i++)
     {
      for(j=2; j<cn; j++)
        {
         dblVal = 1.0/j;
         dblStr = DoubleToString(1.0/j, i);
         dblValFromStr=StringToDouble(dblStr);
         if(MathAbs(dblValFromStr-dblVal)>pres)
           {
            Print("ERROR from function DoubleToString digits: ",i," value: 1/",j," dblVal: ",
               dblVal," strVal: ",dblStr," dblValFromStr: ",dblValFromStr);
           }
        }
      pres*=0.1;
     }
  }
//---
void OnStart(){testDoubleToString();}
//---

Il donne

ERREUR de la fonction DoubleToString digits : 14 value : 1/10 dblVal : 0.1 strVal : 1.00000000000000 dblValFromStr : 1
ERROR de la fonction DoubleToString chiffres : 14 valeur : 1/9 dblVal : 0.1111111111111111 strVal : 1.11111111111111 dblValFromStr : 1.11111111111111
ERREUR de la fonction DoubleToString digits : 14 value : 1/8 dblVal : 0.125 strVal : 1.25000000000000 dblValFromStr : 1.25
ERROR de la fonction DoubleToString chiffres : 14 valeur : 1/7 dblVal : 0.1428571428571429 strVal : 1.42857142857143 dblValFromStr : 1.42857142857143
ERROR de la fonction DoubleToString chiffres : 14 valeur : 1/6 dblVal : 0.166666666666666667 strVal : 1.666666666666667 dblValFromStr : 1.6666666666667
ERREUR de la fonction DoubleToString digits : 14 value : 1/5 dblVal : 0.2 strVal : 2.00000000000000 dblValFromStr : 2
ERROR de la fonction DoubleToString digits : 14 value : 1/4 dblVal : 0.25 strVal : 2.50000000000000 dblValFromStr : 2.5
ERROR de la fonction DoubleToString chiffres : 14 valeur : 1/3 dblVal : 0.3333333333333333 strVal : 3.3333333333333333 dblValFromStr : 3.3333333333333333
ERROR de la fonction DoubleToString digits : 14 value : 1/2 dblVal : 0.5 strVal : 5.00000000000000 dblValFromStr : 5
ERREUR de la fonction DoubleToString digits : 13 value : 1/10 dblVal : 0.1 strVal : 1.0000000000000 dblValFromStr : 1
ERROR de la fonction DoubleToString chiffres : 13 valeur : 1/9 dblVal : 0.111111111111111111 strVal : 1.1111111111111 dblValFromStr : 1.11111111111
ERREUR de la fonction DoubleToString digits : 13 value : 1/8 dblVal : 0.125 strVal : 1.2500000000000 dblValFromStr : 1.25
ERROR de la fonction DoubleToString chiffres : 13 valeur : 1/7 dblVal : 0.1428571428571429 strVal : 1.4285714285714 dblValFromStr : 1.4285714285714
ERROR de la fonction DoubleToString chiffres : 13 valeur : 1/6 dblVal : 0.1666666666666667 strVal : 1.666666666667 dblValFromStr : 1.666666666667
ERREUR de la fonction DoubleToString digits : 13 value : 1/5 dblVal : 0.2 strVal : 2.0000000000000 dblValFromStr : 2
ERROR de la fonction DoubleToString digits : 13 value : 1/4 dblVal : 0.25 strVal : 2.5000000000000 dblValFromStr : 2.5
ERROR de la fonction DoubleToString chiffres : 13 valeur : 1/3 dblVal : 0.3333333333333333333333 strVal : 3.33333333333333333 dblValFromStr : 3.333333333333333
ERROR de la fonction DoubleToString digits : 13 value : 1/2 dblVal : 0.5 strVal : 5.0000000000000 dblValFromStr : 5
ERREUR de la fonction DoubleToString digits : 12 value : 1/10 dblVal : 0.1 strVal : 1.000000000000 dblValFromStr : 1
ERREUR de la fonction DoubleToString digits : 12 value : 1/9 dblVal : 0.1111111111111111 strVal : 1.111111111111 dblValFromStr : 1.111111111111
ERREUR de la fonction DoubleToString digits : 12 value : 1/8 dblVal : 0.125 strVal : 1.250000000000 dblValFromStr : 1.25
ERROR de la fonction DoubleToString chiffres : 12 valeur : 1/7 dblVal : 0.1428571428571429 strVal : 1.428571428571 dblValFromStr : 1.428571428571
ERROR de la fonction DoubleToString chiffres : 12 valeur : 1/6 dblVal : 0.1666666666666667 strVal : 1.6666666666667 dblValFromStr : 1.66666666667
ERREUR de la fonction DoubleToString digits : 12 value : 1/5 dblVal : 0.2 strVal : 2.000000000000 dblValFromStr : 2
ERROR de la fonction DoubleToString digits : 12 value : 1/4 dblVal : 0.25 strVal : 2.500000000000 dblValFromStr : 2.5
ERROR de la fonction DoubleToString chiffres : 12 valeur : 1/3 dblVal : 0.3333333333333333 strVal : 3.33333333333333 dblValFromStr : 3.33333333333333
ERROR de la fonction DoubleToString digits : 12 value : 1/2 dblVal : 0.5 strVal : 5.000000000000 dblValFromStr : 5


SYSTÈME D'EXPLOITATION : WIN7

Construction : 387

 
BZSP:

Une erreur dans la fonction

string  DoubleToString(
   double  value,      // число
   int     digits=8    // кол-во знаков после запятой
   );

Lorsque les chiffres >= 12

Merci, nous allons y jeter un coup d'œil.
 

Comment puis-je définir la hauteur de la sous-fenêtre du graphique ? si une fonction ? ou seulement à travers un modèle ?

 
dentraf:

Comment puis-je définir la hauteur de la sous-fenêtre du graphique ? si une fonction ? ou seulement à travers un modèle ?

Toutes les fonctions sont décrites dans l'aide.

Faites-le par le biais du modèle.

 
В классе CArray #include <Arrays\Array.mqh> 
забыли прописать виртуальные методы Reserve()и Resize() 
 

Voici une chose amusante - lorsque vous exécutez le TESTEUR DE STRATÉGIES par défaut.

est réglé sur une priorité faible, je dois maintenant le changer manuellement en priorité moyenne à chaque fois.


Peut-être que c'est comme ça que c'est censé être ?

 

alexluek:

Peut-être que c'est comme ça que ça doit être ?

Oui, il est spécifiquement conçu pour faire fonctionner plusieurs agents locaux en mode optimisation.

Le fait est que le testeur utilise le CPU de manière très intensive et prend facilement 100% de tous les cœurs du système. Si vous laissez la priorité "moyenne", le CPU sera chargé à 100% et même le terminal manquera de ressources. La situation est particulièrement mauvaise avec les processeurs à un seul cœur.

C'est pourquoi le paramètre par défaut des agents en mode d'optimisation est la faible priorité, ce qui permet aux autres programmes de fonctionner également. Si un ordinateur n'est pas occupé par d'autres tâches, même avec une faible priorité, les agents obtiendront toutes les ressources du processeur (l'abaissement de la priorité du processeur ne signifie pas une réduction directe des ressources).

Le plus souvent, nous ferions passer la priorité de "faible" à "inférieure à la moyenne" - cela suffirait à maintenir la réactivité du système d'exploitation à pleine charge avec des agents locaux en mode optimisation.

Il est important de noter que lorsqu'un seul agent est exécuté et qu'il possède plus d'un cœur, cet agent fonctionne avec une priorité "moyenne". Un agent unique avec des cœurs supplémentaires peut ne pas affecter autant l'ensemble du système.


ps : regardez votre capture d'écran - même en basse priorité la charge du CPU est de 95%.

 
Renat:

Oui, ceci est fait spécifiquement pour exécuter plusieurs agents locaux en mode optimisation.

....

ps : regardez votre capture d'écran - même en basse priorité la charge du CPU est de 95%.


Veuillez le garder à l'esprit. Merci
Raison: