Ошибки, баги, вопросы - страница 288

 

что бы не повторять пост. Посмотрите пожалуйста https://www.mql5.com/ru/forum/2547/page1#comment_45265

что я там не правильно делаю. вроде все как в статье. Хочу научиться работать с этими стандартными классами. Но что то не так видно делаю (( 

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

что бы не повторять пост. Посмотрите пожалуйста https://www.mql5.com/ru/forum/2547/page1#comment_45265

что я там не правильно делаю. вроде все как в статье. Хочу научиться работать с этими стандартными классами. Но что то не так видно делаю (( 

Ответил там.
 

Ошибка в функции

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

При digits >= 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();}
//---

У меня выдает

ERROR from function DoubleToString digits: 14 value: 1/10 dblVal: 0.1 strVal: 1.00000000000000 dblValFromStr: 1
ERROR from function DoubleToString digits: 14 value: 1/9 dblVal: 0.1111111111111111 strVal: 1.11111111111111 dblValFromStr: 1.11111111111111
ERROR from function DoubleToString digits: 14 value: 1/8 dblVal: 0.125 strVal: 1.25000000000000 dblValFromStr: 1.25
ERROR from function DoubleToString digits: 14 value: 1/7 dblVal: 0.1428571428571429 strVal: 1.42857142857143 dblValFromStr: 1.42857142857143
ERROR from function DoubleToString digits: 14 value: 1/6 dblVal: 0.1666666666666667 strVal: 1.66666666666667 dblValFromStr: 1.66666666666667
ERROR from function DoubleToString digits: 14 value: 1/5 dblVal: 0.2 strVal: 2.00000000000000 dblValFromStr: 2
ERROR from function DoubleToString digits: 14 value: 1/4 dblVal: 0.25 strVal: 2.50000000000000 dblValFromStr: 2.5
ERROR from function DoubleToString digits: 14 value: 1/3 dblVal: 0.3333333333333333 strVal: 3.33333333333333 dblValFromStr: 3.33333333333333
ERROR from function DoubleToString digits: 14 value: 1/2 dblVal: 0.5 strVal: 5.00000000000000 dblValFromStr: 5
ERROR from function DoubleToString digits: 13 value: 1/10 dblVal: 0.1 strVal: 1.0000000000000 dblValFromStr: 1
ERROR from function DoubleToString digits: 13 value: 1/9 dblVal: 0.1111111111111111 strVal: 1.1111111111111 dblValFromStr: 1.1111111111111
ERROR from function DoubleToString digits: 13 value: 1/8 dblVal: 0.125 strVal: 1.2500000000000 dblValFromStr: 1.25
ERROR from function DoubleToString digits: 13 value: 1/7 dblVal: 0.1428571428571429 strVal: 1.4285714285714 dblValFromStr: 1.4285714285714
ERROR from function DoubleToString digits: 13 value: 1/6 dblVal: 0.1666666666666667 strVal: 1.6666666666667 dblValFromStr: 1.6666666666667
ERROR from function DoubleToString digits: 13 value: 1/5 dblVal: 0.2 strVal: 2.0000000000000 dblValFromStr: 2
ERROR from function DoubleToString digits: 13 value: 1/4 dblVal: 0.25 strVal: 2.5000000000000 dblValFromStr: 2.5
ERROR from function DoubleToString digits: 13 value: 1/3 dblVal: 0.3333333333333333 strVal: 3.3333333333333 dblValFromStr: 3.3333333333333
ERROR from function DoubleToString digits: 13 value: 1/2 dblVal: 0.5 strVal: 5.0000000000000 dblValFromStr: 5
ERROR from function DoubleToString digits: 12 value: 1/10 dblVal: 0.1 strVal: 1.000000000000 dblValFromStr: 1
ERROR from function DoubleToString digits: 12 value: 1/9 dblVal: 0.1111111111111111 strVal: 1.111111111111 dblValFromStr: 1.111111111111
ERROR from function DoubleToString digits: 12 value: 1/8 dblVal: 0.125 strVal: 1.250000000000 dblValFromStr: 1.25
ERROR from function DoubleToString digits: 12 value: 1/7 dblVal: 0.1428571428571429 strVal: 1.428571428571 dblValFromStr: 1.428571428571
ERROR from function DoubleToString digits: 12 value: 1/6 dblVal: 0.1666666666666667 strVal: 1.666666666667 dblValFromStr: 1.666666666667
ERROR from function DoubleToString digits: 12 value: 1/5 dblVal: 0.2 strVal: 2.000000000000 dblValFromStr: 2
ERROR from function DoubleToString digits: 12 value: 1/4 dblVal: 0.25 strVal: 2.500000000000 dblValFromStr: 2.5
ERROR from function DoubleToString digits: 12 value: 1/3 dblVal: 0.3333333333333333 strVal: 3.333333333333 dblValFromStr: 3.333333333333
ERROR from function DoubleToString digits: 12 value: 1/2 dblVal: 0.5 strVal: 5.000000000000 dblValFromStr: 5


OS: WIN7

Build: 387

 
BZSP:

Ошибка в функции

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

При digits >= 12

Спасибо, будем смотреть.
 

Как установить высоту подокна чарта? если функция? или только через шаблон?

 
dentraf:

Как установить высоту подокна чарта? если функция? или только через шаблон?

 

Все функции описаны в справке.

Делайте через шаблон. 

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

Вот прикол - при запуске ТЕСТЕРА СТРАТЕГИЙ по умолчанию

стоит низкий приоритет, теперь вручную каждый раз менять нужно на средний.


Может так и положено?

 

alexluek:

Может так и положено?

Да, это сделано специально для запуска множественных локальных агентов в режиме оптимизации.

Дело в том, что тестер весьма интенсивно использует процессор и легко забирает 100% всех ядер в системе. Если оставить приоритет "средний", то фактически CPU будет загружен на 100% и даже терминалу будет не хватать ресурсов. Особенно плоха ситуация с одноядерными процессорами.

Именно поэтому по дефолту для агентов в режиме оптимизации стоит низкий приоритет, что дает возможность и другим программам работать. Если же компьютер не занят другой работой, то даже при низком приоритете агенты будут получать все ресурсы процессора (уменьшение приоритета CPU не означает прямого уменьшения ресурсов).

Скорее всего мы изменим приоритет с "низкого" на "ниже среднего" - этого будет достаточно для сохранения отзывчивости операционки при полной нагрузке локальными агентами в режиме оптимизации. 

Важно отметить, что при запуске одиночного агента и наличии более 1 ядра, этот агент запускается со "средним" приоритетом. Одиночный агент при наличии дополнительных ядер не так сильно может повлиять на работу всей системы.


ps: посмотрите на свой скриншот - даже при низком приоритете загрузка процессора 95%.

 
Renat:

Да, это сделано специально для запуска множественных локальных агентов в режиме оптимизации.

....

ps: посмотрите на свой скриншот - даже при низком приоритете загрузка процессора 95%.


запомним на заметочку. Спасибки