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

 
fxsaber:

Что это изменит?

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

вот и предлагаю 

int Array[] = {123};

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

 
Igor Makanu:

насколько я понял задачу (проблему) нельзя хэш исполняемого файла изменять

Вы не поняли задачу.

Советник должен формировать другое название файла, если его EX5 поменялся.

 
fxsaber:

Вы не поняли задачу.

Советник должен формировать другое название файла, если его EX5 поменялся.

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

вот такие манипуляции проводить:

эксперт link_library.mq5 :

#import "lib.ex5"
int value_array();
#import
//+------------------------------------------------------------------+
int OnInit()
  {
   Print("Array = ",value_array());
   return(INIT_SUCCEEDED);
  }

библиотека lib.mq5 :

int Array[] = {123};
 int value_array() export
   {
    return(Array[0]);
   }
в MQL библиотека по сути мало чем отличается от исполняемого файла - нет ограничений, может и в файл писать самостоятельно и  ... все может как MQL - программа
 
Igor Makanu:

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

вот такие манипуляции проводить:

эксперт link_library.mq5 :

библиотека lib.mq5 :

в MQL библиотека по сути мало чем отличается от исполняемого файла - нет ограничений, может и в файл писать самостоятельно и  ... все может как MQL - программа

Не понимаю, почему не ясна задача: Если изменился советник - изменить название файла.

 
fxsaber:

Не понимаю, почему не ясна задача: Если изменился советник - изменить название файла.

Вообще не понимаю проблемы.
Включить как ресурс исходник самого советника .mq5 файл и брать от него хеш.

 
Комментарии, не относящиеся к этой теме, были перенесены в "Любые вопросы новичков по MQL4, помощь и обсуждение по алгоритмам и кодам".
 
Sergey Dzyublik:

Вообще не понимаю проблемы.
Включить как ресурс исходник самого советника .mq5 файл и брать от него хеш.

Так доступа (байты для вычисления хеша) к включенному EX5 не будет.

 
fxsaber:

Так доступа (байты для вычисления хеша) к включенному EX5 не будет.

Все работает:

#resource "\\Experts\\Advisors\\ExpertMACD.ex5" as uchar ex5_data[];


А при чем тут ex5, если вы говорили про изменение кода, которое лучше ослеживать по .mq5?
Такое впечатление что вы сами не понимаете, что в конечном итоге вам надо.
 
Sergey Dzyublik:

А при чем тут ex5, если вы говорили про изменение кода, которое лучше ослеживать по .mq5?

Такое впечатление что вы сами не понимаете, что в конечном итоге вам надо.

Ну так написал же, куда же подробнее?

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2019.04.23 06:15

Есть такой советник

void OnDeinit( const int )
{
  int Array[] = {123};
  
  FileSave((string)MQLInfoInteger(MQL_PROGRAM_HASH), Array);
}


Когда делаю проход, пишется файл с одним и тем же названием. Это правильно.


Затем перекомпилирую, прописав вместо 123 число 456.

После этого каждый проход будет писать соответствующий один и тот же файл, но уже с другим названием.


Вот такой функционал и нужно как-то реализовать. Т.е. если EX5 поменялся, то и создаваемые им названия файлов меняются.


ЗЫ Использование макроса __DATETIME__ не подходит.


Есть mq5, который создает файл с Name1. Меняю какое-нибудь число в mq5. Должен генерироваться Name2. Поменял еще что-нибудь в коде - Name3. И т.д.

 
fxsaber:

Ну так написал же, куда же подробнее?


Есть mq5, который создает файл с Name1. Меняю какое-нибудь число в mq5. Должен генерироваться Name2. Поменял еще что-нибудь в коде - Name3. И т.д.

Подключите исходник в формате .mq5 как ресурс и читайте хеш от содержимого исходника.
Если поменяете исходник, то при компиляции автоматом подтянется новый исходник в качестве ресурса и будет рассчитан новый хеш.
Что тут сложного?

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