Fehler, Irrtümer, Fragen - Seite 288

 

um den Beitrag nicht zu wiederholen. Bitte schauen Sie sich https://www.mql5.com/ru/forum/2547/page1#comment_45265 an.

Was mache ich da falsch? Es scheint dasselbe zu sein wie in dem Artikel. Ich möchte lernen, wie man mit Standardklassen arbeitet. Aber ich scheine es falsch zu machen (.

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

um den Beitrag nicht zu wiederholen. Bitte schauen Sie sich https://www.mql5.com/ru/forum/2547/page1#comment_45265 an.

Was mache ich da falsch? Es scheint dasselbe zu sein wie in dem Artikel. Ich möchte lernen, wie man mit Standardklassen arbeitet. Aber ich scheine es falsch zu machen (.

Dort wird geantwortet.
 

Ein Fehler in der Funktion

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

Wenn Ziffern >= 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();}
//---

Sie gibt aus

ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/10 dblVal: 0.1 strVal: 1.000000000000000000 dblValFromStr: 1
ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/9 dblVal: 0.111111111111111111 strVal: 1.11111111111111 dblValFromStr: 1.111111111111
ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/8 dblVal: 0.125 strVal: 1.250000000000000000 dblValFromStr: 1.25
ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/7 dblVal: 0.1428571428571429 strVal: 1.42857142857143 dblValFromStr: 1.42857142857143
ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/6 dblVal: 0.1666666666666667 strVal: 1.666666666666667 dblValFromStr: 1.66666666667
ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/5 dblVal: 0.2 strVal: 2.000000000000000000 dblValFromStr: 2
ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/4 dblVal: 0.25 strVal: 2.50000000000000 dblValFromStr: 2.5
ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/3 dblVal: 0.333333333333333333 strVal: 3.333333333333333333 dblValFromStr: 3.33333333333333
ERROR von Funktion DoubleToString Ziffern: 14 Wert: 1/2 dblVal: 0.5 strVal: 5.000000000000000000 dblValFromStr: 5
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/10 dblVal: 0.1 strVal: 1.0000000000000 dblValFromStr: 1
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/9 dblVal: 0.11111111111111111111 strVal: 1.1111111111111 dblValFromStr: 1.11111111111
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/8 dblVal: 0.125 strVal: 1.2500000000000 dblValFromStr: 1.25
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/7 dblVal: 0.1428571428571429 strVal: 1.4285714285714 dblValFromStr: 1.4285714285714
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/6 dblVal: 0.1666666666666667 strVal: 1.666666666667 dblValFromStr: 1.6666666667
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/5 dblVal: 0.2 strVal: 2.0000000000000 dblValFromStr: 2
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/4 dblVal: 0.25 strVal: 2.5000000000000 dblValFromStr: 2.5
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/3 dblVal: 0.33333333333333333333 strVal: 3.33333333333333333 dblValFromStr: 3.333333333333333
ERROR von Funktion DoubleToString Ziffern: 13 Wert: 1/2 dblVal: 0.5 strVal: 5.0000000000000 dblValFromStr: 5
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/10 dblVal: 0.1 strVal: 1.000000000000 dblValFromStr: 1
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/9 dblVal: 0.111111111111111111 strVal: 1.111111111111 dblValFromStr: 1.111111111111
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/8 dblVal: 0.125 strVal: 1.250000000000 dblValFromStr: 1.25
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/7 dblVal: 0.1428571428571429 strVal: 1.428571428571 dblValFromStr: 1.428571428571
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/6 dblVal: 0.16666666666667 strVal: 1.6666666666667 dblValFromStr: 1.66666666667
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/5 dblVal: 0.2 strVal: 2.000000000000 dblValFromStr: 2
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/4 dblVal: 0.25 strVal: 2.500000000000 dblValFromStr: 2.5
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/3 dblVal: 0.333333333333333333 strVal: 3.3333333333333333 dblValFromStr: 3.333333333333
ERROR von Funktion DoubleToString Ziffern: 12 Wert: 1/2 dblVal: 0.5 strVal: 5.000000000000 dblValFromStr: 5


BETRIEBSSYSTEM: WIN7

Gebäude: 387

 
BZSP:

Ein Fehler in der Funktion

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

Wenn Ziffern >= 12

Danke, wir werden uns das ansehen.
 

Wie stelle ich die Höhe des Diagramm-Unterfensters ein? über eine Funktion? oder nur über eine Vorlage?

 
dentraf:

Wie stelle ich die Höhe des Diagramm-Unterfensters ein? über eine Funktion? oder nur über eine Vorlage?

Alle Funktionen sind in der Hilfe beschrieben.

Tun Sie es über die Vorlage.

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

Wenn Sie den STRATEGY TESTER standardmäßig ausführen, gibt es eine lustige Sache

auf niedrige Priorität eingestellt ist, muss ich sie jetzt jedes Mal manuell auf mittel ändern.


Vielleicht soll es ja so sein?

 

alexluek:

Vielleicht ist das der Weg, den wir gehen sollten?

Ja, es ist speziell für den Betrieb mehrerer lokaler Agenten im Optimierungsmodus konzipiert.

Der Punkt ist, dass das Testgerät die CPU sehr intensiv nutzt und leicht 100% aller Kerne im System beansprucht. Wenn Sie die Priorität auf "mittel" einstellen, wird die CPU zu 100 % ausgelastet, und selbst das Terminal wird an seine Grenzen stoßen. Besonders schlimm ist die Situation bei Single-Core-Prozessoren.

Aus diesem Grund ist die Standardeinstellung für Agenten im Optimierungsmodus auf niedrige Priorität eingestellt, so dass andere Programme ebenfalls arbeiten können. Wenn ein Computer nicht mit anderen Aufgaben beschäftigt ist, erhalten die Agenten auch bei niedriger Priorität alle CPU-Ressourcen (eine niedrigere CPU-Priorität bedeutet keine direkte Verringerung der Ressourcen).

Höchstwahrscheinlich würden wir die Priorität von "niedrig" auf "unterdurchschnittlich" ändern - dies würde ausreichen, um das Betriebssystem unter Volllast mit lokalen Agenten im Optimierungsmodus reaktionsfähig zu halten.

Es ist wichtig zu beachten, dass bei der Ausführung eines einzelnen Agenten mit mehr als einem Kern, dieser Agent mit "mittlerer" Priorität läuft. Ein einzelner Agent mit zusätzlichen Kernen wirkt sich möglicherweise nicht so stark auf das gesamte System aus.


ps: Sehen Sie sich Ihren Screenshot an - selbst bei niedriger Priorität beträgt die CPU-Last 95%.

 
Renat:

Ja, dies geschieht speziell, um mehrere lokale Agenten im Optimierungsmodus zu betreiben.

....

ps: Sehen Sie sich Ihren Screenshot an - selbst bei niedriger Priorität beträgt die CPU-Last 95%.


Bitte bedenken Sie das. Danke
Grund der Beschwerde: