Автоматическая смена аккаунта для доступа к MT4/MT5

 

Интересует вопрос организации автоматической смены аккаунта для доступа к разным торговым счетам. Смена должна происходить через заданный интервал.

К сожалению на портале решения точного не нашел (плохо искал?), есть такое решение https://www.mql5.com/ru/code/10447 , но оно подходит в случае, если пароль сохранен в терминале, а у меня ситуация такая, что могут меняться сервера, пароли и логины.

Как их вводить? Есть у кого какие идеи?

Пересканирование сервера
Пересканирование сервера
  • голосов: 3
  • 2011.09.08
  • Martingeil1
  • www.mql5.com
1) Скрипт "Пересканирование" положить в папку expert->scripts скомпилировать, вешать на график его не обязательно это сделает советник. 2) Советник "Запуск скрипта советником" положить в папку expert затем скомпилировать, вешаете советник на график евро/доллара советник установит скрипт на график, на других символах графика советник не...
 

Был где-то скрипт, я точно помню.

Использует внешние DLL, эмулирует "ручную" смену аккаунта.

Вот, нашел. Если переработать (другие идентификаторы поставить) - то и для МТ5 можно сделать по тому же принципу.

https://www.mql5.com/ru/code/13903

Подключение к торговому счету из MQL4 (протестировано на билде 880)
Подключение к торговому счету из MQL4 (протестировано на билде 880)
  • голосов: 21
  • 2015.12.23
  • Sergey Lukin
  • www.mql5.com
Со времени выхода MetaTrader 4 build 880 программное заполнение полей диалогового окна логина усложнилось. Эта библиотека скрывает сложные вещи и предлагает простой в использовании API для входа в аккаунт MetaTrader 4 из скрипта/эксперта MQL4. Любой ваш вклад в улучшение будет оценен.
 
George Merts:

Был где-то скрипт, я точно помню.

Использует внешние DLL, эмулирует "ручную" смену аккаунта.

Вот, нашел. Если переработать (другие идентификаторы поставить) - то и для МТ5 можно сделать по тому же принципу.

https://www.mql5.com/ru/code/13903


Спасибо, сейчас попробую протестировать.

 

Сделал рабочий вариант для MT4, может кому пригодится

//+------------------------------------------------------------------+
//|                                            mql4-auth-example.mq4 |
//|                                     Copyright 2015, Sergey Lukin |
//+------------------------------------------------------------------+
#property strict
#include <mql4-auth.mqh>

void OnStart()
  {
//--- удаление всех созданных объектов 
   bool DelAllObjects=true;
   if(DelAllObjects==true)
     {
      int obj_total=ObjectsTotal();
      PrintFormat("Всего%d объектов",obj_total);
      for(int i=obj_total-1;i>=0;i--)
        {
         string name=ObjectName(i);
         PrintFormat("Объект%d:%s",i,name);
         ObjectDelete(name);
        }
     }

   int arrName[2]=  //Заполняем массив логинами
     {
      111,
      222,
     };
   string arrPass[2]=  //Заполняем массив паролями
     {
      "qwerty",
      "qwerty2",
     };
   int Razriv=0;
   int Raznica=20;
   for(int i=0; i<2; i++)//i равно числу аккаунтов
     {
      Print("arrName=",arrName[i],"arrPass=",arrPass[i]);
      if(auth((string)arrName[i],arrPass[i],"RoboForex-FixCent"))//указываем последним значением брокера/сервер, но можно так же создать массив
        {
         Print("1 Hooray, I found the login dialog, inserted credentials, now wait until MT4 connects :)");
         Sleep(2000);
         Razriv=Razriv+Raznica;
         info(Razriv);
        }
      else
        {
         Print("1 Sorry, I could not even find the Login dialog... Is your MT4 older than v880 or something?");
        }
     }
  }
//+------------------------------------------------------------------+
//|Функция запроса вывода информации на экран                        |
//+------------------------------------------------------------------+
int info(int x)
  {
   double Balance=AccountInfoDouble(ACCOUNT_BALANCE);
   double Eguity=AccountInfoDouble(ACCOUNT_EQUITY);
   long    Name=AccountInfoInteger(ACCOUNT_LOGIN);
   double Proc=0.0;
   if(Balance>0 && Eguity>0) Proc=Eguity/Balance*100;
   Label((string)x,//Название
         0,      //Окно
         30,     //X
         x,      //Y
         "Name:"+(string)Name+" Balance="+DoubleToString(Balance,2)+" Eguity="+DoubleToString(Eguity,2)+" %="+DoubleToString(Proc,2),
         10,//Размер шрифта
         Yellow,//Цвет шрифта
         CORNER_LEFT_UPPER,
         ANCHOR_LEFT_UPPER
         );
   return(0);
  }
//+------------------------------------------------------------------+
//|Функция вывода информации на экран                                |
//+------------------------------------------------------------------+
void Label(string _name,int _window,int _x,int _y,string _text,int _font,color _color,int corner,int anchor)
  {
   ObjectDelete(0,_name);
   ObjectCreate(0,_name,OBJ_LABEL,_window,0,0);
   ObjectSetInteger(0,_name,OBJPROP_CORNER,corner);
   ObjectSetInteger(0,_name,OBJPROP_XDISTANCE,_x);
   ObjectSetInteger(0,_name,OBJPROP_YDISTANCE,_y);
   ObjectSetText(_name,_text,_font,"Arial",_color);
   ObjectSetInteger(0,_name,OBJPROP_ANCHOR,anchor);
  }
//+------------------------------------------------------------------+

Конечно информация в виде объектов на экране не есть замечательно, поэтому, может кто поможет сделать вывод информации в табличном виде? Я с таблицами совсем не работал :(

 

Пропал мой пост.

Вопрос в том, как управлять звуком в MT4/MT5, а именно отключать и включать бряканье при разрыве связи?

 
Aleksey Vyazmikin:

Пропал мой пост.

Вопрос в том, как управлять звуком в MT4/MT5, а именно отключать и включать бряканье при разрыве связи?


В настройках есть отключение 


 
Galina Bobro:

В настройках есть отключение 



Да, конечно есть, поэтому я и спросил, как им управлять! Разрыв связи - важная информация, но когда просто надо промониторить свои счета и происходит бряконье 60 раз (зависит от счетов), то это раздражает.

 
Sergey Basov:

Двойной щелчок мыши на колокольчике - включение/выключение звука для нужного события.


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

Нужно автоматизировать процесс включения/выключения звука.

 
Aleksey Vyazmikin:

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

Нужно автоматизировать процесс включения/выключения звука.


Для начала нужно определить критерии, по которым программа сможет изменять включение/отключение звука. Ведь не может же она знать, нужно Вам сейчас  отключение или включение звука. Будут критерии, станет возможна и автоматизация. А то в том описании, которое Вы даете, прослеживается только один критерий: "хочу".

 
Ihor Herasko:

Для начала нужно определить критерии, по которым программа сможет изменять включение/отключение звука. Ведь не может же она знать, нужно Вам сейчас  отключение или включение звука. Будут критерии, станет возможна и автоматизация. А то в том описании, которое Вы даете, прослеживается только один критерий: "хочу".


Какой Вам ещё критерий? Не понимаю. Я сам пропишу включение/выключение, мне нужно знать, как это сделать. А так - выключать в начале исполнения скрипта и включать в конце перед окончанием работы скрипта.

 
Aleksey Vyazmikin:

Какой Вам ещё критерий? Не понимаю. Я сам пропишу включение/выключение, мне нужно знать, как это сделать. А так - выключать в начале исполнения скрипта и включать в конце перед окончанием работы скрипта.


Я не понимаю, какая разница, где именно настраивать: в указанном меню или в меню той программы, которая это будет делать? Ведь все равно требуется действие от человека. В чем тогда автоматизация?

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