среда, 28 сентября 2016 г.

Как автоматически управлять несколькими счетами с одного терминала?

Tags


Добрый день! Задумался на тему того, что если разбить нано счет Альпари на несколько из-за ограничения количества открытых ордеров, то придется покупать большой VPS сервер. 
А зачем переплачивать подумал я, если стратегия одна и та же будет, просто несколько счетов и в каждом открывать сетку только по одной паре что бы уложиться в 25 ордеров.
И вот нашел следующий скрипт. Он позволяет перелогиниваться между счетами. Можно встроить его в советник и скажем раз в 15 минут перезаходить по всем nano счетам и открывать при необходимости новые ордера, двигать тейк профиты.
Таким образом не надо будет ставить отдельный терминал на каждый счет)


#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 extern int Amount = 64; // Количество счетов в закладке Избранное окна Навигатор extern int Pause = 30; // Пауза между переключениями торговых счетов int start() { int i; Pause *= 1000; for (i = 1; i <= Amount; i++) { Login(i); Sleep(Pause); //здесь остальной код } return(0); } //+------------------------------------------------------------------+ //| Подключается к счету, расположенному в строчке номер 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(1000); // выждали hwnd = GetLastActivePopup(hwnd_parent); // нашли форму логина PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); // залогинились } return; }


EmoticonEmoticon