Обсуждение статьи "МetaTrader 5. Экспорт котировок в .NET приложение, используя WCF сервисы"

 

Опубликована статья МetaTrader 5. Экспорт котировок в .NET приложение, используя WCF сервисы:

В статье продемонстрирован один из способов трансляции котировок из MetaTrader 5 в приложения, написанные на .NET.

Автор: Alexander

 

Молодец! Другое сказать не могу. К сожалению для связи MQL5 - .NET все еще нужен посредник, что делает всю конструкцию слишком громоздкую.

 
Itso:

К сожалению для связи MQL5 - .NET все еще нужен посредник, что делает всю конструкцию слишком громоздкую.

Согласен. Кстати, для простых взаимодействий есть отличная штука - Inverse P/Invoke - взаимодействие без посредников. 

Еще пытался использовать ILMerge, чтобы объединить все 3 сборки в QExportWrapper.dll - не получилось, вернее объединил, но после объединения из mql5 не видит экспортируемые функции

 

Привет!

Я скопировал ваши исходные файлы и перекомпилировал их для запуска.

Но у меня произошел сбой в MT5.

Как я могу отладить / устранить неполадки?

Спасибо!

 

1. Сначала попробуйте использовать скомпилированные файлы, находящиеся в архиве bin.rar.

Например, каталог клиентского терминала MetaTrader5 - "C:\Program Files\MetaTrader 5\".

Создадим новую папку для эксперта QExporter.mq5, например"QE", в папке "C:\Program Files\MetaTrader 5\MQL5\Experts\".

C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.mq5 (1615 bytes)
C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QService.mqh (4380 bytes)

C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExport.Service.dll (7168 bytes)
C:\Program Files\MetaTrader 5\MQL5\Libraries\QExportWrapper.dll (27648 bytes)

C:\Program Files\MetaTrader 5\WindowsClient\QExport.Client.dll (6656 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\QExport.dll (5632 bytes)
C:\Program Files\MetaTrader 5\WindowsClient\WindowsClient.exe (12288 bytes)

Тогда после компиляции QExporter.mq5 скомпилированный файл QExporter.ex5 появится в директории:

C:\Program Files\MetaTrader 5\MQL5\Experts\QE\QExporter.ex5 (6706 байт).

Прикрепив его к графику EURUSD,H1 и запустив WindowsClient.exe, я получил следующую картину:

Я протестировал его на бульде 249 (18 февраля).

 
sgfxtrader:

Я скопировал ваши исходные файлы и перекомпилировал их для запуска.

Но у меня произошел сбой в MT5.

Как я могу отладить / устранить неполадки?

Здравствуйте,

Прежде всего, я бы попытался отладить исходники mql5, чтобы найти функцию, которая вызывает ошибку - установите точки останова перед вызовом всех функций dll. К сожалению, я не смог прикрепить dll к terminal.exe для отладки, так как терминал был поврежден. Возможно, в новых сборках это возможно.

Также я хотел бы знать, какую ОС вы используете. У меня 32-битная ОС и поэтому у меня не было возможности проверить это на 64-битных системах.

И пробовали ли вы запускать скомпилированные файлы?

И еще одно, пожалуйста, попробуйте запустить ConsoleService и ConsoleClient в решении. Возможно, проблема не связана с mql или библиотекой-оберткой.

Finnaly, я предполагаю, что вы просто забыли создать (или скопировать) файл terminal.exe.config. Пожалуйста, попробуйте это сделать.

 

Это хорошая новость для того, чтобы MQL5 мог использовать wrap dll из NET.

Почему Mql4 не может использовать такой режим для работы с DLL, обернутыми Net?

 
DxdCn posted # :

Это хорошая новость для того, чтобы MQL5 мог использовать wrap dll из NET.

Почему Mql4 не может использовать такой режим для взаимодействия с DLL, обернутой Net?

В mt4 можно использовать гибридные dll, проблема в том, что в mql4 нет структур. Но это не так важно, вы можете передать несколько параметров вместо структуры.
 
sgfxtrader:

Привет!

Я скопировал ваши исходные файлы и перекомпилировал их для запуска.

Но у меня произошел сбой в MT5.

Как я могу отладить / устранить неполадки?

Спасибо!


У меня такая же проблема.

2010.07.27 12:11:09 Experts Initializing of QExporter(EURUSD,H1) failed

 

Большое спасибо за выложенный пример. Вот уже неделю (по вечерам) я бьюсь над созданием библиотеки обмена данными между.net и mql5.

Я не силен в С++ и этот пост мне был очень полезен.

Только вот одна беда.  после компиляции под х64 инициализация сервиса выдает ошибку. 

ExportService^ service = gcnew ExportService(serverName); // <- ServiceManaged.cpp 

 в "catch" не заходит. процесс просто "вылетает" без каких-либо объяснений. 

Как бы мне вывести эту ошибку в лог для дальнейшего анализа ? или может вы уже сталкивались с данной проблемой и решение уже есть ???? 

 

Мне удалось заставить его работать и с 32-битным MT5, и, после перекомпиляции для x64, удалось заставить его работать с 64-битным MT5.... однако, когда я пытаюсь запустить советник в тестере стратегий, они оба эффектно падают.

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


Джо