Доступ ко множеству счетов

 

Знаю два способа как автоматически подключаться ко множеству счетов:

1. Через генерацию конфигурационного файла.

2. И способом, который предложил getch в ветке 'Автоматическое сохранение стейтмента с нескольких счетов' (getch, мое почтение и огромное спасибо)

Имеется около 4000 счетов, поэтому 1-й способ заведомо очень долгий и не подходит, а второй предполагает наличие указанных счетов в закладке "Избранное".

Посмотрел утилиткой spy++ анатомию MetaTrader, но не нашел способа, кроме как предложил getch. (может плохо искал)

Как можно добавить автоматом счета из окна "Навигатор-Общие " в "Навигатор-Избранное" или как можно подключиться к счетам минуя "Избранное"

Подскажите, кто знает.

 
Три Login: через WinAPI вызывать окно Login, где менять значение поля "Login", поcле чего давить кнопку "Login".
 
Саш, если эти 4000 счетов на одном сервере, то легче и быстрее через менеджерское api коннектиться. Если счета все у разных брокеров, то способ первый имхо. p.s. в сам терминал в логины можно забить всего 64 счета. больше он не запомнит.
 

to getch: спасибо, попробую.

to Gans-deGlucker: Привет, Миша. Такое количество логинов забивать не пробовал, но человек говорит, что они у него есть в МТ4.... Сегодня поинтересуюсь так ли это. Если действительно так, то либо первый вариант, либо как посоветовал getch.

 
#property copyright "Copyright © 2009, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <WinUser32.mqh>
  
#import "user32.dll"
  int GetParent(int hWnd);
  int GetMenu(int hWnd);
  int GetSubMenu(int hWnd,int nPos);
  int GetMenuItemID(int hMenu,int nPos);
#import

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
  int hwnd=WindowHandle(Symbol(),Period());
  int hwnd_parent,hmenu,hsubmenu,hpos;
//--------------------------------------------------- 
   while(!IsStopped()) {
      hwnd=GetParent(hwnd);
      if(hwnd==0) break;
      hwnd_parent=hwnd;
   }
   Comment("Handle:",hwnd_parent);
   Sleep(2000);
   if (hwnd_parent!=0) {                          // нашли главное окно           
      hmenu=GetMenu(hwnd_parent);                 // нашли хэндл меню главного окна
      Comment("Handle Menu:",hmenu);      
      Sleep(2000);
      hsubmenu=GetSubMenu(hmenu,0);               // нашли хэндл подменю "Файл"
      Comment("Handle SubMenu:",hsubmenu);
      Sleep(2000);
      hpos=GetMenuItemID(hsubmenu,8);             // нашли идентификатор элемента меню "Файл" - "Логин"
      Comment("Handle Position:",hpos," LastError: ",GetLastError());
      Sleep(2000);
   }
   Comment("");
//----
   return(0);
  }
//+------------------------------------------------------------------

Вот скрипт написал, но НЕ получается определить идентификатор элемента меню "Логин", выдает -1.

Подскажите, что я сделал не так?

 
Talex >>:

Вот скрипт написал, но НЕ получается определить идентификатор элемента меню "Логин", выдает -1.

Подскажите, что я сделал не так?

Дескриптор окна ввода номера счета 0х3E9 - Шестнадцатеричная система

Дескриптор окна ввода пароля 0x4C4 - Шестнадцатеричная система

Дескриптор окна ввода сервера 0х3E9 - Шестнадцатеричная система

Дескриптор для галочки "Хранить личную информацию" 0х4FC

Дескриптор кнопки "Логин" = 2885556 - Десятичная система


С кнопкой придется немного повозится, но нажать её более чем реально.


Тема мне тоже интересная, буду ей заниматься через 2-3 дня.

 
HIDDEN писал(а) >>

Дескриптор окна ввода номера счета 0х3E9 - Шестнадцатеричная система

Дескриптор окна ввода пароля 0x4C4 - Шестнадцатеричная система

Дескриптор окна ввода сервера 0х3E9 - Шестнадцатеричная система

Дескриптор для галочки "Хранить личную информацию" 0х4FC

Дескриптор кнопки "Логин" = 2885556 - Десятичная система

С кнопкой придется немного повозится, но нажать её более чем реально.

Тема мне тоже интересная, буду ей заниматься через 2-3 дня.

О, спасибо. А откуда дров..., в смысле дескрипторы? У меня каждый раз (при очередном вызове окна "Логин") они разные.

 
Да и сначала надо как-то получить это окно без помощи рук.
 
Talex >>:

О, спасибо. А откуда дров..., в смысле дескрипторы? У меня каждый раз (при очередном вызове окна "Логин") они разные.

Это дескрипторы элементов, они постоянны.


Вам нужно теперь вставить в нужные элементы нужные значения и нажать кнопку логин. подождать немного и счет должен залогинится.


Я свою реализацию выложу в данной ветке чуть позже.


После запуска тестера стратегий, а конкретно оптимизации тоже через WinAPI, решить задачку с подключением уже не сложно.

Рекомендую к ознакомлению следующие ветки:

https://forum.mql4.com/ru/17146/

https://forum.mql4.com/ru/19401

https://forum.mql4.com/ru/22168

 

Благодарю, пошел пробовать.

 

Киррил, подскажите, как получены дескрипторы элементов и еще :

HIDDEN писал(а) >>

Дескриптор окна ввода номера счета 0х3E9 - Шестнадцатеричная система

Дескриптор окна ввода пароля 0x4C4 - Шестнадцатеричная система

Дескриптор окна ввода сервера 0х3E9 - Шестнадцатеричная система

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