Errores, fallos, preguntas - página 288

 

para no repetir el puesto. Por favor, eche un vistazo a https://www.mql5.com/ru/forum/2547/page1#comment_45265

¿Qué estoy haciendo mal ahí? Parece ser lo mismo que en el artículo. Quiero aprender a trabajar con clases estándar. Pero parece que lo estoy haciendo mal (.

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

para no repetir el puesto. Por favor, eche un vistazo a https://www.mql5.com/ru/forum/2547/page1#comment_45265

¿Qué estoy haciendo mal ahí? Parece ser lo mismo que en el artículo. Quiero aprender a trabajar con clases estándar. Pero parece que lo estoy haciendo mal (.

Contesta allí.
 

Un error en la función

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

Cuando los dígitos >= 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();}
//---

Da

ERROR de la función DoubleToString dígitos: 14 valor: 1/10 dblVal: 0.1 strVal: 1.00000000000000 dblValFromStr: 1
ERROR de la función DoubleToString dígitos: 14 valor: 1/9 dblVal: 0.111111111111 strVal: 1.1111111111 dblValFromStr: 1.1111111111
ERROR de la función DoubleToString dígitos: 14 valor: 1/8 dblVal: 0.125 strVal: 1.25000000000000 dblValFromStr: 1.25
ERROR de la función DoubleToString dígitos: 14 valor: 1/7 dblVal: 0.1428571428571429 strVal: 1.42857142857143 dblValFromStr: 1.42857142857143
ERROR de la función DoubleToString dígitos: 14 valor: 1/6 dblVal: 0.16666666666667 strVal: 1.6666666666667 dblValFromStr: 1.66666666667
ERROR de la función DoubleToString dígitos: 14 valor: 1/5 dblVal: 0.2 strVal: 2.00000000000000 dblValFromStr: 2
ERROR de la función DoubleToString dígitos: 14 valor: 1/4 dblVal: 0.25 strVal: 2.50000000000000 dblValFromStr: 2.5
ERROR de la función DoubleToString dígitos: 14 valor: 1/3 dblVal: 0.33333333333333333333 strVal: 3.33333333333333 dblValFromStr: 3.333333333333
ERROR de la función DoubleToString dígitos: 14 valor: 1/2 dblVal: 0.5 strVal: 5.00000000000000 dblValFromStr: 5
ERROR de la función DoubleToString dígitos: 13 valor: 1/10 dblVal: 0.1 strVal: 1.0000000000000 dblValFromStr: 1
ERROR de la función DoubleToString dígitos: 13 valor: 1/9 dblVal: 0.11111111111111 strVal: 1.111111111 dblValFromStr: 1.111111111
ERROR de la función DoubleToString dígitos: 13 valor: 1/8 dblVal: 0.125 strVal: 1.2500000000000 dblValFromStr: 1.25
ERROR de la función DoubleToString dígitos: 13 valor: 1/7 dblVal: 0.1428571428571429 strVal: 1.4285714285714 dblValFromStr: 1.4285714285714
ERROR de la función DoubleToString dígitos: 13 valor: 1/6 dblVal: 0.16666666666667 strVal: 1.6666666667 dblValFromStr: 1.6666666667
ERROR de la función DoubleToString dígitos: 13 valor: 1/5 dblVal: 0.2 strVal: 2.0000000000000 dblValFromStr: 2
ERROR de la función DoubleToString dígitos: 13 valor: 1/4 dblVal: 0.25 strVal: 2.5000000000000 dblValFromStr: 2.5
ERROR de la función DoubleToString dígitos: 13 valor: 1/3 dblVal: 0.3333333333333333 strVal: 3.3333333333333 dblValFromStr: 3.33333333333
ERROR de la función DoubleToString dígitos: 13 valor: 1/2 dblVal: 0.5 strVal: 5.0000000000000 dblValFromStr: 5
ERROR de la función DoubleToString dígitos: 12 valor: 1/10 dblVal: 0.1 strVal: 1.000000000000 dblValFromStr: 1
ERROR de la función DoubleToString dígitos: 12 valor: 1/9 dblVal: 0.111111111111 strVal: 1.1111111111 dblValFromStr: 1.1111111111
ERROR de la función DoubleToString dígitos: 12 valor: 1/8 dblVal: 0.125 strVal: 1.250000000000 dblValFromStr: 1.25
ERROR de la función DoubleToString dígitos: 12 valor: 1/7 dblVal: 0.1428571428571429 strVal: 1.428571428571 dblValFromStr: 1.428571428571
ERROR de la función DoubleToString dígitos: 12 valor: 1/6 dblVal: 0.166666666667 strVal: 1.66666666667 dblValFromStr: 1.666666667
ERROR de la función DoubleToString dígitos: 12 valor: 1/5 dblVal: 0.2 strVal: 2.000000000000 dblValFromStr: 2
ERROR de la función DoubleToString dígitos: 12 valor: 1/4 dblVal: 0.25 strVal: 2.500000000000 dblValFromStr: 2.5
ERROR de la función DoubleToString dígitos: 12 valor: 1/3 dblVal: 0,333333333333333333 strVal: 3,333333333333 dblValFromStr: 3,3333333333
ERROR de la función DoubleToString dígitos: 12 valor: 1/2 dblVal: 0.5 strVal: 5.000000000000 dblValFromStr: 5


SO: WIN7

Construcción: 387

 
BZSP:

Un error en la función

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

Cuando los dígitos >= 12

Gracias, le echaremos un vistazo.
 

¿Cómo puedo establecer la altura de la subventana del gráfico? si una función? o sólo a través de una plantilla?

 
dentraf:

¿Cómo puedo establecer la altura de la subventana del gráfico? si una función? o sólo a través de una plantilla?

Todas las funciones se describen en la ayuda.

Hazlo a través de la plantilla.

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

Aquí hay una cosa curiosa - cuando se ejecuta el STRATEGY TESTER por defecto

está configurado en prioridad baja, ahora tengo que cambiarlo manualmente a media cada vez.


¿Quizás es así como se supone que debe ser?

 

alexluek:

¿Tal vez sea así como se supone que debe ser?

Sí, está diseñado específicamente para ejecutar múltiples agentes locales en modo de optimización.

La cuestión es que el probador utiliza la CPU de manera muy intensiva y fácilmente toma el 100% de todos los núcleos del sistema. Si dejas la prioridad en "media", la CPU se cargará hasta el 100% e incluso el terminal se quedará sin recursos. La situación es especialmente mala con los procesadores de un solo núcleo.

Por ello, la configuración por defecto de los agentes en modo de optimización es de baja prioridad, lo que permite que otros programas funcionen también. Si un ordenador no está ocupado con otro trabajo, incluso con una prioridad baja, los agentes obtendrán todos los recursos de la CPU (bajar la prioridad de la CPU no significa una reducción directa de los recursos).

Lo más probable es que cambiemos la prioridad de "baja" a "por debajo de la media" - esto sería suficiente para mantener la respuesta del sistema operativo a plena carga con los agentes locales en modo de optimización.

Es importante tener en cuenta que cuando se ejecuta un solo agente y se tiene más de 1 núcleo, este agente se ejecuta con prioridad "media". Un solo agente con núcleos adicionales puede no afectar tanto a todo el sistema.


ps: mira tu captura de pantalla - incluso en baja prioridad la carga de la CPU es del 95%.

 
Renat:

Sí, esto se hace específicamente para ejecutar múltiples agentes locales en modo de optimización.

....

ps: mira tu captura de pantalla - incluso en baja prioridad la carga de la CPU es del 95%.


Por favor, téngalo en cuenta. Gracias
Razón de la queja: