Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Добавляй наш канал в друзья и следи за новостями!
diabolo
13
diabolo 2016.03.15 05:17 

Собственно все просто, работаю во-внешнем редакторе, собираю из коммандной строки.

Какой надо послать сигнал работающему терминалу о том, что индикатор или советник перекомпелированы и их надо перезагрузить (так как это делает metaeditor).

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

LRA
321
LRA 2016.03.15 14:20  

Терминал запускается из командного файла (в папке терминала, 3 строки, сюда же добавить командную строку компиляции) пусть будет Term.cmd:

start terminal.exe /wait
pause 123
term

В терминале советник создает на графике кнопку, при нажатии на которую терминал прекращает работу. Или просто закрыть терминал, он тут же запустится... Можно еще сюда же включить команду принудительного закрытия терминала, что-то видел такое.


создание кнопки смотри тему Программирование функциональных кнопок  Вот текст скрипта, закрывающего терминал - нашел где-то здесь. Переделать в советник.

//+------------------------------------------------------------------+
//| Находит дескриптор главного окна и закрывает терминал            |
//+------------------------------------------------------------------+
//#property copyright "Copyright © 2006, MetaQuotes Software Corp."
//#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
#property strict
 
//+------------------------------------------------------------------+
//| Функция выполняется при запуске скрипта                          |
//+------------------------------------------------------------------+
void OnStart()
{
   // Дескриптор окна графика, на который брошен скрипт
   int hwnd=WindowHandle(Symbol(),Period());
   int hwnd_parent=0;

   while(!IsStopped())      // Поиск главного окна
   {
      hwnd=GetParent(hwnd); // Дескриптор предыдущего окна
      if(hwnd==0) break;    // Если предыдущий отсутствует
      hwnd_parent=hwnd;     // Запомнить
   }

//   if(hwnd_parent!=0)       
      PostMessageA(hwnd_parent,WM_CLOSE,0,0);
} 
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий