mishelbb
mishelbb

 
Уровень 3

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 1528



РЕКОМЕНДУЮ



Модификация советника «Auto Trader» для включения/выключения кнопки АВТОТОРГОВЛЯ

Здравствуйте, хочу попросить Вас несколько изменить сов.«Auto Trader»http://www.opentraders.ru/downloads/1018/… пробовал сам, но увы, знаний, практики и опыта пока маловато, добился того, что он только включает, притом на постоянку и вообще не выключается пока его самого либо не отключишь, в настройках, либо не удалишь.
ТЗ
1.Добавить локальное время с возможностью выбора 1/2(в роботе только терминальное).
2.Сделать возможным, отдельно, только включение(1) или только выключение кнопки(2) и как сейчас, общий режим(3).
3.Учесть такой момент по п.2, режимы должны выполняться только один раз(Вкл.(1) или Выкл.(2) и всё, работу закончил, до следующего наступления указанного времени), а вот общий режим(3), сделать возможным выключение ранее указанного в настройках времени Выкл.(ну т.е., что бы если до выключения по настройкам его отключат, либо другой сов., либо юзер, включать, пытаться включать, снова не нужно, т.е., считать как работу завершённой до следующего наступления времени включения Вкл.).
4.Задержку исполнения в сек. оставляем обязательно…
AutoTrader.mq4 (4 Kb)
  • 0
  • Просмотров: 488
  • 12 марта 2020, 06:31
  • mishelbb
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник-помощник безубыток
Следующая запись в группе  
Панель торговли
10 марта 2020
12 марта 2020

Комментарии (12)

+
0
на 24-е
avatar

  29  AM2 Сообщений: 10548 - Андрей

  • 12 марта 2020, 17:29
+
0
… ага, понял, заранее признателен…
avatar

  3  mishelbb Автор Сообщений: 16 - mishelbb

  • 12 марта 2020, 19:19
+
0
п.1. сделал а 2,3 объясняйте подробнее, со скринами желательно:


//+------------------------------------------------------------------+
//|                                                   AutoTrader.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#include <WinUser32.mqh>

#define PAUSE      10
#define VK_CONTROL 0x11 //CTRL key
#define KEY_CODE   'E'

extern int Slip         = 30;       // реквот
extern int StartHour    = 0;        // час начала торговли
extern int StartMin     = 30;       // минута начала торговли
extern int EndHour      = 23;       // час окончания торговли
extern int EndMin       = 30;       // минута окончания торговли
extern int Times        = 0;        // 0-терминальное 1-локальное

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePositions()
  {
   bool c;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType() == OP_BUY)
            c=OrderClose(OrderTicket(), OrderLots(), Bid, Slip, Blue);
         if(OrderType() == OP_SELL)
            c=OrderClose(OrderTicket(), OrderLots(), Ask, Slip, Red);
         Sleep(1000);
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Key()
  {
   keybd_event(VK_CONTROL,0,0,0);
   Sleep(PAUSE);
   keybd_event(KEY_CODE,0,0,0);
   Sleep(PAUSE);
   keybd_event(KEY_CODE,0,2,0);
   Sleep(PAUSE);
   keybd_event(VK_CONTROL,0,2,0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Times==0)
      t=TimeCurrent();
   else
      t=TimeLocal();

// включение кнопки если выключена в заданное время
   if(!IsTradeAllowed() && TimeSession(StartHour,StartMin,EndHour,EndMin,t))
     {
      Key();
     }
// отключение кнопки если включена когда время вышло
   if(IsTradeAllowed() && !TimeSession(StartHour,StartMin,EndHour,EndMin,t))
     {
      ClosePositions();
      Key();
     }

   Comment("\n Time Current: ",TimeCurrent(),
           "\n Time Local: ",TimeLocal());
  }
//+------------------------------------------------------------------+

avatar

  29  AM2 Сообщений: 10548 - Андрей

  • 19 марта 2020, 20:17
+
0
Здравствуйте Андрей, огромное спасибо за работу, у меня, уже, подвижки есть… По п.2.3., я сделал два варианта Вашей работы, файлы прилагаю, вместо скринов.
1.Мне нужно всё это связать в одно целое(сам пока ещё«слабоват»).
2.Добавить возможность переключения режимов работы по аналогии со временем(локальное/терминальное), ну, т.е., если 0 то общий режим(ВКЛ.по времени и ВЫКЛ.по времени),1 то только ВКЛ. и 2 только ВЫКЛ, соответственно… вот как то так вижу, и сейчас и далее примного благодарен...
//+------------------------------------------------------------------+
//|                                                   AutoTrader.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#include <WinUser32.mqh>

#define PAUSE      10
#define VK_CONTROL 0x11 //CTRL key
#define KEY_CODE   'E'

extern int Slip         = 30;       // реквот
extern int StartHour    = 0;        // час начала торговли
extern int StartMin     = 30;       // минута начала торговли
extern int Times        = 0;        // 0-терминальное 1-локальное

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Times(int aStartHour,int aStartMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePositions()
  {
   bool c;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType() == OP_BUY)
            c=OrderClose(OrderTicket(), OrderLots(), Bid, Slip, Blue);
         if(OrderType() == OP_SELL)
            c=OrderClose(OrderTicket(), OrderLots(), Ask, Slip, Red);
         Sleep(1000);
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Key()
  {
   keybd_event(VK_CONTROL,0,0,0);
   Sleep(PAUSE);
   keybd_event(KEY_CODE,0,0,0);
   Sleep(PAUSE);
   keybd_event(KEY_CODE,0,2,0);
   Sleep(PAUSE);
   keybd_event(VK_CONTROL,0,2,0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Times==0)
      t=TimeCurrent();
   else
      t=TimeLocal();

// включение кнопки если выключена 
   if(!IsTradeAllowed() && !Times(StartHour,StartMin,t))
     {
      Key();
     }

   Comment("\n Time Current: ",TimeCurrent(),
           "\n Time Local: ",TimeLocal());
  }
//+------------------------------------------------------------------+  
                                                                        
                                                                        
//+------------------------------------------------------------------+
//|                                                   AutoTrader.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#include <WinUser32.mqh>

#define PAUSE      10
#define VK_CONTROL 0x11 //CTRL key
#define KEY_CODE   'E'

extern int Slip         = 30;       // реквот
extern int EndHour      = 23;       // час окончания торговли
extern int EndMin       = 30;       // минута окончания торговли
extern int Times        = 0;        // 0-терминальное 1-локальное

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

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

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Times(int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime)
     {
      //--- переход через полночь
      if(aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ClosePositions()
  {
   bool c;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType() == OP_BUY)
            c=OrderClose(OrderTicket(), OrderLots(), Bid, Slip, Blue);
         if(OrderType() == OP_SELL)
            c=OrderClose(OrderTicket(), OrderLots(), Ask, Slip, Red);
         Sleep(1000);
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Key()
  {
   keybd_event(VK_CONTROL,0,0,0);
   Sleep(PAUSE);
   keybd_event(KEY_CODE,0,0,0);
   Sleep(PAUSE);
   keybd_event(KEY_CODE,0,2,0);
   Sleep(PAUSE);
   keybd_event(VK_CONTROL,0,2,0);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Times==0)
      t=TimeCurrent();
   else
      t=TimeLocal();

// отключение кнопки если включена когда время вышло
   if(IsTradeAllowed() && !Times(EndHour,EndMin,t))
     {
      ClosePositions();
      Key();
     }

   Comment("\n Time Current: ",TimeCurrent(),
           "\n Time Local: ",TimeLocal());
  }
//+------------------------------------------------------------------+
avatar

  3  mishelbb Автор Сообщений: 16 - mishelbb

  • 20 марта 2020, 09:26
+
+1
avatar

  29  AM2 Сообщений: 10548 - Андрей

  • 20 марта 2020, 20:40
+
0
… ага, спасибо огромное, на мой взгляд не заменимая вещь, что на автомате, что полуавтомате, как у меня, да и вообще всегда пригодится, мало ли… спасибо.
avatar

  3  mishelbb Автор Сообщений: 16 - mishelbb

  • 21 марта 2020, 03:42
+
0
Андрей, здравствуйте, обрисовалась проблема с переходом за полночь, не корректно рассчитывает время, когда полные сутки наступили(GMT, по терминалу, локальное...)всё нормально.., а вот в тот момент когда идёт «разнобой», чё попало получается.Пробовал по всякому, и в сове и на конпе, результат — тот же… посмотрите пожалуйста, если не обременительно…
avatar

  3  mishelbb Автор Сообщений: 16 - mishelbb

  • 23 марта 2020, 03:59
+
0
Андрей, здравствуйте, обрисовалась проблема с переходом за полночь, не корректно рассчитывает время, когда полные сутки наступили(GMT, по терминалу, локальное...)всё нормально.., а вот в тот момент когда идёт «разнобой», чё попало получается


функция времени не моя. брал готовую с сайта мкл.
avatar

  29  AM2 Сообщений: 10548 - Андрей

  • 23 марта 2020, 21:30
+
0
… понятно.
avatar

  3  mishelbb Автор Сообщений: 16 - mishelbb

  • 24 марта 2020, 03:00
+
0
… а заменить на Вашу, если есть, возможно???
avatar

  3  mishelbb Автор Сообщений: 16 - mishelbb

  • 24 марта 2020, 03:02
+
0
свою не писал. есть кимовская еще
avatar

  29  AM2 Сообщений: 10548 - Андрей

  • 24 марта 2020, 18:05
+
0
… давайте попробуем её… может будет толк???
avatar

  3  mishelbb Автор Сообщений: 16 - mishelbb

  • 24 марта 2020, 18:14

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари