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

 
Dmitri Custurov:
Как в этом случае разойтись с заказчиком? На нарушение указал, но сделка уже заключена. Отменить кроме как через арбитраж нельзя будет что ли?

Пишите в арбитраж. Я сообщил администрации.

 
Sergey Dzyublik:

Баг MT5(build 2340)  дважды используется один и тот же код: первый проход - успешная компиляция, второй - ошибка компиляции.
Видимо проблемы связаны с кешом генератора шаблонных функций. 
Ошибка исчезает если для шаблонной функции "
void run(const T &ff) заменить передачу по ссылке на передачу по значению "void run(const T ff)".

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

 

Спасибо разработчикам за предоставление функциональности namespace.
Однако почему в MT5 (build 2361) полностью отсутствует поддержка intellisense для пространств имен, даже для глобального через :: и то отсутствует?

В то же время, худо-бедно но имеется поддержка intellisense для статических методов классов.
По этому с пользовательской точки зрения логично возникает вопрос: "Почему бы повторно не использовать код, отвечающий за intellisense в классах, для реализации intellisense для namespace?".

 
Баг МТ5 (build 2361) повторный запуск скрипта на том же чарте, когда первый запуск еще не завершен, приводит к зависанию терминала.

Проблема наблюдается для основного проекта, где выполняются "математические расчеты" - там терминал зависает намертво.
В качестве примера для воспроизведения можно взять следующий код:
#define K 1000
   
void OnStart(){    
   uint start = GetTickCount();
   printf("Start");
   while(GetTickCount() - start < 10*K){
      Sleep(1*K);   
      printf("Progress bar...");
   };
   printf("End");
}


Повторный запуск предложенного скрипта на том же чарте, когда первый запуск еще не завершен, происходит без confirmation message.
Возникает зависание на несколько секунд - отсутствует вывод "Progress bar...", затем устанавливается флаг на терминальный выход и Sleep больше не срабатывает.
Для основного проекта, после зависания на несколько секунд, терминал не развисает вообще - приходится убивать процесс.

 

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


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

 
Igor Makanu:

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

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

 
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 параметров оптимизирую)