Неправильное определение баланса при работе с двух терминалов на одном счете

 

Недавно столкнулся с такой ситуацией:

Есть один счет, торговля на котором ведется с двух терминалов МТ4. Иногда бывает так, что при отсутствии любых (текущих или отложенных) ордеров на терминалах отображается разный баланс (эквити). Соответственно, советник открывает неправильный лот и торговля уже идет не по системе...

Смоделировать самому ситуацию получилось довольно легко. Пробовал практически одновременно закрывать 2 открытые позиции из разных терминалов. Получилось с третьего раза.

На первом рисунке видно терминал с закладкой "История счета". Там баланс 811.7 и он правильный, а сверху рисунка видно баланс 812.33 (выводится советником через AccountBalance()). Также, ошибочный баланс 812.33 видно и на вкладке "Торговля" (второй рисунок).

Достиглось это одновременным (практически) закрытием ордеров 57481168 и 57481175 с разных терминалов. И получилось, что данный терминал не учел последнюю позицию на "-0.63", хотя в истории она отобразилась корректно. Лечится это перелогиниванием или перезапуском терминала.

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

Кто-нибудь встречался с подобной ситуацией? Просьба разработчиков как-то прокоментировать возможные причины и способы их устранения при работе советником.

 

на вкладке история счёта выберите всю историю (правый клик на любом ордере)

 
ks99 >>:

на вкладке история счёта выберите всю историю (правый клик на любом ордере)

Не совсем Вас понял...

Там и так вся история выбрана.

Тема была о том, что реальный баланс 811.7, а во вкладке "торговля" показывается 812.33 и то же самое определяет эксперт через AccountBalance().

А вот после перелогина уже все становится нормально и кругом баланс 811.7

 
Volkot писал(а) >>

Недавно столкнулся с такой ситуацией:

Есть один счет, торговля на котором ведется с двух терминалов МТ4. Иногда бывает так, что при отсутствии любых (текущих или отложенных) ордеров на терминалах отображается разный баланс (эквити). Соответственно, советник открывает неправильный лот и торговля уже идет не по системе...

Смоделировать самому ситуацию получилось довольно легко. Пробовал практически одновременно закрывать 2 открытые позиции из разных терминалов. Получилось с третьего раза.

На первом рисунке видно терминал с закладкой "История счета". Там баланс 811.7 и он правильный, а сверху рисунка видно баланс 812.33 (выводится советником через AccountBalance()). Также, ошибочный баланс 812.33 видно и на вкладке "Торговля" (второй рисунок).

Достиглось это одновременным (практически) закрытием ордеров 57481168 и 57481175 с разных терминалов. И получилось, что данный терминал не учел последнюю позицию на "-0.63", хотя в истории она отобразилась корректно. Лечится это перелогиниванием или перезапуском терминала.

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

Кто-нибудь встречался с подобной ситуацией? Просьба разработчиков как-то прокоментировать возможные причины и способы их устранения при работе советником.

Вы думаете, кроме вас много народа занимется этим?

 
Volkot >>:

Достиглось это одновременным (практически) закрытием ордеров 57481168 и 57481175 с разных терминалов. И получилось, что данный терминал не учел последнюю позицию на "-0.63", хотя в истории она отобразилась корректно. Лечится это перелогиниванием или перезапуском терминала.

RefreshRates() перед OrderSend() не пробовали?

 
Reshetov >>:

RefreshRates() перед OrderSend() не пробовали?

Пробовал в эксперте, который определяет текущий баланс поставить его перед AccountBalance().

Результат отрицательный :(. Все осталось как описано выше. Помогает только перелогин.

Мне очень странно, что во вкладке "торговля" и "история счета" отображаются разные данные (почему они считаются по-разному). Это какой-то конкретный глюк...

 
Volkot >>:

Пробовал в эксперте, который определяет текущий баланс поставить его перед AccountBalance().

Результат отрицательный :(. Все осталось как описано выше. Помогает только перелогин.

Мне очень странно, что во вкладке "торговля" и "история счета" отображаются разные данные (почему они считаются по-разному). Это какой-то конкретный глюк...


Я точно не знаю, т.к. не разработчик МТ.

Предполагаю, что это никакой не глюк, а особенность реализации:

1. В закладке "история счёта" прибыль считается на стороне клиента

2. В закладке "торговля" данные берутся от сервера:

 а) транзакция со второго терминала могла на сервере ещё не завершиться и сделка -0.63 ещё не отразилась в балансе

 б) прошло мало времени - не было запроса баланса на сервер

 
Volkot >>:

Кто-нибудь встречался с подобной ситуацией?

Я встречался, исходные данные полностью аналогичные - 2 терминала и один счет.


Отмечу, что терминалы в момент обнаружения глюка были подключены к разным "под-серверам" брокера (специально проверил, кликнув на индикатор состояния соединения).

После ручного подключения 2-го терминала к тому "под-серверу", где баланс был больше (реал все-таки =), баланс стал совпадать.


Думается, проблема в синхронизации данных между "под-серверами" брокера.

 
VictorArt >>:


Я точно не знаю, т.к. не разработчик МТ.

Предполагаю, что это никакой не глюк, а особенность реализации:

1. В закладке "история счёта" прибыль считается на стороне клиента

2. В закладке "торговля" данные берутся от сервера:

 а) транзакция со второго терминала могла на сервере ещё не завершиться и сделка -0.63 ещё не отразилась в балансе

 б) прошло мало времени - не было запроса баланса на сервер

Возможно и так, но баланс в окне "торговля" (и запрос AccountBalance()) не обновится и через час, если не будет перелогина. Т.е. вариант б) не проходит. Интересно, в каких случаях происходит запрос баланса на сервер.

 
komposter >>:

Я встречался, исходные данные полностью аналогичные - 2 терминала и один счет.


Отмечу, что терминалы в момент обнаружения глюка были подключены к разным "под-серверам" брокера (специально проверил, кликнув на индикатор состояния соединения).

После ручного подключения 2-го терминала к тому "под-серверу", где баланс был больше (реал все-таки =), баланс стал совпадать.


Думается, проблема в синхронизации данных между "под-серверами" брокера.

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

Но раза с 10-го у меня получилось и при одинаковом сервере. Так, что вопрос остается...

 
Volkot писал(а) >>

...на терминалах отображается разный баланс (эквити)...

Скорее всего Вы торгуете разными валютами, а приход тиков у них не совпадает. Вот и получается, что обновление происходит не одновременно. Для синхронизации нужно советники вешать на одну и туже валюту, а торговля пусть идёт по разным. На чемпионате был такой советник, который был прикреплён к валюте с частыми тиками, а торговля велась на совершенно других.