Подключиться — через терминал.
Скрипт для логина лежал в кодо-базе, поищите.
Подключиться — через терминал.
Скрипт для логина лежал в кодо-базе, поищите.
Спасибо.
Если можно подключаться через терминал, но не руками, а прогой, то это решает проблему. Что делать дальше я знаю.
Но!
Искал там в первую очередь. Увы, Абсолютно ничего похожего. Задавал поисковую фразу во всех возможных комбинациях - безрезультатно, все не то.
Просмотреть же все в ручном режиме - на это и жизни не хватит. Тем более что мне уже 62 - осталось не так много ;)
Спасибо.
Если можно подключаться через терминал, но не руками, а прогой, то это решает проблему. Что делать дальше я знаю.
Но!
Искал там в первую очередь. Увы, Абсолютно ничего похожего. Задавал поисковую фразу во всех возможных комбинациях - безрезультатно, все не то.
Просмотреть же все в ручном режиме - на это и жизни не хватит. Тем более что мне уже 62 - осталось не так много ;)
https://www.mql5.com/ru/search#!keyword=login
https://www.mql5.com/ru/code/16049
Еще у себя накопал:
// Переменное подключение к указанному количеству торговых счетов // в закладке Избранное окна Навигатор #property show_inputs #include <WinUser32.mqh> extern int AccountsCount = 2; // Количество счетов в закладке Избранное окна Навигатор extern bool SaveStatement = false; // true - сохранять отчет, false - не сохранять extern int Pause = 15; // Пауза между переключениями торговых счетов extern int RoundPause = 30; #import "user32.dll" int GetParent( int hWnd ); int GetDlgItem( int hDlg, int nIDDlgItem ); int GetLastActivePopup( int hWnd ); #import #define VK_HOME 0x24 #define VK_DOWN 0x28 #define VK_ENTER 0x0D #define PAUSE 1000 void start() { if ( !IsDllsAllowed() ) { Alert( "DLLs not alllowed!" ); return; } while ( !IsStopped() ) { for ( int i = 1; i <= AccountsCount; i++ ) { string dots = "..."; Comment( "Changing Account: ", i, " of ", AccountsCount, dots ); Login(i); while ( !IsStopped() ) { if ( OrdersHistoryTotal() > 0 ) break; dots = StringConcatenate( dots, "." ); Comment( "Changing Account: ", i, " of ", AccountsCount, dots ); Sleep(500); } Comment( "Changing Account: ", i, " of ", AccountsCount, dots, "OK!" ); Sleep(1000); Comment( "Changing Account: ", i, " of ", AccountsCount, dots, "OK! Sleep (", Pause, " sec)..." ); Sleep(Pause*1000); if ( SaveStatement ) SaveStatement( true, AccountNumber() ); } Sleep(1000); Comment( "Changing Account: sleep (", RoundPause, " sec)..." ); Sleep(RoundPause*1000); } Comment(""); return; } // Подключается к счету, расположенному в строчке номер Num в закладке Избранное окна Навигатор void Login( int Num ) { int hwnd = WindowHandle(Symbol(), Period()); int hwnd_parent = 0; while (!IsStopped()) { hwnd = GetParent(hwnd); if (hwnd == 0) break; hwnd_parent = hwnd; } if (hwnd_parent != 0) // нашли главное окно { hwnd = GetDlgItem(hwnd_parent, 0xE81C); // нашли Избранное окна Навигатор hwnd = GetDlgItem(hwnd, 0x52); hwnd = GetDlgItem(hwnd, 0x8A70); PostMessageA(hwnd, WM_KEYDOWN, VK_HOME,0); // верхняя строчка закладки Избранное окна Навигатор while (Num > 1) { PostMessageA(hwnd, WM_KEYDOWN,VK_DOWN, 0); // сместились на нужную строчку Num--; } PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); // логин Sleep(PAUSE); // выждали hwnd = GetLastActivePopup(hwnd_parent); // нашли форму логина PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); // залогинились } return; } // Сохраняет детализированный/краткий (Detailed = TRUE/FALSE) отчет о торговой истории счета в последнюю использованную папку void SaveStatement( bool Detailed, string FileName ) { int hwnd = WindowHandle(Symbol(), Period()); int hwnd_parent = 0; while (!IsStopped()) { hwnd = GetParent(hwnd); if (hwnd == 0) break; hwnd_parent = hwnd; } if (hwnd_parent != 0) // нашли главное окно { if (Detailed) PostMessageA(hwnd_parent, WM_COMMAND, 35502,0); // Детализированный отчет else PostMessageA(hwnd_parent, WM_COMMAND, 33064,0); // Краткий отчет Sleep(PAUSE); hwnd = GetLastActivePopup(hwnd_parent); // нашли форму сохранения файла SetWindowTextA(GetDlgItem(hwnd, 0x480), FileName); // ввели имя файла PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); // Подтвердили сохранение Sleep(PAUSE); hwnd = GetLastActivePopup(hwnd_parent); // Нашли предупреждение о перезаписи файла PostMessageA(hwnd, WM_KEYDOWN, VK_DOWN, 0); // Подтвердили перезапись PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); } return; }
Еще есть штатный вариант через запуск терминала с конфиг-файлом.
Когда-то делал такое - простенький загрузчик, записывающий конфиг-файл, запускающий терминал, и скрипт, собирающий инфу и терминал закрывающий.
Еще есть штатный вариант через запуск терминала с конфиг-файлом.
Когда-то делал такое - простенький загрузчик, записывающий конфиг-файл, запускающий терминал, и скрипт, собирающий инфу и терминал закрывающий.
Огромное спасибо!
А на этих счетах терминалы то крутятся? Если да, то не проще ли в них поставить по эксперту, который будет постоянно мониторить и скидывать нужные данные?
Есть готовое решение?
Есть готовое решение?
У меня готового нет. Но как делать - понятно. Я бы отправлял все нужное на сервер через WebRequest или SendFTP.
Кроме того, в настройках терминала есть возможность отправлять отчеты автоматически на заданный сервер через FTP. Так что в MQL даже ничего писать не надо - только мониторить отчеты и может быть парсить их особым образом.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Нужен код простого мониторинга форекс-счетов.
Если не код, то хотя бы главное: как подключиться прогой к чужому счету по имени/IP сервера, номеру счета и инвест-паролю.
Имея эту "печку" все остальное написал бы сам.
Буду благодарен за любую подсказку. Хотя бы где искать нужное.