Обсуждение статьи "Создание графических интерфейсов для экспертов и индикаторов на базе .Net Framework и C#" - страница 14
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Пример дан в анонсе https://www.metatrader5.com/ru/releasenotes/terminal/1898
MQL5
Для работы с функциями .NET библиотеки достаточно импортировать саму DLL без указания конкретных функций. MetaEditor автоматически импортирует все функции, с которыми возможна работа:
Для вызова функций из библиотеки просто импортируйте ее:
C# код функции Inc класса TestClass выглядит следующим образом:
В результате выполнения скрипт вернет значение 42.
Работа над поддержкой .NET библиотек продолжается, в будущих версиях планируется расширить возможности их использования.
Функции WinAPI сгруппированы в отдельных файлах по назначению:
Обвязка работает только с 64-битной архитектурой.
Не работает:GuiController скачал с репозитория. Установил Visual Studio 2022, создал форму с кнопкой, запускаю в MetaTrader 5, получаю ошибку....
в Visual Studio community 2019 всё работает, как у автора,однако когда он пишет:
"Каждая форма имеет открытый список элементов, которая она содержит. Перебирая список элементов, метод находит те из них, что контроллер способен поддержать, и подписывается на нужные ему события. Если элемент на форме не поддерживается контроллером, то он просто будет проигнорирован. "
Увы, если разместить на тестовой форме SplitContainer или DataGridView, форма вообще не запускается не понятно почему, однако такой сложный компонент как Chart ЗАПУСКАЕТСЯ.
Прилагаю тестовый пример какие компоненты возможно использовать при доработке(хоть форма запускается!)
при попытке создать контроллер GuiController controller = new GuiController(assembly, form, m_global_events);
выдает Unexpected exception: Ключ с таким именем уже существует (для DataGridView) и контроллер НЕ СОЗДАЕТСЯ(форма же создается, наверное ее можно показать,но без контроллера как управлять?)
еще раз все ОК если нет компонентов SplitContainer и/или DataGridView
может кто еще споткнется
вот это место в статье
"Как видите, компилятор понимает внешние перечисления определенные в Net-библиотеках и умеет с ними работать."
Не знаю пока по какой причине, но компилятор упорно отказывается понимать C# перечисления, поэтому тащим enum из C# в Mql5 и все работает.
Только, Василий, вы в торговой панельке кнопки Buy и Sell расположили наоборот ))
А вообще, крутейшая штука получилась. Спасибо вам за труд! )
У меня возникла та же проблема.
Я эту проблему решил немного по-другому - вместо ClickOnElement написал GuiEventType::ClickOnElement. И после этого компилируется и работает без проблем. Но если всё обстоит именно так, то действительно непонятно, как это работало у Василия. Возможно я что-то не так сделал...
Ну а в остальном вещь действительно нужная и полезная. Жаль, что в MQL5 нет чего-то подобного (встроенного).
У меня возникла та же проблема.
Я эту проблему решил немного по-другому - вместо ClickOnElement написал GuiEventType::ClickOnElement. И после этого компилируется и работает без проблем. Но если всё обстоит именно так, то действительно непонятно, как это работало у Василия. Возможно я что-то не так сделал...
Ну а в остальном вещь действительно нужная и полезная. Жаль, что в MQL5 нет чего-то подобного (встроенного).
У меня была такая ошибка:
@MQL_User, cделал как вы: " ...вместо ClickOnElement написал GuiEventType::ClickOnElement" - все заработало!
Для MT4 это не работает. Я пробовал, но безрезультатно.
Я относительный новичок в MQL5 и многое узнал из этой статьи! Спасибо большое!
У меня есть один вопрос. Последние 2 дня я пытаюсь разобраться с тем, что написано ниже.
Я успешно выполнил каждый шаг несколько раз, даже на другом компьютере, но каждый раз, когда я пытаюсь скомпилировать код, я получаю сообщение об ошибке.
Компилятор MQL выдает сообщение : "Undeclared Identifier" для любого из перечислений ниже.
Если я "закомментирую" эти перечисления из MQL5, то все будет работать, что интересно, так как это означает, что код работает, но не может прочитать перечисления, что я и предполагаю?
Если кто-то сможет мне помочь, я буду очень признателен :)
Спасибо,
Я читал, что в MQH-файле нужно объявлять перечисления точно так же, как они были объявлены в DLL.
string ReceiveEvent(int event_n); // Returns JSON string.. Use JAson.mqh to Deserialize objectsКак мне использовать это внутри OnTimer()?
Я использую тот же подход, что и в статье.
Мой вопрос: какой int мне нужно передать внутри функции ReceiveEvent?Извините за мое невежество, но я не понимаю.
Подскажите, пожалуйста, что не так с программой GuiMtController.mq5, которая сообщает об ошибке при запуске?