Обсуждение статьи "Непрерывная скользящая оптимизация (Часть 1): Механизм работы с отчетами оптимизации" - страница 2

 
Статья интересная. Все понятно описано. Я только учу программирование С#. Робота можно написать на С#? И как это сделать, что бы он мог торговать в терменале? За ранее большое спасибо!
 
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.

Управление оптимизацией (Часть I): Создание графического интерфейса
Управление оптимизацией (Часть I): Создание графического интерфейса
  • www.mql5.com
Вопрос альтернативного запуска терминала MetaTrader уже поднимался в статье Владимира Карпутова, а так же на сайте MetaTrader — существует страница, описывающая порядок работы и альтернативного способа запуска терминала. Оба перечисленных источника легли в основу данной статьи, однако ни в одном из них нет описания как создать удобный и...
Причина обращения: