Я столкнулся с некоторыми трудностями при реализации описанного выше. Поэтому озвучу, мало ли кто столкнется с похожими проблемами.
1) Если у вас терминал x64, то скорее всего будет необходимо перекомпилировать с++ проект в x64. На всякий случай делается это так: Visual Studio -> Properties (вашего с++ проекта) -> Configuration Manager -> и там через выпадающий список либо через <New...> меняете на x64. Компилируем. Готово. Если не компилируется - проверьте References проекта, пройдитесь по ошибкам компилятора. 2) У меня были проблемы c советником, он даже не инициализировался. Я заметил это только при отключении советника от графика, когда вылетела ошибка init failed (забавно..). Советник впадал в бесконечный Sleep еще на стадии инициализации и все дело было в этих строчках (в QService.mqh):
QService::EnterCriticalSection() { while (GlobalVariableCheck("QService_CriticalSection") > 0) Sleep(1); GlobalVariableTemp("QService_CriticalSection"); }
После дебага и тщетных попыток понять этот "Sleep(1)", заменил код на:
Hi, I'm a C# developer and downloaded the code from the article "HOW TO EXPORT QUOTES FROM METATRADER 5 TO .NET APPLICATIONS USING WCF SERVICES" ( https://www.mql5.com/en/articles/27 ). The problem is that my machine is a Windows 64 bits with MetaTrader 5 64 bits installed and I had to change the compile configurations to 64 bits in Visual Studio 2012. Ok, it compiled normally, then I added one new method that aims to return a string to MT5 which i called ReadBroker2MeInstructions . Compiled...
Просто для знаний, я обнаружил, что произошло на моей 64-битной машине.
После долгих часов исследований и отладки я обнаружил, что одна из ссылающихся сборок не загружается, генерируя исключение "System.IO.FileNotFoundException: Unable to load file or assembly 'QExport.Service, Version=1.0.5771.13857, Culture=neutral, PublicKeyToken=56996a45dd1e337b'".
Возможно, потому что у dll нет файла конфигурации, пока не знаю, MT 5 не знал, где найти сборку. Поэтому он пытался получить ее по базовому пути (путь, по которому находится metaeditor64.exe). После изменения выходного каталога ссылаемых проектов на этот путь все заработало как по маслу.
Есть ли какой-нибудь специальный трюк, чтобы заставить его работать на x64? Я только что скомпилировал его для x64, но при запуске dll вываливается со странными ошибками.
Интересно а есть ли подобный проект с предварительной выгрузкой исторических баров? Очень уж хочется прикрутить это всё к Lightweight-Chart и удобно пользоваться графиком.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
1) Если у вас терминал x64, то скорее всего будет необходимо перекомпилировать с++ проект в x64. На всякий случай делается это так: Visual Studio -> Properties (вашего с++ проекта) -> Configuration Manager -> и там через выпадающий список либо через <New...> меняете на x64. Компилируем. Готово. Если не компилируется - проверьте References проекта, пройдитесь по ошибкам компилятора.
2) У меня были проблемы c советником, он даже не инициализировался. Я заметил это только при отключении советника от графика, когда вылетела ошибка init failed (забавно..). Советник впадал в бесконечный Sleep еще на стадии инициализации и все дело было в этих строчках (в QService.mqh):
QService::EnterCriticalSection()
{
while (GlobalVariableCheck("QService_CriticalSection") > 0)
Sleep(1);
GlobalVariableTemp("QService_CriticalSection");
}
После дебага и тщетных попыток понять этот "Sleep(1)", заменил код на:
QService::EnterCriticalSection()
{
if(!GlobalVariableCheck("QService_CriticalSection"))
GlobalVariableTemp("QService_CriticalSection");
}
P.S: Спасибо автору статьи! Все круто расписано!
Очень интересно..Спасибо..Но может быть Сегодня есть более простые возможности*??
Конечно есть - использование подключения через встроенную в терминал возможность. Это PIPE-канал.
https://www.mql5.com/ru/docs/files/fileopen
Только что разместил новую работу, основанную на этой статье: https: //www.mql5.com/en/job/34392.
Это не работает в моей среде MT5 64 бит...
Отличная статья!
Спасибо
Просто для знаний, я обнаружил, что произошло на моей 64-битной машине.
После долгих часов исследований и отладки я обнаружил, что одна из ссылающихся сборок не загружается, генерируя исключение "System.IO.FileNotFoundException: Unable to load file or assembly 'QExport.Service, Version=1.0.5771.13857, Culture=neutral, PublicKeyToken=56996a45dd1e337b'".
Возможно, потому что у dll нет файла конфигурации, пока не знаю, MT 5 не знал, где найти сборку. Поэтому он пытался получить ее по базовому пути (путь, по которому находится metaeditor64.exe). После изменения выходного каталога ссылаемых проектов на этот путь все заработало как по маслу.
Привет, Джо,
Есть ли какой-нибудь специальный трюк, чтобы заставить его работать на x64? Я только что скомпилировал его для x64, но при запуске dll вываливается со странными ошибками.
Сейб, смотри мой ответ ниже.
[]'s
Здравствуйте,
Я протестировал ваш готовый файл, все выглядит хорошо в MT5. Но в WinClient нет никаких данных.
Интересно а есть ли подобный проект с предварительной выгрузкой исторических баров? Очень уж хочется прикрутить это всё к Lightweight-Chart и удобно пользоваться графиком.