Как закрыть все окна чартов терминала при вызове из командной строки (или в конфигурационном файле) ?

 

Всех приветствую.

Давно уже столкнулся с проблемой, что при вызове МТ5 в пакетном режиме быстро увеличивается количество открытых окон чартов. Если их не закрывать - то довольно скоро упираешься в предел, и эксперты перестают запускаться с ошибкой "максимум чартов открыто". 

Вопрос - как в пакетном режиме запуска (из командной строки, или с помощью настройки в конфигурационном файле) запускать Метатрейдер без чартов (с закрытыми чартами)? 

Пока что решил проблему тем, что в пакетном файле перед вызовом терминала очищаю папку профайла NoCharts, а в конфигурационном файле - указываю именно этот профайл. В результате терминал открывается без чартов, и при запуске эксперта на оптимизацию - открываются только нужные чарты.

Но, может, есть более простой способ закрытия, непосредственно обращением к терминалу? 

 
Georgiy Merts:

Всех приветствую.

Давно уже столкнулся с проблемой, что при вызове МТ5 в пакетном режиме быстро увеличивается количество открытых окон чартов. Если их не закрывать - то довольно скоро упираешься в предел, и эксперты перестают запускаться с ошибкой "максимум чартов открыто". 

Вопрос - как в пакетном режиме запуска (из командной строки, или с помощью настройки в конфигурационном файле) запускать Метатрейдер без чартов (с закрытыми чартами)? 

Пока что решил проблему тем, что в пакетном файле перед вызовом терминала очищаю папку профайла NoCharts, а в конфигурационном файле - указываю именно этот профайл. В результате терминал открывается без чартов, и при запуске эксперта на оптимизацию - открываются только нужные чарты.

Но, может, есть более простой способ закрытия, непосредственно обращением к терминалу? 

Попробуйте написать сервис, который закрывает все открытые графики. Сервис запускается только при запуске МТ и соответственно выполняется только один раз.

 
Alexey Viktorov #:

Попробуйте написать сервис, который закрывает все открытые графики. Сервис запускается только при запуске МТ и соответственно выполняется только один раз.

Ну... Решение допустимое. 

Я уже думал написать скрипт на PowerShell, но анализировать открытые приложения... выяснять, что там открыто...

Но, целое дело, аднака...  :)))

Пока что написать команду удаления файлов в папке профиля проще.

 
Georgiy Merts #:

Ну... Решение допустимое. 

Я уже думал написать скрипт на PowerShell, но анализировать открытые приложения... выяснять, что там открыто...

Но, целое дело, аднака...  :)))

Пока что написать команду удаления файлов в папке профиля проще.

Может создать Лигу закрытия чартов? Очень многих трейдеров это беспокоит. Чтобы не было чартов при открытии терминала, а ещё котировок, тоже лишнее
 
Ivan Wise #:
Может создать Лигу закрытия чартов? Очень многих трейдеров это беспокоит. Чтобы не было чартов при открытии терминала, а ещё котировок, тоже лишнее

Не понял. Кто на чём стоял? Выражайтесь яснее.  (с) 

 
Georgiy Merts #:

Ну... Решение допустимое. 

Я уже думал написать скрипт на PowerShell, но анализировать открытые приложения... выяснять, что там открыто...

Но, целое дело, аднака...  :)))

Пока что написать команду удаления файлов в папке профиля проще.

Проще чем написать это?

/******************Service program start function********************/
void OnStart()
 {
  long currChart = ChartNext(0);
  while(currChart >= 0)
   {
    ChartClose(currChart);
    currChart = ChartNext(currChart);
   }
 }/*******************************************************************/

и поместить сюда

Файлы:
 
Alexey Viktorov #:

Проще чем написать это?

и поместить сюда

Вау... 

Век живи - век учись, я отстал, думал, речь о Сервисах Виндовс... 

Спасибо за наводку, действительно, отличный вариант.  Именно так и надо сделать.

Надо почитать про Сервисы MT5.

 
Georgiy Merts #:

Вау... 

Век живи - век учись, я отстал, думал, речь о Сервисах Виндовс... 

Спасибо за наводку, действительно, отличный вариант.  Именно так и надо сделать.

Надо почитать про Сервисы MT5.

Для подтверждения работоспособности я исправил этот сервис

/******************Service program start function********************/
void OnStart()
 {
  long currChart = ChartNext(0);
  while(currChart >= 0)
   {
    //ChartClose(currChart);
    Print(currChart, " : ", ChartSymbol(currChart), " : ", EnumToString(ChartPeriod(currChart)));
    currChart = ChartNext(currChart);
   }
 }/*******************************************************************/

и перезапустил МТ. Вот результат


 
Alexey Viktorov #:

Для подтверждения работоспособности я исправил этот сервис

и перезапустил МТ. Вот результат


Да-да, Алексей, благодарю, как раз то, что надо.  Спасибо. 

Говорю ж - век живи, век учись - дураком помрёшь. 

Так и сделаю. 

Просто я перепутал с виндовс-сервисом, написание такой программы - весьма муторное дело. 

А так - отлично, всё выполняется самим терминалом, и не надо лезть в папки профайлов. Как я и хотел.

 

А вот не получится-ли так, что удаление будет как при удалении ордеров\позиций я не подумал. 

В общем экспериментируйте. Надо это проверять… Может быть лучше сначала в массив засунуть все ID графиков и потом удалять…

 
Alexey Viktorov #:

А вот не получится-ли так, что удаление будет как при удалении ордеров\позиций я не подумал. 

В общем экспериментируйте. Надо это проверять… Может быть лучше сначала в массив засунуть все ID графиков и потом удалять…

Это уже детали, проверить работу можно. 

Сама идея, что закрывать окна надо сервисом МТ5 - вот до этого я не додумался, вобще сервисы "мимо меня" прошли... 

Спасибо еще раз за наводку. 

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