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

Igor Makanu:

хочу удачные проходы оптимизатора сразу в файл настроек ЕА сбрасывать и при запуске ЕА вместо .set загружать файл .bin автоматически - нужно для одновременной работы нескольких ТС

боролся почти 3 месяца за скорость работы оптимизации, считаю что этого добился, поэтому встречный вопрос:

что быстрее:

1. из оптимизатора прочитать  opt-файл с  MD5 ? 

2.  или посчитать моим кодом MD5 


подозреваю, что быстрее посчитать, тем более все входные параметры использую внутри кода как массив структур (около 40 параметров оптимизирую)

MD5 считать быстрее.

Если Вы не собираетесь использовать opt-файл в дальнейшем, то считайте MD5

Если собираетесь использовать, то лучше использовать уже посчитанный MD5, так как Ваш расчёт может не совпасть (и скорее всего не совпадёт) с нашим

Slava:

MD5 считать быстрее.

Если Вы не собираетесь использовать opt-файл в дальнейшем, то считайте MD5

Если собираетесь использовать, то лучше использовать уже посчитанный MD5, так как Ваш расчёт может не совпасть (и скорее всего не совпадёт) с нашим

Спасибо!

не собираюсь использовать opt-файл 

ЗЫ: пару недель назад я искал возможность инициализации MathSrand() из тестера  https://www.mql5.com/ru/forum/1111/page2657#comment_15165819

было бы не плохо получать uchar[] с MD5 (ну или string) в агенте тестера - это уникальное значение, можно и MathSrand() инициализировать и вот мне уникальное имя файла захотелось, дайте Ваш  MD5 в TesterStatistics() 

Sergey Dzyublik:
Баг MT5(build 2323), один и тот же шаблонный объект B<int> можно создать после объекта класса B<void*>, но если сделать это перед, то возникает ошибка компиляции.
Возможно причина в  работе кеша генератора шаблонных классов.

Спасибо за сообщение, исправлено

Как вы пользуетесь макросами?

Ужас. Ошибка при компиляции.

Маленький скрипт:

void OnStart()
  {
   #define m 1000;
   ulong n_yes=3*m;  //Тут всё хорошо
   ulong n_no=(3*m); //Тут ошибка: ';' - unexpected token	test2.mq5	27	18
  }
Сборка 2361, последняя на данный момент.
Aliaksandr Hryshyn:

Как вы пользуетесь макросами?

так пользуемся
#define m 1000;
Igor Makanu:
так пользуемся

Там разница в наличии скобок.

Sergey Dzyublik:
Баг МТ5(build 2323),
внутри шаблонной функции, переданный указатель в рамках операции явного приведения типа ведет себя как класс, вызывая, соответственно, ошибку компиляции:

Спасибо за сообщение, исправлено

Aliaksandr Hryshyn:

Там разница в наличии скобок.

   ulong n_yes=3*1000;; ok  
   ulong n_no=(3*1000;); ne ok


Aliaksandr Hryshyn:

Там разница в наличии скобок.

дело Ваше, но могли бы и проверить прежде чем писать

Баг МТ5 (build 2361) очередная проблема в приоритетах вызовов перегруженных шаблонных функций в сравнении с поведением в С++.
В МТ5 ошибка компиляции "ambiguous call to overloaded function", в С++ - все ок.
С++ online (https://onlinegdb.com/Sy8cqdFr8);

template<typename _Tp>
struct It_wrapper{
   _Tp p;
};

template<typename _Tp>
struct It_g : public It_wrapper<_Tp>{};


template<typename _It, typename _Tp>
int __test_print(const It_wrapper<_It> &it, int n, const _Tp &value){
   Print(it.p);
   return 0;
};

template<typename _It> 
int test_print(const It_wrapper<_It> &it, int n, const int value){
   return __test_print(it, n, value);
}    

template<typename _It, typename _ValueType>                                                                                                    
int test_print(const It_wrapper<_It> &it, int n, const _ValueType &value){                                                              
   return __test_print(it, n, value);                                                                                                     
}   
  
   
void OnStart(){
   It_g<int> it;
   It_g<string> it_s;
   
   it.p = 4;
   it_s.p = "test";
   
   const int n = 10;
   test_print(it, 5, n);          // Compile Error: 'test_print' - ambiguous call to overloaded function
   test_print(it_s, 5, n);        // Compile Error: 'test_print' - ambiguous call to overloaded function
};


int main(){
   OnStart();
   return 1;
};