Обсуждение статьи "Непрерывная скользящая оптимизация (Часть 1): Механизм работы с отчетами оптимизации" - страница 2
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Статья интересная. Все понятно описано. Я только учу программирование С#. Робота можно написать на С#? И как это сделать, что бы он мог торговать в терменале? За ранее большое спасибо!
Возможно все, но куда оптимальнее писать его сразу на 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.