Не было гвоздя -
Подкова пропала,
Не было подковы -
Лошадь захромала,
Лошадь захромала -
Командир убит,
Конница разбита,
Армия бежит!
Враг вступает в город,
Пленных не щадя,
Оттого, что в кузнице
Не было гвоздя!
Перевод с англ., Самуил Маршак
Хороший стишок. О том, что маленькие причины влекут большие последствия, взмах крыла бабочки порождает бурю и пр. Это происходит постоянно, каждый день, м.б. каждую минуту — цепь случайных событий порождает большие последствия. Все логично, причинно-следственные связи и выявленные закономерности налицо. Такая цепочка событий всегда строится постприори.
Вам ничего это не напоминает? Правильно — это типичный образец Технического Анализа (ТА). Теперь мы можем прогнозировать события, и если в следующий раз не будет гвоздя и упадет подкова, то дальнейший ход событий очевиден — шортить надо, акции неизбежно будут падать. Некоторые, более осторожные, прежде чем шортить, подождут когда захромает лошадь, или даже убьют командира. Ну, теперь-то точно упадут.
Однако, рассмотрим ситуацию детально.
Мне нравится Lua. Lua хороший компактный язык на котором можно сделать индикаторы, различные вспомогательные программы, помогающие трейдеру и даже несложные торговые системы (ТС, роботы). Пожалуй единственная книга по Lua — Роберту Иерузалимски: Программирование на языке Lua. Ее можно найти в интернете.
Lua имеет также несложный C-API позволяющий связать программы Quik Lua с внешним миром через DLL и получить доступ практически ко всему, в том числе к любым математическим библиотекам обработки данных, что необходимо для сколь-нибудь сложным ТС. Однако, для этого уже необходимо знание не только Lua, но и Lua C-API, языка С/С++, а также умения писать DLL. При этом надо будет решить еще ряд проблем, которые возникнут по ходу пьесы в процессе этой деятельности. Далеко не каждый пользователь Quik и Lua может все это реализовать в обозримое время.
У Quik Lua (QLua) есть еще недостатки — все события терминала в Lua работают в потоке терминала, и получив из них данные надо как можно быстрей завершать функции обработки этих данных и освобождать поток терминала, иначе терминал просто повиснет. Единственная функция QLua работающая в собственном потоке — это main() и вся сколь-нибудь сложная обработка может находиться только в ней.
Кроме того, для Lua крайне мало библиотек, а существующие работают оч не быстро. В принципе, это и не нужно, если можно организовать связь с внешним миром через C-API. Но нам от этого легче не становится.) Короче, для написания хорошей сложной ТС нам надо выйти за пределы QLua и установить связь с внешним миром, и сделать это доступными средствами.
Сейчас наиболее продвинутым языком, включающим в себя массу библиотек обработки данных является Python. По применимости для обработки данных он, пожалуй, занимает первое место в мире, а по распространенности входит в первую пятерку. В числе библиотек — математические, статистические, машинного обучения и пр., и пр. Таких библиотек более тысячи только в Anaconda, большинство из которых устанавливается при ее инсталяции. Вы можете не использовать Anaconda и скачать Python с сайта
К обеду астролябия была продана интеллигентному слесарю за три рубля.
— Сама меряет, — сказал молодой человек, передавая астролябию покупателю, — было бы что мерять.
(И.Ильф, Е.Петров, Двенадцать стульев.)
Машинное обучение (МО) сейчас является очень популярной темой, и им не занимается только ленивый. В наличии масса готовых к употреблению библиотек — нейросети, леса-деревья, Байесы, и пр. и пр. Осваивается все это за пару недель и применяй — не хочу. Однако, результаты такого применения в трейдинге как правило нулевые или около того. Без толку, но, хотя-бы хорошо провели время,) узнали много нового и интересного.
Отрицательные результаты объясняюся тем, что методы МО — это не более чем математическое выражение или их набор формируемый в процессе обучения. При этом МО старается как можно точнее подогнать мат. выражение(я) под ответы представленные в обучающей выборке. Т.е., в принципе, методология МО ничем не отличается от банальной подгонки решения под имеющийся ответ. В студенческие годы, если что-то не сходилось, оч помогало умножить или разделить, скажем, на корень из Пи или корень из двух. Вот, и МО делает абсолютно тоже самое. И мы занимаемся тем же самым, когда подбираем параметры индикаторов, входов, тейков и стопов для получения от стратегии максимальной прибыли, и, надо сказать, с тем-же результатом — вся эта подгонка работает только на том отрезке, где мы подобрали, и никак на реальном рынке. К чести МО отметим, что методы МО гораздо лучше и эффективней чем мы занимаются подгонкой, и на интервале обучения получат классную ТС из практически всего, что вам придет в голову. Только реально работать это не будет.(
Таким образом, для типовых методов построения торговых систем применение МО не дает и не может дать ровным счетом ничего, и применение МО в подобных системах не имеет смысла. Можно не дергаться, такие задачи МО не решает.
Ну, и выводы:
МО следует применять для задач, имеющих решения, которые можно получить подгонкой под ответ. Для решения других задач методы МО не предназначены.
Такие задачи и следует искать для применения МО при разработке ТС. И если вы их найдете, это может сэкономить вам массу времени и сил. Подобных задач, кстати, великое множество, но с этим лучше обратиться к специальной литературе.