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

 
Спасибо! Очень полезное знакомство и с wcf и с mql5
 

У меня тоже произошел сбой в тестере стратегий. в обычном режиме все нормально.

Кто-нибудь уже нашел решение?

 
Спасибо за отличную работу!
 

Потрясающая работа, Александр. Я никогда раньше не кодил на C# и искал, как заставить котировки MT5 работать в Excel без использования DDE-сервера.

В конце концов, я сделал это, настроив ваш код с MT5 32 бит. Следующий шаг - x64.

SM

 
Недавно я увидел еще один бесплатный способ программирования на C# для MetaTrader
TradePlatform.NET
 
В настоящее время я пытаюсь внедрить свою собственную обертку c++ для моей c# dll для взаимодействия с mql5. У меня возникла проблема с добавлением ссылки на c# dll в мою библиотеку c++. Не могли бы вы пояснить следующее предложение "...добавить поддержку CLR, System.dll, QExport.dll, Qexport.Service.dll в ссылку на сборку". Я смог зарегистрировать свою dll с помощью утилиты regasm, добавить ее в gac и получить файл определения типа .tlb. Моя проблема заключается в том, что я не могу найти никаких утверждений #import или #include в исходном коде, который вы предоставили. Похоже, что ваш проект ссылается на ваши библиотеки dll каким-то загадочным образом. Не мог бы кто-нибудь объяснить, как правильно добавить ссылку на .NET dll в библиотеку на c++? Хотя это и не чисто mql5 вопрос, он напрямую относится к статье. Я уже довольно долго изучаю эту тему и до сих пор не могу понять, как библиотека c++ может иметь .NET dll в своих "Внешних зависимостях" без каких-либо #import операторов. Это мое первое знакомство с c++, и пока оно было не очень приятным, я даже думал преобразовать .dll в .lib и добавить на нее ссылку, но прежде чем что-то делать, решил обратиться за советом к специалисту по COM. Я работаю под управлением Windows 8 Ultimate x64 и компилирую свои c# dll с помощью VS2012 Ultimate. Пожалуйста, помогите новичку.
How to Exchange Data: A DLL for MQL5 in 10 Minutes
  • 2010.01.27
  • MetaQuotes Software Corp.
  • www.mql5.com
Now not so many developers remember how to write a simple DLL, and what are special features of different system binding. Using several examples, I will try to show the entire process of the simple DLL's creation in 10 minutes, as well as to discuss some technical details of our binding implementation. I will show the step-by-step process of DLL creation in Visual Studio with examples of exchanging different types of variables (numbers, arrays, strings, etc.). Besides I will explain how to protect your client terminal from crashes in custom DLLs.
 
Burton:

В настоящее время я пытаюсь внедрить свою собственную обертку c++ для моей c# dll для взаимодействия с mql5. У меня возникла проблема с добавлением ссылки на c# dll в мою библиотеку c++. Не могли бы вы пояснить следующее предложение "...добавить поддержку CLR, System.dll, QExport.dll, Qexport.Service.dll в ссылку на сборку". Я смог зарегистрировать свою dll с помощью утилиты regasm, добавить ее в gac и получить файл определения типа .tlb. Моя проблема заключается в том, что я не могу найти никаких утверждений #import или #include в исходном коде, который вы предоставили. Похоже, что ваш проект ссылается на ваши библиотеки dll каким-то загадочным образом. Не мог бы кто-нибудь объяснить, как правильно добавить ссылку на .NET dll в библиотеку на c++? Хотя это и не чисто mql5 вопрос, он напрямую относится к статье. Я уже довольно долго изучаю эту тему и до сих пор не могу понять, как библиотека c++ может иметь .NET dll в своих "Внешних зависимостях" без каких-либо #import операторов. Это мое первое знакомство с c++, и пока оно было не очень приятным, я даже думал преобразовать .dll в .lib и добавить ссылку на нее, но прежде чем что-то делать, решил обратиться за советом к специалисту по COM. Я работаю под управлением Windows 8 Ultimate x64 и компилирую свои c# dll с помощью VS2012 Ultimate. Пожалуйста, помогите новичку.
По глупости я обнаружил, что могу ссылаться на c# dlls из проекта c++, щелкнув правой кнопкой мыши и выбрав в диалоговом окне "Ссылки...". В интернете столько всякой ерунды.
 
Очень интересно..Спасибо..Но может быть Сегодня есть более простые возможности*??
 
shelandr1:
Очень интересно..Спасибо..Но может быть Сегодня есть более простые возможности*??

Статья хороша тем, что рассказывает про WCF тем, кто незнаком с технологией. Кстати, я проверял быстродействие WCF через интернет на дистанции Питер - Одесса, получалась приличная скорость около 14000 двусторонних транзакций/сек пакетами по 1 кБ. Мне лично технология нравиться своей объектно-ориентированностью, то есть передается не поток байтов (хотя можно и так), а экземпляры классов, то есть на приемном конце не надо этот поток декодировать.

Ну а по теме котировок - проще использовать memory mapping. В приложении .NET запускаем отдельную задачу с мьютексом, MQL4 грузит в память данные и сбрасывает мьютекс, после чего приложение читает данные. Так проще и быстрее, и ДЛЛ не нужна. Надо только в MQL4 добавить системные ДЛЛ для поддержки мэппинга и мьютексов, тут недавно статья была по этой теме.

 
joeykruger:

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

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


Джо

Привет, Джо,

Есть ли какой-нибудь специальный трюк, чтобы заставить его работать на x64? Я только что скомпилировал его для x64, но при запуске dll выдает странные ошибки.