Блог им. iddqd3n

Решил диверсифицироваться алготрейдингом

Пока смартлаб соревнуется в медицинских познаниях, я решил монетизировать старые навыки. Я почти 20 лет (сам офигел, как подумал!) занимаюсь программированием, от php до с++, от мелких сайтов до игровых движков и ИИ компьютерных противников. А тут нарисовалась свободная неделя как раз. С 2017-го хотел этим заняться, внеплановые каникулы наконец-то позволили.

В прошлое воскресенье прочитал мануалы по Lua/QLua (+1 ЯП в базу знаний) и спецификации по Квику, полистал форумы, глянул пару примеров, 10-12 часов работы… и простенький бот готов. Первое впечатление — это мало отличимо от программирования ИИ персонажей компьютерных игр :) Те же циклы, коллбэки, статусы, принятие решений, отслеживание их выполнения и т.п.

Т.к. я не верю в бэктесты и демо-счета, понедельник погонял в режиме виртуальных сделок, выпилил самые грубые ошибки, а со вторника выделил лимит на одном из реальных счетов. Бот пилил 4 дня с утра до вечера, я прямо на ходу отлавливал баги и вносил корректировки.

Был забавный момент, когда подвис инет, и бот выставил пару лишних сделок, т.к. не получил инфу о старых заявках и не смог их вовремя снять. Но что-то подобное я и ожидал, поэтому и начал сразу на реальном счету, чтобы знать, где затыкать реальные дыры с минимальным ущербом. А в остальном всё заработало с первого раза, можно сказать. Причём даже так, как надо. Что странно :D

Что ещё более странно — я даже денег заработал.

Зачем мне это?

1) Диверсификация, как ни странно, можно 5-10% денег выделить. У меня уже есть аналогичный счёт для краткосрочных спекуляций (трейды от пары дней до пары месяцев) и хеджа основного инвестсчёта, теперь будут ещё и роботы.

2) Этот же движок я адаптирую под ИИС, но не для спекуляции, а для ловли шпилек вниз на нужных мне тикерах. Вечером часто вижу, что нужные мне инструменты днём просаживали куда ниже той цены, что меня устраивает, а каждое утро ставить десятки лимиток как-то не айс, тем более лимитки блокируют деньги на счету, на всё сразу я вряд ли смогу их наставить.

3) Это прикольно, в конце концов! Я будто вернулся в ~2006-й, когда сидел ночами и отлаживал поведение виртуальных болванчиков.
★3
33 комментария
Круто!

Трейдер с сильными скиллами по программированию рано или поздно должен «сойтись» в алготрейдера). Странно, что ещё не). 
avatar
Replikant_mih, ну я как бы и не трейдер вовсе :) У меня есть основной доход вне биржи, в основном я полупассивно инвестирую, а тут выдалось время, и я решил сделать то, насчёт чего руки давно чесались.

Сомнительно, что я выделю какой-то внятный лимит под это дело, но даже если эти 5-10% будут показывать динамику не ниже инвестиций — я всё равно в плюсе чисто математически :)
avatar
Денис Г., А, ну ясн. Ну тогда это вопрос не только скиллов, но и предпочтений, предрасположенности. Те, кому подходят инвестиции и те, кому более активный трейдинг — обычно разные люди, да. Ну удачи в новом начинании в любом случае! :)
avatar
А что архитектуру сразу взяли помойную? На метаке 5 быстрее все можно сделать.
ну хоть так
avatar
Зачем мне это?
Я бы спросил о другом — почему через 20 лет программирования?
Ведь можно было и через 30! ))
avatar
Бэк тесты зря игнорируете. Я не говорю о десятках лет, но несколько месяцев бэктеста не повредит, а уж потом на виртуальные сделки с ловлей багов- хотя бы неделя. Ну, а дальше уже и на реал можно.
Ну, а неск дней реала — эт пока ни о чем.
avatar
В бэк тесты не верите- сольете в итоге, имхо. Бек тесты обязательны. Только по ним можно найти закономерности и никак иначе. Написать робота по задумке много времени не надо. А вот стабильного и профитного без бек тестов, увы, не выйдет. Рынок меняется все время и только бек тестами его можно быстро подкрутить. Кто говорит, что в бек тесты не верит или это подгон, просто не умеет готовить:) бек тесты надо не на индикаторах делать, а только логикой без всяких индюков, имхо, и тогда не будет никаких переоптимизаций. Но подкручивать придется любого Со временем. Нет таких граалей навсегда
avatar
GoodBargains, у меня есть несколько ботов, которые я несколько лет подкручивал, а сейчас они уже пару лет без подкрутки и не подвели на текущей сверхвысокой воле, а наоборот, заработали сверх прибыли, тк был там и анализ 2008 года… Как то так. Без бектестов ваще нереально
avatar
GoodBargains, я не использую индикаторы и не пытаюсь угадать движение цены :) Я использую примерно ту же стратегию, что и на ручных спекуляциях, просто робот может позволить:

1) Почти неограниченное внимание за неограниченным количеством инструментов.
2) Куда бОльшую частоту сделок, чего я никогда не буду делать руками, хотя и робот за неделю даже сотни не сделал :)

Это не совсем классический трейдинг, это скорее попытка делать то, что я делаю будучи инвестором, только в более мелком масштабе и в сотни раз чаще :)
avatar
Денис Г., тем более нужен бек тест, тк 99 кажущихся рабочими логик не рабочие:) Вы руками ещё и в плюс торгуете интрадей, особенно на текущем рынке?
avatar
GoodBargains, 
Вы руками ещё и в плюс торгуете интрадей, особенно на текущем рынке?

Нет конечно :) Интрадей я не торгую вообще и никогда не собирался. Как-то не прельщает :) Для «рук» у меня, грубо, два счёта (точнее, два пула счетов) — примерно 95/5 долгосрок/краткосрок. Причём мой краткосрок — это до пары месяцев.
avatar
GoodBargains, все верно. А еще как минимум бектесты помогают выявить какую-нибудь тупую ошибку в коде. И это уже совсем тупо ставить алгоритм с таким дефектом на реал… Часто логика стратегий такая сложная (хотя бы из-за того, что нужно обрабатывать большое число исключительных ситуаций, каждая из которых в себе тоже может нести по нескольку новых таких), что без тестирования ошибку никак не найдешь.
avatar
А какой у вас основной метод инвестиций?
avatar
dendisa, на основе asset allocation. Есть и отдельные акции/облигации, и фонды. Есть полностью пассивная часть, есть немного более активная, но в целом сделки месяцами не совершаю.
avatar
Бэктэсты — фигня, деньги — наживное. Главное, чтобы мана росла и скилы прокачивались! 
avatar
bocha, странно от вас это слышать про бектесты
avatar
GoodBargains, да я-то как раз бэктестирую, но кто я, чтобы советовать настоящим сталеварам  ))
avatar
Т.к. я не верю в бэктесты и демо-счета
А это не вопрос веры) Это способ проверить, ваш робот работал бы раньше или нет. И если он раньше работал, то шансы что он в принципе работает выше. Особенно если вы используете закономерности, которые существуют уже лет 10.
avatar
а почему Lua именно? а не Python к примеру
avatar
Alex Yeskov, конкретно мне нет смысла. Lua встроен, не надо ничего городить. Возможно, придётся что-то запилить отдельно для уведомлений на телефон, но это мелочи.
avatar
Денис Г., встроен куда? как sdk/api в какую-то систему? извините, я не в теме… трейдингом занимался и программированием по отдельности, тоже только начал интересоваться
avatar
Alex Yeskov, в самом квике встроена виртуальная машина Lua, поэтому там эти скрипты «как родные». Всё остальное по факту цепляется через неё же по схеме quik <-> lua <-> внешний мир.
avatar
Денис Г., понял, спасибо! с Lua я сталкивался в универе в Германии, его для моделирования разных временных процессов используют активно, а также потом узнал что и в геймдеве… видимо рынок в ту же категорию попадает :)
avatar
Alex Yeskov, ага, Lua — быстрый и мощный скриптовой ЯП со свободной лицензией, для встраивания самое то.
avatar
 Что выходит квик до сих пор не исправили этот баг, когда при зависании теряется id и идет черть е че с задвоением, затроем сделок и тд???? Неужели? Я эту ерунду ещё лет 5-6 назад заметил. Ну вот это квиковцы)))
avatar
GoodBargains, id не совсем потерялись… События просто пришли не по порядку — сначала сделка сработала, а потом уже пришли статусы транзакций :) Что немного снизило смысл дефолтных коллбэков и заставило написать свою очередь с перепроверками.

Ну а множественные коллбэки на одни и те же сделки — это как я понял фича :) Каждый реконнект срабатывает по коллбэку на каждую сделку (даже давно выполненную) на каждое открытое окно сделок. Изврат конечно, непонятно применение на практике, ну т.е. о чём разработчики думали в этом случае.
avatar
Денис Г., колбэки — ненадежная конструкция, хотя и удобная. Надежнее анализировать таблицы лимитов по деньгам, и бумагам. Там косяки гораздо реже (если не считать задержки при нагрузке). 
avatar
SergeyJu, ага, понял это в первый же день на реальном сервере :)
avatar
SergeyJu, как раз наоборот. Надежнее отслеживать колбэки по ордерам и сделкам. Лимиты могут не обновляться часами, когда сервера начинают тупить.
avatar
Денис Г., 
То что колбэки на транзакции, ордера и сделки приходят асинхронно — это технология биржи, а не кривые разрабы. Да, сделки могут приходить раньше отчета о транзакций и могут приходить повторно при переподписке. Это надо учитывать в коде.
avatar
yurikon, а иногда колбеки вообще не приходят. И я видел такие жуткие про… бы на этой почве, что не дай Бог. 
avatar
SergeyJu, такое бывает очень редко против обновления лимитов. Для безопасности можно сравнивать две временные метки — время последнего колбэка и время последнего апдейта по лимиту. Если после апдейта по ордеру лимит не изменился, то он не валидный.
avatar

теги блога iddqd3n

....все тэги



UPDONW
Новый дизайн