Скачать MetaTrader 5

Скрипты: ReConnecter - скрипт для периодического перелогина.

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Зарегистрируйся на MQL5.community, чтобы опубликовать тему на форуме
MetaQuotes Software Corp.
Модератор
181154
MetaQuotes Software Corp. 2008.05.28 14:43 

ReConnecter - скрипт для периодического перелогина.:

Скрипт призван решить проблему "замирающих графиков" - когда при наличии связи с торговым сервером перестают обновляться графики котировок.

Author: Andrey Khatimlianskii

MQL4 Comments
16319
MQL4 Comments 2008.05.28 16:26  
please english
MQL4 Comments
16319
MQL4 Comments 2008.05.28 19:19  

Штука полезная. Только я бы ее спользовал с оговоркой: если счет серьезный - таких проблем не должно быть. Если они все же возникают - их надо решить принципиально. Но, если вариантов решения нет ( ни прова, ни линию, ни ДЦ не сменить) - изящный паллиатив. И отличный пример (для меня, во всяком случае) использования надстроек над MQL.

Автору, как всегда, благодарность и респект.

Andrey Khatimlianskii
56176
Andrey Khatimlianskii 2008.05.28 20:01  
Babay:

Автору, как всегда, благодарность и респект.

В свою очередь, поблагодарю Getch-а за функции работы с окнами терминала.
Комбинатор
15921
Комбинатор 2008.05.30 10:31  

Хмм, никогда не возникало таких проблем, впрочем это неважно, штука потенциально полезная.

Не нравится одна вещь -- релогин когда проблем нету.

Можно ведь отслеживать текущую цену по любой валюте. И делать релогин только тогда, когда цена не изменялась в течение допустим минуты.

ИМХО, такой вариант должен быть лучше.

Andrey Khatimlianskii
56176
Andrey Khatimlianskii 2008.05.30 12:14  
TheXpert:

Не нравится одна вещь -- релогин когда проблем нету.
Можно ведь отслеживать текущую цену по любой валюте. И делать релогин только тогда, когда цена не изменялась в течение допустим минуты.
ИМХО, такой вариант должен быть лучше.

Да, так будет правильнее. Добавлю в качестве опции.
Вообще, задумывалось что релогин будет ~ 1 раз в час.

getch
1754
getch 2008.05.30 22:03  
MQL4 Comments
16319
MQL4 Comments 2008.06.04 16:03  

Нужно чуть исправить функциию start()  и ReLogin будет происходить: только при условии отсутствия связи с сервером более чем “Pause_sec” секунд (отсутствия новой информации о котировках)

void start()
{
    if ( !IsDllsAllowed() )
    {
        Alert( "DLLs not allowed!" );
        return;
    }
   datetime LastCheck;
    while ( !IsStopped() )
    {
       if(LastCheck==TimeCurrent())
         {
           Login(1);
           while ( !IsStopped() )
            {
               if ( OrdersHistoryTotal() > 0 ) break;
               Sleep(1000);
            }
            Print( "Успешное подключение к счету #", AccountNumber() ); //, "! Следующее будет через ", Pause_sec/60, " минут..." );
          }
        LastCheck = TimeCurrent();
        Sleep(Pause_sec*1000);
    }
    return;
}

 


PS: Pause_sec более 3минут делать не смысла, если у вас в терминале есть все Major пары
extern int Pause_sec = 180;

MQL4 Comments
16319
MQL4 Comments 2008.06.08 01:55  
ктонибудь знает как научить его работать со счетами не в списке Избранное, а в основном окне навигатора?
getch
1754
getch 2008.06.08 18:03  
kav:
ктонибудь знает как научить его работать со счетами не в списке Избранное, а в основном окне навигатора?

Попробуйте вместо вызова Login(1) делать Login2():

// Подключается к первому сверху счету окна Навигатор
void Login2()
{
  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)  // нашли главное окно
  {
    PostMessageA(hwnd_parent, WM_COMMAND, 35429, 0); // Вызвали логин
    Sleep(PAUSE);                             // выждали
    hwnd = GetLastActivePopup(hwnd_parent);   // нашли форму логина
    PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); // залогинились
  }
  return;
}
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий