Утилита для включения-отключения кнопки "Автоматическая торговля" нужна - страница 2

 
Сегодня как раз просили сделать тоже самое почти плюс закрытие всех позиций:
#define VK_CONTROL 0x11 //CTRL key
#define KEY_CODE   'E'

#import "user32.dll"
void  keybd_event(int bVk,int bScan,int dwFlags,int dwExtraInfo);
#import

#include<Trade\Trade.mqh>

//Объект класса CTrade
CTrade trade;

// Объект класса CPositionInfo
CPositionInfo position;

input int StartHour = 9;
input int StopHour  = 23;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Key()
  {
   keybd_event(VK_CONTROL,0,0,0);
   Sleep(10);
   keybd_event(KEY_CODE,0,0,0);
   Sleep(10);
   keybd_event(KEY_CODE,0,2,0);
   Sleep(10);
   keybd_event(VK_CONTROL,0,2,0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime<StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
// закрываем по времени
   if(!TimeSession(StartHour,0,StopHour,0,TimeCurrent()))
     {
      for(int i=0; i<PositionsTotal(); i++)
        {
         if(position.Select(PositionGetSymbol(i)))
           {
            // закрыть открытую позицию по этому символу
            trade.PositionClose(PositionGetSymbol(i));
           }
        }
     }

// включаем по времени
   if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)==0 && TimeSession(StartHour,0,StopHour,0,TimeCurrent())) Key();
// выключаем по времени
   if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED)==1 && !TimeSession(StartHour,0,StopHour,0,TimeCurrent())) Key();

   Comment("\n Enable: ",TerminalInfoInteger(TERMINAL_TRADE_ALLOWED),
           "\n Time: ",TimeCurrent());
  }
//+------------------------------------------------------------------+
 
Andrew Kornishkin:
Спасибо за ответ. Только извините за непросвещённость, может эта ветка для посвящённых и я, будучи не из той касты, не туда попал, но я не разбираюсь в программировании, советниками я умею только пользоваться. Я, как вариант, нашёл полуавтоматическое решение: создал для каждого дня недели свой профиль MT4, в котором по каждой вкладке торгового инструмента нужные часы торговли включены, а ненужные - отключены. Остаётся только на стыке суток вручную переходить на профиль, соответствующий наступающему дню недели. И, как вариант полной автоматизации этого процесса, если это возможно, помог бы советник по автоматическому переключению на заданный профиль в заданный день недели и в заданное время.
 
Как этот код заставить работать?
 

Как в советник превратить?

 
ssv-11:

Как в советник превратить?


Это советник. Ничего превращать не нужно.

 
Evgeny Belyaev:

Это советник. Ничего превращать не нужно.

Евгений, правильно понимаю, что код надо поместить в файл в Metaeditor  и сохранить как советник?

Только в каком формате создавать файл?  Перепробовал все, не получается ничего )) 

Есть где инструкцию прочитать?

 
Egran:

Евгений, правильно понимаю, что код надо поместить в файл в Metaeditor  и сохранить как советник?

Только в каком формате создавать файл?  Перепробовал все, не получается ничего )) 

Есть где инструкцию прочитать?

Metaeditor  это текстовый редактор который может компилировать коды в исполняемый файл. (в отличии от блокнота). В него можно открыть уже существующий код или написать новый, а формат будет автоматом .mq4 или mq5, в зависимости от терминала и вашего желания.

Инструкцию можно открыть в самом Metaeditor 

 
Alexey Viktorov:

Metaeditor  это текстовый редактор который может компилировать коды в исполняемый файл. (в отличии от блокнота). В него можно открыть уже существующий код или написать новый, а формат будет автоматом .mq4 или mq5, в зависимости от терминала и вашего желания.

Инструкцию можно открыть в самом Metaeditor 

Если для себя, а не в Маркет, скачать AutoIt, там легко щелкать по чему угодно на экране.

if(CheckForNewOrder(Symbol(), cmd))
    {
        if(cmd == 0)
            AU3_MouseClick("LEFT", CallX, CallY);
        else
            AU3_MouseClick("LEFT", PutX, PutY);        
    }
 
Для, себя, да. Спасибо за ответы. Буду вникать!
Причина обращения: