Избранное трейдера Андрей
Дело было в июне-июле прошлого года.
Моя благоверная уехала в гейропу на полтора месяца, и у меня возникла мысль шальная. Как получить дополнительный профит со своих знаний в области алготрейдинга. И как это сейчас модно мысль была в обучении, собрать группу, и обучить за месяц. А почему нет. Ожидался выхлоп за месяц порядка 1мл. наших деревянных, за месяц работы и с месяц подготовительной работы. Обучение хотел провести в 3 шага. 1. Теория. 2. Обучение созданию в TsLab. 3. Совместное создание рабочего алгоритма.
Начал делать сайт под это дело, с пол месяца потратил, и отложил в долгий ящик. В общем дело дальше не сдвинулось по ряду причин в связи со сменой приоритетов на короткое время.
Про третий пункт сейчас и пойдет речь.
В феврале этого года возникла мысль довести дело до конца, но начал не с сайта, а начал думать, что бы такое можно сделать сообща, такое — что бы было простое, приносило профит, не было за оптимизированно, тянуло бы нормальный объем и отвечало общей концепцией, которую я хотел озвучить на обучении.
Подумал, что многие не знают, как подступиться к языку Qlua и запустить робота в квике. А между тем, это настолько просто, что даже не требует ничего кроме квика, виндусовского блокнота и знаний самого Qlua.
Qlua – это скриптовый язык поддерживаемый квиком, в основе язык lua 5.1 (в моем квике версия такая).
Скрипты, написанные на Qlua – это обычные текстовые файлы, которые имеют расширение «.lua». То есть можно сделать файл в обычном блокноте и после сохранения поменять в нем расширение с «.txt» на «.lua». Если внутрь этого файла записать инструкции кода на языке Qlua, то квик будет выполнять их.
Для удобства написания инструкций кода лучше пользоваться не виндусовым стандартным блокнотом, а например Notepad++, который можно скачать официально и бесплатно здесь https://notepad-plus-plus.org/download/v6.9.1.html. Он позволяет включить подсветку синтаксиса различных языков программирования, в том числе и lua, что очень помогает при написании кода.
В Notepad++ в «Опции -> Настройки» можно выбрать русский язык, а в «Опции -> Определение стиля» установить для lua понравившийся стиль отображения. Я для «Язык -> lua» ставлю стиль «Выбрать стиль -> Bespin» и еще в окошке «Стиль» для последних трех «FUNC» переопределяю цвет, иначе они с фоном сливаются.
Начало здесь.
Это третья часть интервью со старшим менеджером алгоритмических стратегий большого хедж-фонда. В первой части мы обсуждали теоретическую стадию создания алгоритмической стратегии. Во второй части говорили о передаче стратегии «в производство». Это интервью вызвало много вопросов у наших читателей, ответы на которые были выделены в отдельный пост.
1.Как вы отслеживаете и управляете вашими моделями в боевых условиях? Какие дополнительные проверки и процедуры используются?
Я верю в ручное отслеживание прибыли/убытков в качестве инструмента диагностики. Мне нужно знать, каждый день, точный источник моих прибылей/убытков. Что подорожало, что подешевело, насколько и почему. Это дает мне уверенность, что модель работает, как должна, и это действует как система предупреждения плохих новостей.
Купить внизу, а продать вверху – мечта каждого трейдера. Давайте помечтаем вместе. Делаю контртрендовую систему. Придумал идею для ТС, собрал в кучу индикаторы, уже «прикрутил» сигналы на вход и выход, но впереди еще много работы… За процессом можете наблюдать здесь. https://www.youtube.com/channel/UCm_NOgkQ2BHcI5uFcR_BtNg Уже готово 3 видео. Приятного просмотра.
Копался в статьях по алготрейдингу, решил присмотреться в сторону машинного обучения. Но это в моем случае не про какой-то искусственный интеллект с нейросетями, в нейросети пока не хочу лезть, слишком сложно. Для начала хочу использовать простые алгоритмы для классификации и оценки хороших точек входа на основе обучения модели на истории.
Я исходил из того, как сам разрабатываю обычно торговую систему: ищу хорошие точки входа на истории и классифицирую их. Но так как человеческие возможности ограничены, использую только 3 таймфрейма и около 10 индикаторов в сумме. Кроме этого, история в точности никогда не повторяется и нужна какая-то более умная модель, которая не просто сравнивает индикаторы, как делают сейчас мои роботы, а дает оценку данной рыночной ситуации на основе всей совокупности индикаторов.
С помощью машинного обучения можно создать и обучить много моделей по разным алгоритмам, эта область уже хорошо развита (Logistic regression, Linear discriminate analysis, Stochastic gradient boosting, Decision trees, Support Vector Machine, KNN и другие). Можно быстро попробовать разные модели (Spot-checking algorithms). Модели могут работать вместе и делать предсказания. Можно улучшать точность моделей (Algorithm parameter tuning, Ensemble methods). Можно посчитать точность предсказаний по модели, обучив сначала модель на части выборки, а затем протестировав ее на другой части выборки (resampling).
Как я понял, R для машинного обучения идеально подходит. Сделал первые шаги сегодня: cоздал модель по туториалу, которая определяет по размеру чашелистиков и лепестков растения ирис точный вид (всего 4 вида) какого-то одного растения(особи) на основе обучения по выборке из 500 других растений(особей).
Код:
# Скачивание и инициализация библиотек mlbench(используется для machine learning), caret (используется для нормализации данных) install.packages("mlbench") library(mlbench) install.packages("caret") library(caret) # Краткая информация про базу данных iris data(iris) summary(iris) # Определение тренировочной выборки trainControl <- trainControl(method="cv", number=10) # Оценка точности алгоритма Naive Bayes на данном dataset fit <- train(Species~., data=iris, trControl=trainControl, method="nb") # Вывод оценки точности print(fit)
Сейчас я точно так же хочу сделать модель, которая на основе 30-300 хороших точек входа на истории определяет, насколько хороша данная пятиминутка для входа в лонг или шорт.
Что скажете? Есть ли там грааль? Есть ли у кого-то опыт использования машинного обучения для торговли? Что посоветуете?
Также представляю вашему вниманию грубую оценку того, на сколько в среднем ходят нефть Brent и Si за час и 1 день. Посчитал с использованием библиотеки rusquant на R. Также делюсь элементарным кодом.# Инициализация библиотеки rusquant (русская версия от quantmod, поддерживает все функции quantmod) library(rusquant) # Получение исторических данных с Финама getSymbols("SiM6", from=Sys.Date()-30, src="Finam", period="day") # Рисуем график, чтобы увидеть данные candleChart(SIM6) # Расчет доходностей встроенной функцией библиотеки rusquant (унаследована от quantmod) rr <- OpCl(SIM6) # Цены закрытия p <- Cl(SIM6) # Получение абсолютного значения среднеквадратичного отклонения доходности sd(rr)*mean(p) [1] 757.7013 # Аналогично для часовика getSymbols("SiM6", from=Sys.Date()-30, src="Finam", period="hour") candleChart(SIM6) rr <- OpCl(SIM6) p <- Cl(SIM6) sd(rr)*mean(p) [1] 234.9929 #Аналогично для BRK6.