В МТ5 как-то можно зафиксировать выбор сервера?

 

Видать из-за блокировок перестали приходить тики с сервера FRK, при переключении, например на NY1 поток данных нормализуется, однако спустя время выбор сервера опять переключается на FRK.

Файлы:
 
Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5
Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5
  • 2025.12.13
  • www.mql5.com
Рассмотрим результаты тестов на одном и нескольких символах. Тесты будем проводить в режиме Все тики...
 
Victorrrr:

Видать из-за блокировок перестали приходить тики с сервера FRK, при переключении, например на NY1 поток данных нормализуется, однако спустя время выбор сервера опять переключается на FRK.

кстати вот АКТУАЛЬНО не только с FRK

вот уже 30-40 минут идут глюки.

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

даже пропустил вход по AUDUSD. Лечится ручной сменой Access Point, но во первых поздно и он всё равно перепрыгнет потом обратно.

 
Maxim Kuznetsov #:

кстати вот АКТУАЛЬНО не только с FRK

вот уже 30-40 минут идут глюки.

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

даже пропустил вход по AUDUSD. Лечится ручной сменой Access Point, но во первых поздно и он всё равно перепрыгнет потом обратно.

Победить не удалось , пришлось срочно арендовать vds в еврозоне. там все работает.
 
Maxim Kuznetsov #:

кстати вот АКТУАЛЬНО не только с FRK

вот уже 30-40 минут идут глюки.

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

даже пропустил вход по AUDUSD. Лечится ручной сменой Access Point, но во первых поздно и он всё равно перепрыгнет потом обратно.

Опять же, для Линукса (про Винду не знаю):

Проверяем (в цикле или по ежеминутно по крону) доступность серверов по TCP:443 (traceroute -T или curl/wget), при недоступности добавляем в nftables правило, reject'ящее обращение к этому серверу. Только надо выбрать (тут возможны разные способы), как исключить из этого правила наши тестовые запросы, чтобы это правило можно было так же автоматически и убрать.

Я бы сделал это на bash, кому-то будет проще на питоне или даже на перле.

У меня похожим образом инет-провайдеры переключаются.

 
JRandomTrader #:

Опять же, для Линукса (про Винду не знаю):

Проверяем (в цикле или по ежеминутно по крону) доступность серверов по TCP:443 (traceroute -T или curl/wget), при недоступности добавляем в nftables правило, reject'ящее обращение к этому серверу. Только надо выбрать (тут возможны разные способы), как исключить из этого правила наши тестовые запросы, чтобы это правило можно было так же автоматически и убрать.

Я бы сделал это на bash, кому-то будет проще на питоне или даже на перле.

У меня похожим образом инет-провайдеры переключаются.

да, как-то так ;-)

но баг явно присутствует: терминал или сервер MQ, или совместно, неверно определяют состояние соединения. и до попытки его использовать считают работающим

 
JRandomTrader #:

Опять же, для Линукса (про Винду не знаю):

Проверяем (в цикле или по ежеминутно по крону) доступность серверов по TCP:443 (traceroute -T или curl/wget), при недоступности добавляем в nftables правило, reject'ящее обращение к этому серверу. Только надо выбрать (тут возможны разные способы), как исключить из этого правила наши тестовые запросы, чтобы это правило можно было так же автоматически и убрать.

Я бы сделал это на bash, кому-то будет проще на питоне или даже на перле.

У меня похожим образом инет-провайдеры переключаются.

Так в том то и проблема, что пинг есть, котировки обновляются, а торговые приказы на сервер не доходят, потому как терминал всё время пытается проверить к аккаунт.

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

