Торговый робот. Начало
1. Зачем это нужно
Семья растёт, потребности тоже. Усталость от жизни в квартире накапливается. Нужен дом. Но есть условие: не 10 лет строить и не 30 лет платить ипотеку. Нужно быстро, как следует, и чтобы потом можно было хорошо продать в случае чего, хоть через 30 лет и не по цене участка. Для этого нужен ресурс. Много денег.
2. Почему робот, а не руки
Был опыт ручной торговли. С x5 за пару месяцев и сливом за последующую неделю. Было и “месяцами держать акции, ради 3% прибыли”. Я понял простую вещь: когда рынок растёт — легко зарабатывать. Когда картина меняется — нужен расчёт и железные нервы.
Для расчёта нужно уметь не просто хорошо считать, а охренительно хорошо считать. А нервы должны выдерживать вес «Титаника». Ну или быть чертовски везучим.
Дважды я попадал в волну роста, где собирал невероятную прибыль. И дважды не мог принять разворота рынка. Когда несколько дней подряд наблюдаешь, как прибыль растёт на 50-100%, любую просадку после воспринимаешь как временную коррекцию. «Сейчас чуть откатится и снова вверх». Это сложно преодолеть. Надежда начинает управлять капиталом.
В какой-то момент я увидел две вещи:
- Торговать руками я не смогу — не из того теста сделан.
- Хорошо заработать тут вполне реально.
Нужна стратегия, которой нужно придерживаться и оптимизировать по мере необходимости. И это абсолютно точно выглядит как программа. Робот не будет жадничать. Робот не будет надеяться, что рынок просто чуть просел и сейчас отыграюсь. Робот не будет жалеть потери части прибыли.
3. Инструмент (Go)
Go практически идеален для таких задач. Писать и разворачивать просто, скорость высокая. Многопоточность и конкурентность — легче не придумаешь. Системы типов более чем достаточно для целей. Никакой лишней магии. Да и вообще я давно и надолго влюблён в Go, и даже Rust не смог поколебать этой любви.
4. Что сейчас. Реальность
На данный момент робот работает уже несколько недель в боевом режиме без серьёзных багов. Прибыли пока не приносит, но и не спускает портфель. При том, что нормальную конфигурацию стратегии для одного инструмента я только вчера подобрал.
Когда я только начинал писать робота, то думал, что самое сложное будет настроить алгоритм. В чём-то я оказался прав, только сложность не в том, чтобы выбрать правильные алгоритмы и правильно их связать, а в том, чтобы подобрать к ним параметры и заставить их меняться вслед за рынком.
Когда я вывел робота из песочницы, то первая неделя у меня ушла на устранение багов самого механизма торговли. Ещё пара недель на то, чтобы пополнить список сигналов и настроить всю обвязку. И вот уже второй месяц я занимаюсь тем, что подбираю параметры для всей той прорвы анализаторов рынка.
Поверх робота уже вырос целый монстр, цель которого — найти тот баланс параметров, который будет приносить стабильную прибыль. Кажется, там кода уже больше, чем во всём роботе… Генетический алгоритм, walkforward, кросс-валидация, refine, fitness, holdout… Столько всего туда было добавлено… Без нейросетей я бы год с этим колупался. Но получился действительно мощный механизм, который с помощью 70 параметров способен перебрать и проверить тысячи конфигураций и выбрать другие 100+ параметров, которые для одного конкретного инструмента показывают хорошую прибыль даже вне окна тестирования.
Я добился того, чтобы эта махина научилась находить подходящие параметры. Теперь нужно сделать из этого монстра ручную собачку. Заменить 70 параметров оптимизатора парой ручек, которые можно будет подкручивать для получения нужного результата. И это работа ещё на несколько месяцев, скорее всего. В течение которых, как я надеюсь, робот уже начнёт приносить мне прибыль, а не только отнимать время, силы и деньги (потраченные на платные LLM, без которых я бы ещё не скоро добрался до текущей точки).
5. Цель
Написание робота было и осталось не только возможностью закрыть финансовые вопросы, но и вызовом, и интересным хобби. Когда твой проект не просто интересен, а может изменить твою жизнь — работать над ним становится в разы интересней.
Disclaimer: Это не инвестиционная рекомендация. Код может содержать баги. Root-права на деньги всегда у вас.