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

 
fxsaber:

Есть только те данные, что в opt-файле. Формат доступен.

не хочу читать из тестера из файла, вроде уже сделал что хотел - уникальное имя файла - MD5 входных параметров , примерно так:

string getMD5(const SSaveStruct &inpstr)
{
   const uchar key[1]= {0};
   uchar data[],md5[];
   StructToCharArray(inpstr,data);
   CryptEncode(CRYPT_HASH_MD5, data, key, md5);
   string result = "";
   for(int i = 0; i < ArraySize(md5); i++)
      result += StringFormat("%02x", md5[i]);
   return(result);
}

void SaveInputParam()
{
   SSaveStruct savestruct;
   FillSaveStruct(savestruct);
   string fname = "EA_TST//" + getMD5(savestruct) + ".bin";
   int handle = FileOpen(fname,FILE_WRITE|FILE_COMMON|FILE_BIN);
   FileWriteStruct(handle,savestruct);
}

double OnTester()
{

   if(!IS_OPTIMIZATION)
   {
      SSaveStruct savestruct;
      FillSaveStruct(savestruct);
      Print("fname = " + getMD5(savestruct));
      return(AccountInfoDouble(ACCOUNT_BALANCE));
   }

#define BADTEST() { srand((int)TimeCurrent()); return (-(rand() % 1000)); }
   if(EA_STOP || TesterStatistics(STAT_TRADES) < EA_MIN_TRADEES)  BADTEST();
   SaveInputParam();
   return(AccountInfoDouble(ACCOUNT_BALANCE));
#undef BADTEST
}

файлы пишутся и в  одиночном проходе вижу имя файла :   fname = 04a19580d36f0a749143211b57efbebc

код немного повторяется, но чтобы в оптимизаторе не заполнять структуру с входными параметрами если тест неудачный .... но наверное перепишу, некрасивый код, потом сам не разберусь почему так делал )))
 
Igor Makanu:

есть ли возможность из агента тестера получить номер прохода?


ЗЫ: или нужен уникальный идентификатор от каждого прохода при тестировании для имени файла - хочу интересующие настройки ЕА при тестировании сохранять в файл, но нужно хоть, что то уникальное чтобы имя файла с настройками сформировать

Номер прохода может быть 1024-битный.

Зачем Вам номер прохода, если в этой строке уже есть набор параметров?

 
Igor Makanu:

не хочу читать из тестера из файла, вроде уже сделал что хотел - уникальное имя файла - MD5 входных параметров , примерно так:

файлы пишутся и в  одиночном проходе вижу имя файла :   fname = 04a19580d36f0a749143211b57efbebc

код немного повторяется, но чтобы в оптимизаторе не заполнять структуру с входными параметрами если тест неудачный .... но наверное перепишу, некрасивый код, потом сам не разберусь почему так делал )))

MD5 входных параметров уже посчитан и есть в записи о проходе в opt-файле

 
Slava:

Зачем Вам номер прохода, если в этой строке уже есть набор параметров?

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

Slava:

MD5 входных параметров уже посчитан и есть в записи о проходе в opt-файле

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

что быстрее:

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

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


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

 
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:
так пользуемся

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

Причина обращения: