В топике
Использование Машинного Обучения в торговых системах. Простейшее применение описаны принципы построение логики ТС с применением Машинного Обучения (МО). Вкратце опишем пути реализации.
Это уже посложней — нам понадобятся знания Lua, С++ и Python.
Я предпочитаю ничего не делать сам, особенно, если для написания программы требуется изучение и реализация сложных алгоритмов. Зачем это делать, если можно использовать уже готовое. В современном программировании это один из основных принципов объектно-ориентированного программирования — берешь готовый объект и используешь. Если есть уже готовые библиотеки с нужными программами, то их и используем — сокращает время реализации, не надо беспокоиться об отладке, и много других плюсов. Извините, ленив и нелюбопытен — есть масса других интересных вещей, на которые можно потратить свое время.
Для начала пишем на C++ простенькую DLL для связи с Lua — шаблон проекта такой DLL вы можете найти в моих топиках. Нужный Вам код вам придется писать самим.
Далее, подключаем нашу DLL (скажем, LogicDLL.dll) к программе Lua с помощью
require(«LogicDLL»). В функции Lua
OnInit() запускаем Python и, если нужно, его функцию DLL загружающую в Python вашу Python программу и данные, необходимые для ее работы — всяческие константы, матрицы МО, необходимые для работы ваших методов и прочее.
Теперь нам осталось только периодически вызывать из Lua функцию С++, которая, в свою очередь, будет вызывать и передавать в метод МО Python необходимые для МО данные и возвращать в Lua результат вычислений.
Немного о Python. Активация и вызов функций Python осуществлятся из С/С++ через Python C-API. Все это расписано в документации Python -
Справочное руководство по Python / C API и
Расширение и встраивание интерпретатора Python в котором приводятся конкретные примеры использования Python в программах С/С++.
Да, немного сложновато, но, если вы знакомы с С/С++, на освоение этого уйдет несколько дней, но взамен вы получите доступ ко многим библиотекам Python (и не только МО, но и многим другим, реализация которых в Lua или С++ нам и не снилась.).
Теперь, чтобы было чуть понятней, немного о том, как я делаю стратегии и ТС.
Вначале я пишу стратегию на Python и отлаживаю ее на исторических данных. В Python очень удобно и быстро строить и перестраивать графики, гистограммы, таблицы, проводить анализ данных — в общем, любой каприз за ваши деньги.
После полной отладки стратегии, если в этом есть смысл, стратегия переводится на рабочий язык ТС. В случае с Quik мы имеем рабочие языки Lua и DLL написанную на C++. В моем случае, основной код стратегии расположен в DLL, Lua в основном предназначена для трансляции данных терминала в DLL и выполнения запросов из DLL к функциям Lua программы.
В ходе переноса стратегии на язык ТС, то, что несложно реализовать на Lua или С++ переписывается на рабочие языки ТС, а то что сделать сложно остается в Python и вызывается из него функциями DLL.
Многие воротят нос от Python, говоря о его низком быстродействии. Этого я вообще не понимаю. Если вы успеваете в Quik щелкать мышкой купи/продай, то Python это тем более успеет. Кроме того, Python, в нашем случае, используется как язык сценариев и его доля времени в исполнении программы очень невелика — основную долю времени занимает обработка данных библиотеками Python, а они очень быстрые и, как правило, представляют собой скомпилированные С++ программы.
У меня C++ 17 в Visual Studio не взлетел.
VS 2015 удалил за ненадобностью, 2017 проекты 2015 открывает и автоматом сама под себя перестраивает.
На компе Win 10 Pro.
Снова общие слова, и ни строки кода.
Пример статьи здорового человека:
smart-lab.ru/blog/624695.php
И нафига так усложнять?
github.com/bastibe/lunatic-python