vdemydiuk / mtapi

MetaTrader API (terminal bridge)
http://mtapi4.net/
MIT License
522 stars 282 forks source link

MT5 Ссылка на объект не указывает на экземпляр объекта #13

Closed arteny closed 7 years ago

arteny commented 8 years ago

Стабильно появляется такая ошибка. Воспроизводится это как API перестаёт работать - выдаёт результат OK, но нулевые данные (что само по себе плохо, тут не видно что API поломался). Далее, при закрытии MT5, появляется окошко MtApi с сообщением из сабжа. После перезапуска MT, API начинает работать некоторое время и далее по кругу.

vdemydiuk commented 8 years ago

Добрый день, Алексей. Спасибо за issue. Буду изучать. Подскажите, эта проблема проявляется только в mtapi MT5 ?

arteny commented 8 years ago

Добрый, C mtapi MT4 я не работал. Не могу пока сказать. Более детально: выполнялся единственный запрос CopyRates периодически, пока в какой-то момент он работает очень долго и возвращает 0 и rates_array = null на гарантированно не пустых данных. Аналогичный ответ возвращает MtApi5TestClient. То, что что-то поломалось, можно проверить только зарывая MT, тогда можно увидеть окно с ошибкой. Так же не работает api во время клиринга и между биржевыми сессиями (23:50-10:00) даже на получение истории (CopyRates), после клиринга продолжает работать нормально (если не было ранее ошибки описанной выше). То что не работает в момент клиринга - это отдельная тема. Желательно возвращать какую-нибудь ошибку (и/или exception) если нет никакой возможности использования mt api в это время (хотя сам терминал MT может получать данные).

vdemydiuk commented 8 years ago

Добрый день, Алексей. Спасибо за более подробную информацию. Как только закончу работать на некоторыми заданиями по mtapi MT4, я переключусь на MT5 и постараюсь исправить ошибки.

vdemydiuk commented 8 years ago

Добрый день, Алексей. Я добавил логирование в MtApiService и провел небольшой рефакторинг кода. Это должно помочь выявить проблему. Соберите, когда будет возможность, логи и прикрепите к этому тикету. Логи лежат по пути %temp%\MtApiService\ %temp%\MtApi5Client\

Сборка должна быть в Debug mode.

arteny commented 8 years ago

Проблема с exception MtApi как-то рассосалась сама собой и перестала у меня воспроизводиться. А вот поведение MtApi во время клиринга и между сессиями хотелось бы поправить.

vdemydiuk commented 8 years ago

Попробуйте протестировать MtApi (MT5) 1.0.10 во время клиринга. Присутствует ли еще данная проблема?

arteny commented 8 years ago

@vdemydiuk Расскажите как правильно переустанавливать новый MtApi? Достаточно ли заменить файл C:\Program Files\MtApi5\MtApi5.dll или обязательно надо собрать инсталлятор и переустановить (чтобы правильно обновилось в GAC)?

vdemydiuk commented 8 years ago

Есть два пути установки MtApi: 1) Использовать инсталятор. 2) - Переписать MT5Connector.dll в системную папку или в папку, где установлен терминал;

arteny commented 8 years ago

@vdemydiuk а при использовании инсталлятора, надо ли MtApi5.ex5 повторно кликать для переустановки?

P.S. А это круто звучит про читайте внимательно: https://s.mail.ru/Fq6v/yhoXxUx7Y ))

vdemydiuk commented 8 years ago

Если в эксперте не было изменений (не поменялась его версия), то переустанавливать его не обязательно. Планирую добавить скрипт в инсталлятор для автоматического обновления (как сейчас в MtApi (MT4).

Насчет диалога лицензии, сам иногда тешусь. :) Никак не доходят руки добавить текст лицензии.

arteny commented 8 years ago

Проверил новый MtApi между сессиями, всё работает! Good job! На следующей неделе посмотрю во время клиринга как ещё.

arteny commented 7 years ago

Во время клиринга тоже всё ОК теперь.

vdemydiuk commented 7 years ago

Отлично. Спасибо за тестирование.