Статья интересная. Все понятно описано. Я только учу программирование С#. Робота можно написать на С#? И как это сделать, что бы он мог торговать в терменале? За ранее большое спасибо!
Irina Dymura: Статья интересная. Все понятно описано. Я только учу программирование С#. Робота можно написать на С#? И как это сделать, что бы он мог торговать в терменале? За ранее большое спасибо!
Возможно все, но куда оптимальнее писать его сразу на MQL5. Однако либо в образовательных целях, либо для иных потребностей, можете попробовать. Существует несколько вариантов, самый простой и оптимальный из них - это прописать всю логику на C# в проекте dll (динамическая библиотека). Далее в ней же объявить публичный класс с рядом публичных статических методов (они будут экспортироваться как С функции в MQL5). Примерно класс должен содержать метод инициализирующий робота, уничтожающий робота и вызываемый на каждом тике (аналоги OnInit, OnDeinit, OnTick). Затем создается робот в MQL5 куда экспортируются упомянутые мною статические функции из созданной dll и после компиляции получится следующая стыковка: 1. MQL5 в OnInit вызывает инициализизирующий метод из dll. В dll инициализируется класс робота в статическую переменную.
2. MQL5 OnTick вызывает метод OnTick из dll, а в ответ получает признак продавать / покупать / не чего не делать. Если нужно войти в сделку - то входим кодом прописанным в MQL5.
3. MQL5 OnDeinit удаляет робота, мы вызываем метод OnDeinit из dll и делаем что то. в C# удалять классы не нужно, этим занимается Garbige Collector, там все с памятью практически автоматизировано.
Т.е. вычисления на стороне C#, а торговля на стороне MQL5.
Так же существуют некоторые подобия API для терминала где через pipe или иные соединения код из C# напрямую взаимодействует с MQL5, даже на гитхабе натыкался на подобный проект, но по моему мнению проще прописать все через dll.
В прошлом цикле статей про управление оптимизацией - я показывал как через dll подружить графический интерфейс WPF с C#. Вот по этому же способу можно и робота перенести в C#. До моей статьи так же писали про графический интерфейс но только WinForms и MQL5, часть этого механизма я к себе на вооружения взял, не припомню ссылки на ту статью, но она тоже довольно дельная. Вроде я вот в этой статье на нее где то ссылался.
Так же в 3 статье из данного цикла статей - описано как ряд статических функций экспортировать в MQL5 из dll.
Вопрос альтернативного запуска терминала MetaTrader уже поднимался в статье Владимира Карпутова, а так же на сайте MetaTrader — существует страница, описывающая порядок работы и альтернативного способа запуска терминала. Оба перечисленных источника легли в основу данной статьи, однако ни в одном из них нет описания как создать удобный и...
Guilherme Mendonca: Здравствуйте! Итак, прежде чем я смогу использовать эту программу, мне придется конвертировать ее с помощью Visual Studio?
Здравствуйте. Это первая статья из 5 частей, которые уже опубликованы. В 4-й части - полная программа. И да, вам придется компилировать некоторый код в visual studio. Если говорить о коде, который был приведен в текущей статье - то да, его нужно компилировать в visual studio.
Статья интересная. Все понятно описано. Я только учу программирование С#. Робота можно написать на С#? И как это сделать, что бы он мог торговать в терменале? За ранее большое спасибо!
Возможно все, но куда оптимальнее писать его сразу на MQL5. Однако либо в образовательных целях, либо для иных потребностей, можете попробовать. Существует несколько вариантов, самый простой и оптимальный из них - это прописать всю логику на C# в проекте dll (динамическая библиотека). Далее в ней же объявить публичный класс с рядом публичных статических методов (они будут экспортироваться как С функции в MQL5). Примерно класс должен содержать метод инициализирующий робота, уничтожающий робота и вызываемый на каждом тике (аналоги OnInit, OnDeinit, OnTick). Затем создается робот в MQL5 куда экспортируются упомянутые мною статические функции из созданной dll и после компиляции получится следующая стыковка:
1. MQL5 в OnInit вызывает инициализизирующий метод из dll. В dll инициализируется класс робота в статическую переменную.
2. MQL5 OnTick вызывает метод OnTick из dll, а в ответ получает признак продавать / покупать / не чего не делать. Если нужно войти в сделку - то входим кодом прописанным в MQL5.
3. MQL5 OnDeinit удаляет робота, мы вызываем метод OnDeinit из dll и делаем что то. в C# удалять классы не нужно, этим занимается Garbige Collector, там все с памятью практически автоматизировано.
Т.е. вычисления на стороне C#, а торговля на стороне MQL5.
Так же существуют некоторые подобия API для терминала где через pipe или иные соединения код из C# напрямую взаимодействует с MQL5, даже на гитхабе натыкался на подобный проект, но по моему мнению проще прописать все через dll.
В прошлом цикле статей про управление оптимизацией - я показывал как через dll подружить графический интерфейс WPF с C#. Вот по этому же способу можно и робота перенести в C#. До моей статьи так же писали про графический интерфейс но только WinForms и MQL5, часть этого механизма я к себе на вооружения взял, не припомню ссылки на ту статью, но она тоже довольно дельная. Вроде я вот в этой статье на нее где то ссылался.
Так же в 3 статье из данного цикла статей - описано как ряд статических функций экспортировать в MQL5 из dll.
Итак, прежде чем я смогу использовать эту программу, мне придется конвертировать ее с помощью Visual Studio?
Здравствуйте!
Итак, прежде чем я смогу использовать эту программу, мне придется конвертировать ее с помощью Visual Studio?
Здравствуйте. Это первая статья из 5 частей, которые уже опубликованы. В 4-й части - полная программа. И да, вам придется компилировать некоторый код в visual studio. Если говорить о коде, который был приведен в текущей статье - то да, его нужно компилировать в visual studio.