У меня в советнике написана проверка пинга, написана повторная попытка закрытия позиции если позиция не закрылась. Теперь нужно ещё писать, чтоб при реджекте советник менял сервер. Блин :(

Советником торгую не я, но претензии по поводу не закрытой вовремя позиции прилетели ко мне. Было очень не приятно.


PS. У меня вот так переключаются сервера.

#import "user32.dll"
int GetAncestor(int, int);
int SendMessageW(int hWnd, int Msg, int wParam, int lParam);
#import
#define GA_ROOT        2
#define WM_COMMAND  0x0111
//+------------------------------------------------------------------+
void OnStart()
  {
   int wID = 53171;
   while(wID <= 53178)
     {
      Comment(wID);
      ChartRedraw();
      int wHandle = GetAncestor((int)ChartGetInteger(0, CHART_WINDOW_HANDLE), GA_ROOT);
      SendMessageW(wHandle, WM_COMMAND, wID, 0);
      wID++;
      Sleep(3000);
     }
  }
//+------------------------------------------------------------------+
 
Aleksandr Slavskii #:

Так в том то и проблема, что пинг есть, котировки обновляются, а торговые приказы на сервер не доходят, потому как терминал всё время пытается проверить к аккаунт.

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

У меня в советнике написана проверка пинга, написана повторная попытка закрытия позиции если позиция не закрылась. Теперь нужно ещё писать, чтоб при реджекте советник менял сервер. Блин :(

Советником торгую не я, но претензии по поводу не закрытой вовремя позиции прилетели ко мне. Было очень не приятно.


PS. У меня вот так переключаются сервера.

Строго говоря, пинг - это ICMP:Type 8, говорит о доступности сетевого адреса, но не говорит о работе сервиса на нём. Потому и предлагаю проверять TCP:443

Но если котировки обновляются, а ордера не исполняются, это уже другая проблема, её сетевыми методами не отдетектить.

Способ переключения серверов примерно понял, но я не знаком с программированием под винду.

 
JRandomTrader #:

Строго говоря, пинг - это ICMP:Type 8, говорит о доступности сетевого адреса, но не говорит о работе сервиса на нём. Потому и предлагаю проверять TCP:443

Но если котировки обновляются, а ордера не исполняются, это уже другая проблема, её сетевыми методами не отдетектить.

Способ переключения серверов примерно понял, но я не знаком с программированием под винду.

Думаю проверять логин счёта AccountInfoInteger(ACCOUNT_LOGIN) и если он не соответствует логину, который запомнили при старте советника (предполагается, что при запуске  было всё ок), то переключаться на другой сервер. 

Пока не проверял, что возвращает AccountInfoInteger(ACCOUNT_LOGIN)  при попытках подключиться к серверу 

Вообще при такой потере связи журнал забит вот такими логами

20:40:35.780    Network '50124': connection to OneRoyal-Server lost
20:40:36.201    Network '50124': authorized on OneRoyal-Server through Access Server-FR (ping: 94.71 ms, build 5430)
20:40:36.201    Network '50124': previous successful authorization performed from 46.229.72.231 on 2026.01.09 19:40:13
20:40:37.059    Network '50124': terminal synchronized with Royal ETP LLC: 11 positions, 0 orders, 2056 symbols, 0 spreads
20:40:37.059    Network '50124': trading has been enabled - hedging mode
20:40:56.357    Network '50124': connection to OneRoyal-Server lost
20:40:56.809    Network '50124': authorized on OneRoyal-Server through Access Server-FR (ping: 94.71 ms, build 5430)
20:40:56.809    Network '50124': previous successful authorization performed from 46.229.72.231 on 2026.01.09 19:40:34
20:40:57.745    Network '50124': terminal synchronized with Royal ETP LLC: 11 positions, 0 orders, 2056 symbols, 0 spreads
20:40:57.745    Network '50124': trading has been enabled - hedging mode
20:40:58.525    Network '50124': scanning network for access points

Вроде бы подключается, но тут же начинает подключаться по новой.

 
Aleksandr Slavskii #:

Думаю проверять логин счёта AccountInfoInteger(ACCOUNT_LOGIN) и если он не соответствует логину, который запомнили при старте советника (предполагается, что при запуске  было всё ок), то переключаться на другой сервер. 

Пока не проверял, что возвращает AccountInfoInteger(ACCOUNT_LOGIN)  при попытках подключиться к серверу 

Вообще при такой потере связи журнал забит вот такими логами

Вроде бы подключается, но тут же начинает подключаться по новой.

Галка запрета торговли при смене аккаунта не используется?

При смене логина советник разве не перезагружается?

 
JRandomTrader #:

Галка запрета торговли при смене аккаунта не используется?

При смене логина советник разве не перезагружается?

Так нет смены логина. Происходит то, что происходит при запуске терминала, проверка логина.