S#

Проблема с получением события MarketDepthsChanged с коннектором для MT4 в версии 4.4.17


Проблема с получением события MarketDepthsChanged с коннектором для MT4 в версии 4.4.17
Atom Ответить
13.01.2020


Всем добрый вечер.

Есть торговый робот для Quick. Все работает, в том числе и под версией 4.4.17 с новым классом Connector .
Пробую перенести его на MT4, версия ПО 4.4.17. Коннектор установился успешно, к серверу подключается. Ордера проходят, хотя и возникает ошибка, которая в логе пишет следующее сообщение:.

22:36:38.907|Error |MqlServer |Cant close position #6239594. ERR=4108
22:36:38.907|Error |MqlServer |Ошибка закрытия позиции "ERROR (6239594): 4108/Text=Неверный номер тикета at tryCloseOrders Where="tryCloseOrders"" для #6239594
22:36:38.907| |MqlServer |closed position Volume=0.020000

Но не смотря на ошибку ордер со второго раза срабатывает. С этим я как - нибудь разберусь, но больше волнует другое.

Для мониторинга котировок подписываюсь на котировки с помощью метода

Trader.SubscribeMarketDepth(sec);

Но в ответ никаких событий MarketDepthsChanged не приходит.
Еще раз замечу, что тот же код для коннектора для Quic работает.

В чем может быть проблема?! Что я делаю неверно?!

Спасибо!





Спасибо:




12 Ответов
LevNNN

Фотография
Дата: 16.01.2020
Ответить


Самостоятельно продвигаюсь в тестировании версии 4.4.17. Саппорт молчит, не смотря на платную подписку!)

Подключил обработчик события Trader.MarketDataSubscriptionFailed и теперь видно сообщение текста ошибки:

{"Подписка 'MarketData,T(L)=2020/01/16 20:50:40.421,Sec=EURUSD@FOREX,Name=EURUSD,Price=0.00001,Vol=0.01,Dec=5,Cur=EUR,Sec=EURUSD@FOREX,Type=MarketDepth,IsSubscribe=True,TransId=75031074,SmallTF=True' не поддерживается установленным соединением."}

Скорее всего баг в коннекторе, так как галочку в поле MarketData в программе SampleConnection при формировании файла connection.xml я включил.

Что скажет саппорт?! За саппорт я заплатил!)

Автор топика
Спасибо:

Support

Фотография
Дата: 16.01.2020
Ответить


Добрый день

MT4 не предоставляет стаканы, так как рынок Форекс их не имеет через данную систему. Если вам необходимы стаканы на FX рынке, то вы можете попробовать использовать прямой подключение через протокол FIX, если ваш брокер его предоставляет.
Спасибо:

LevNNN

Фотография
Дата: 16.01.2020
Ответить


Мне стакан не нужен, мне их текущие котировки bid и ask нужны. Неужели нельзя их как-то получить?!
Автор топика
Спасибо:

Support

Фотография
Дата: 16.01.2020
Ответить


Возможно. Вы делаете подписку на стакан - SubscribeMarketDepth. Если вам нужен только лучшие цены, то для этого необходимо вызвать метод SubscribeLevel1. Рекомендуем вам протестировать подключение через наш пример SampleConnection.
Спасибо:

LevNNN

Фотография
Дата: 16.01.2020
Ответить


Протестировал Ваш пример SampleConnection. В качестве MT4 использовал версию от dukascopy. Подключение создается, список инструментов получается, а вот дальше никаких котировок получить нельзя. Вываливается та же ошибка, что и у меня. Т.е. из Вашего примера тоже никак текущие котировки получить нельзя.
Автор топика
Спасибо:

LevNNN

Фотография
Дата: 17.01.2020
Ответить


Попробовал метод SubscribeLevel1.

subscription = Trader.SubscribeLevel1(sec);

Пытаюсь в полях subscription найти котировки. Поля LastTrade или BestBid у поля security имеют null значение.
Какое событие надо обрабатывать по этому методу из документации не понял.

Т.е текущие котировки инструмента в MT4 получить в реальном времени не получается.

Автор топика
Спасибо:

Support

Фотография
Дата: 17.01.2020
Ответить


LevNNN Перейти
Протестировал Ваш пример SampleConnection. В качестве MT4 использовал версию от dukascopy. Подключение создается, список инструментов получается, а вот дальше никаких котировок получить нельзя. Вываливается та же ошибка, что и у меня. Т.е. из Вашего примера тоже никак текущие котировки получить нельзя.


В примере какую кнопку при выделенном инструменте вы нажимали?
Спасибо:

LevNNN

Фотография
Дата: 17.01.2020
Ответить


В примере выскакивает ошибка, если нажать на кнопки "Стакан", "Стакан (advanced)", "Тики", "История сделок", "Лог заявок", Скриншот прикрепил.
Автор топика
Спасибо:

Support

Фотография
Дата: 17.01.2020
Ответить


MT4 не поддерживает ничего из вышеперечисленного. Только лучшие цены. Это кнопка Bid-Ask.
Спасибо:

LevNNN

Фотография
Дата: 17.01.2020
Ответить


При нажатии на кнопку "Бид - оффер" в Вашем примере SampleConnection ничего не происходит. Скриншот прикрепил
Автор топика
Спасибо:

Support

Фотография
Дата: 17.01.2020
Ответить


Пожалуйста, прикрепите логи мт части.
Спасибо:

LevNNN

Фотография
Дата: 17.01.2020
Ответить


Прикрепил.
FixServer.txt 31,4KB (0) MqlServer.txt 78,9KB (0)
Автор топика
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy