Скачать MetaTrader 5

Выключение работы советников автоматически через MQL

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Roman Starostin
2025
Roman Starostin  

Подскажите, как я могу через код индюка/совы настроить отключение галочки "Разрешить автоматическую торговлю", скажем в 2 часа дня? (хотя условие не играет роли).

Читал где то, что обычными силами MQL это невозможно (поправьте, если это не так). Может быть у кого то есть открытый код примера, как это работает через WinAPI или т.п.?


Alexandr Gavrilin
37036
Alexandr Gavrilin  
Roman Starostin:

Подскажите, как я могу через код индюка/совы настроить отключение галочки "Разрешить автоматическую торговлю", скажем в 2 часа дня? (хотя условие не играет роли).

Читал где то, что обычными силами MQL это невозможно (поправьте, если это не так). Может быть у кого то есть открытый код примера, как это работает через WinAPI или т.п.?


гугл "AutoTradeManager — хозяин советников"
а вообще решение с кодом тут на форуме.
Roman Starostin
2025
Roman Starostin  
Alexandr Gavrilin:
гугл "AutoTradeManager — хозяин советников"
а вообще решение с кодом тут на форуме.
Спасибо, но мне бы код "пощупать" или, хотя бы функцию эту назовите, что нажатие кнопки вызывает ))
Dmitriy Gizlyk
14052
Dmitriy Gizlyk  
Посмотри здесь https://www.mql5.com/ru/articles/1903
Управление терминалом MetaTrader с помощью DLL
Управление терминалом MetaTrader с помощью DLL
  • 2015.07.21
  • Galina Bobro
  • www.mql5.com
В данной статье рассматривается управление элементами интерфейса MetaTrader с использованием вспомогательной DLL-библиотеки на примере изменения настроек рассылки Push-сообщений. К статье приложен исходный код библиотеки и пример скрипта.
Dmitriy Gizlyk
14052
Dmitriy Gizlyk  
А еще можно создать средствами mql в указанное впемя посаздовать теплейты графиков с советниками, а затем закрыть график: нет графика - нет советника. А когда будет время запуска, отрываем графики и вешаем сохраненный темплейт, который загрузит стоявшие советники и индикаторы.
Vladimir Zubov
5325
Vladimir Zubov  
А может кто знает "чудо", как наоборот запретить ручную торговлю в терминале ? 
Dmitriy Gizlyk
14052
Dmitriy Gizlyk  
Выключить терминал. :)
Roman Starostin
2025
Roman Starostin  
Статью я эту читал, но вот Delphi я не знаю ))
У Alexandr Gavrilin в советнике это отлично примеряется, и без dll, глобальных и записи в файл. 
Поделитесь же секретом )))
Roman Starostin
2025
Roman Starostin  

На самом деле, товарищи, тут нет ничего сложного, и даже отдельную dll не нужно создавать. Всего лишь подключиться к стандартной библиотеке Windows: user32.dll и терминала: WinUser32.mqh

Скрипт включения/выключения во вложении.

з.ы. нет ничего зазорного бесплатно делиться наработками с коллегами

Dmitry Fedoseev
46494
Dmitry Fedoseev  
Roman Starostin:

На самом деле, товарищи, тут нет ничего сложного, и даже отдельную dll не нужно создавать. Всего лишь подключиться к стандартной библиотеке Windows: user32.dll и терминала: WinUser32.mqh

Скрипт включения/выключения во вложении.

з.ы. нет ничего зазорного бесплатно делиться наработками с коллегами

Это же кнопка управление кнопкой "Советники" с панели инструментов терминала. А изначально вроде как вопрос был про контролы в окне настроек терминала.

Но ход мысли правильный - можно без лишних dll, только через  user32.dll

Alexandr Gavrilin
37036
Alexandr Gavrilin  
#include <WinUser32.mqh>

#import "user32.dll"
int  GetParent(int hwnd);
int  GetAncestor(int hWnd,// Идентификатоp окна_
                 int gaFlags);  // Уровень окна от текущего окна (1, 2, 3___)_
#import

void ExpertEnabled(bool Switch)
  {
   string a_copyright="http://sovetnikov.net";

   int HandlWindow=WindowHandle(Symbol(),Period());
   int HandlMT4;

   bool bAutoTrade=TerminalInfoInteger(TERMINAL_TRADE_ALLOWED); //текущее состояние кнопки автотрейд

   if(Switch==true)
     {
      if(!bAutoTrade)
        {
         HandlMT4=GetAncestor(HandlWindow,2);
         Print("on trade");
         SendMessageA(HandlMT4,WM_COMMAND,33020,0);
        }

        }else{

      if(bAutoTrade)
        {
         HandlMT4=GetAncestor(HandlWindow,2);
         Print("off trade");
         SendMessageA(HandlMT4,WM_COMMAND,33020,0);
        }
     }

  }
у меня решение точно такое же, нового тут с выключением кнопки и не придумано.
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий