Скачать MetaTrader 5

Можно ли поставить ограничение на количество одновременно работающих функций ?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Justinas Shimkus
179
Justinas Shimkus  

Добрый день.

Ситуация такая - в процессе работы советника, запускается функция, которая кушает много оперативки (выделена в mqh файл). Работает редко, и недолго. Но если одновременно по 3-м валютным парам выполняется эта функция, то терминал крашится. Есть ли возможность как-нибудь поставить в очередь выполнение этой функции от разных советников ?

Уже спасибо. 

Vitaly Muzichenko
7485
Vitaly Muzichenko  
Justinas Shimkus:

Добрый день.

Ситуация такая - в процессе работы советника, запускается функция, которая кушает много оперативки (выделена в mqh файл). Работает редко, и недолго. Но если одновременно по 3-м валютным парам выполняется эта функция, то терминал крашится. Есть ли возможность как-нибудь поставить в очередь выполнение этой функции от разных советников ?

Уже спасибо. 

Возможно нужно переписать функцию, или изменить её логику. Если возможности нет, тогда можно сделать контроль через глобальную переменную терминала, если там начала работать, то писать в глоб.переменную "0", когда отработала - писать "1" 
Justinas Shimkus
179
Justinas Shimkus  
Точно ) Только в моем случае нужен внешний файл, а не глобальная переменная и в нем хранить положение флага. За идею спасибо.
Vitaly Muzichenko
7485
Vitaly Muzichenko  
Justinas Shimkus:
Точно ) Только в моем случае нужен внешний файл, а не глобальная переменная и в нем хранить положение флага. За идею спасибо.

Ну она у вас где-то вызывается, значит можно что-то типа

if(GlobalVariableGet("flag") == 1 && условие выполнения) {
  GlobalVariableSet("flag", 0); // пишем что занято
  // что-то делаем - вызываем функцию с внешнего файла
  // ...
  // что-то сделали
  GlobalVariableSet("flag", 1); // пишем что свободно
 }
Justinas Shimkus
179
Justinas Shimkus  
Да, так даже проще, спасибо большое.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий