Есть шикарная идея - создать универсальный робот. Который будет включать в себя 100 000 алгоритмов. Через автоматическую генерацию сигналов.
Модель выглядит так. Есть шаблонизатор. Это генератор сигналов на основе данных, которые он понимает. Данные - это индикаторы, паттерны и некоторые фиксированные значения параметров. Получив сигналы, генерируем стратегии. Любая стратегия - это как минимум один сигнал на вход, один сигнал на выход. Т.е. по сути взятие из списка сигналов и постановка их для входа и выхода.
Опишу самый популярный подход для сигналов:
Есть индикатор. На его основе можно создать множество сигналов. На базе одного индикатора - RSI, к примеру. Можно создать сигналы:
1,2) Если RSI больше/меньше средней его диапазона. 3,4) Если цена выше/ниже целевого уровня. 5) Если его сдвиговый собрат пересекает. И так далее
Т.е есть индикатор в своем диапазоне + значение сигнального уровня. Есть шаблонизатор, который понимает эти данные на вход, выдает сигналы. Есть генератор стратегий. Который принимает сигналы, выдает стратегию. Где каждый параметр - это некая комбинация сигналов.
Шаблонизатор способен принимать несколько однотипных индикаторов, тем самым увеличит количество сигналов. Генератор стратегий способен принимать несколько шаблонизаторов.
Стоит вопрос, как это все лучше запрограммировать?
В отношении шаблонизатора, есть сложный момент. Что он должен выдавать? Дело в том, что есть так называемые зависимые модели. К примеру трейлинг применим к входу. От него идет подсчет.
Стоит учесть, что в итоге мы получаем трудо затратную модель. Которую стоит прогонять в оптимизаторе. Требуется как то упростить математические операции. Точнее, важно, не выполнять заранее, так как искать будем на ограниченном количестве сигналов – т.е. по некому алгоритму. Но это потом, пока полный перебор.
Генератор сигналов в дальнейшем нужно будет доработать до комбинаций сигналов. Н-ое количество на вход, так же на выход.
В дальнейшем нужно будет создать генератор на основе результатов прохода в оптимизаторе стратегий. Т.е прочесть данные из файла, и на основе их выбрать сигналы. Т.е. нужна идентификация этих сигналов. Потому что полный перебор по всем сигналам математически не вычислим – по временным ограничениям и железу . А некоторые сигналы для входа, другие выхода должны попасть в черный список, и в список предпочтений. Потому что одни в принципе носят противоположный характер. А поиск должен производиться по лучшим.
И лучше все как на начальном этапе сформировать правильный подход. Который, в голове, никак не формируется у меня.
Если подскажите, как архитектурно все это представить – большой плюс вам в карму. Если напишите – заплачу.