Инвестиции с нуля

От первого шага до первой прибыли

Робот Scatter&Gather: Время разбрасывать камни и время собирать камни

Scatter&Gather v10.4_medium: Как я победил «фантомную» ошибку и зачем моим роботам нужен «мозговой центр»

Приветствую коллеги-трейдеры и просто любопытные умы, заглянувшие в кухню алгоритмической торговли. Сегодня я хочу поделиться с вами не просто анонсом новой версии робота, а целой историей эволюции. Историей борьбы с призрачными багами, переосмысления архитектуры и, наконец, выхода на порог совершенно нового уровня автоматизации. Речь пойдет о финальной, medium-версии моего детища — Scatter&Gather v10.4.

Почему «финальная»? Не потому, что идеал достигнут — в нашем деле он недостижим по определению. А потому, что эта версия стала той самой стабильной и предсказуемой платформой, на которой я, наконец, могу с чистой совестью остановиться и сказать: «База готова. Теперь можно строить надстройку». Но обо всем по порядку.

Охота на призрака: как одна незаметная ошибка учила меня смирению

Работа над торговым роботом — это лучшая школа терпения и внимательности, которую только можно придумать. Рынок здесь выступает не главным экзаменатором. Первым и самым строгим судьей становится твой собственный код. Он может месяцами работать безупречно, а потом вдруг проявить характер, подобно капризному гению, который в решающий момент «забывает» самое важное правило.

Именно такая история приключилась с восьмой версией S&G. Ошибка была на редкость коварной и тихой. Она не приводила к катастрофическим сбоям или «сливу» счета. Ее воздействие было точечным и почти незаметным — до того рокового момента, когда цифры в отчете брокера и во внутренней бухгалтерии робота начинали расходиться, как показания двух не сговорившихся свидетелей. Представьте: робот, как педантичный управляющий, дает команде QUIK отозвать все активные лимитные заявки по окончании сессии. В этот самый миг одна из заявок исполняется. И возникает информационный вакуум: робот считает позицию отозванной, а актив уже куплен. Он «теряет» лот из виду. Или другой вариант — проскальзывание цены — когда сделка успела исполниться только частично, но робот уверен, что она исполнена полностью.

Поиск этой неполадки напоминал расследование с отсутствующим трупом и косвенными уликами. Логи молчали, тесты проходили успешно. Ошибка проявляла себя случайно и неуловимо, словно цифровой призрак. Осознание ее сути стало моментом прозрения. Проблема была не в логике, а в самой парадигме использования лимитных заявок в условиях асинхронности событий терминала. Это был системный сбой коммуникации между моим алгоритмом и реальностью биржевого стакана.

Решение, как это часто бывает, пришло через радикальный отказ от проблемного механизма. В v10.4 я полностью отказался от прямого выставления лимитных заявок в стакан. Вместо них был создан механизм внутренних «предзаявок». Это концептуальный сдвиг: теперь робот сначала принимает решение внутри себя («если цена достигнет этого уровня, я куплю»), а лишь затем, в момент истины, выставляет рыночную заявку, гарантирующую исполнение. Призрак был изгнан. Данные брокера и робота наконец сравнялись и пожали друг другу руки.

Не просто сеточник: философия «Разброса и Сбора» в действии

Название «Scatter&Gather» — это не просто красивая метафора. Это суть стратегии, зашитая в код. «Время разбрасывать камни» — это фаза накопления лотов на падающем рынке, покупка все дешевле и дешевле. «Время собирать камни» — это фиксация прибыли на отскоках, продажа от последней купленной к первой (принцип LIFO). Цикл замыкается, когда продан самый первый лот, и робот, получив свою прибыль, готов начать все сначала.

Но что отличает эту версию от примитивных сеточников, обреченных на просадку при затяжном тренде? Адаптивность. Я давно отошел от идеи тупого следования за ценой. Робот должен обладать хотя бы зачатками «чувства рынка». Так родился модуль машинного обучения ML_Enhancer — модуль, который в режиме реального времени анализирует состояние рынка по четырем состояниям: НОРМАЛЬНЫЙ (боковик), ВОЛАТИЛЬНОСТЬ, ТРЕНД+ (рост) и ТРЕНД- (падение).

Это не машинное обучение в полном смысле, а скорее система эвристических правил, основанная на свечах, объемах и индикаторах вроде EMA и ATR. Однако ее эффект огромен. В режиме ТРЕНД- модуль полностью блокирует новые покупки, сохраняя «порох сухим». При ВОЛАТИЛЬНОСТИ он увеличивает шаг между заявками, давая цене больше пространства для маневра. В ТРЕНД+ — наоборот, уменьшает шаг и увеличивает объем первой покупки, чтобы активнее участвовать в движении. Робот перестал быть статичным инструментом; он стал гибкой системой, подстраивающейся под рыночную погоду.

Почему не Full? Или мой путь от тактика к стратегу

Изначальный план был линейным: за medium-версией должна была последовать full, нашпигованная настоящим машинным обучением. Но в процессе работы я пришел к осознанию, которое перевернуло все планы. Написать робота с помощью ИИ можно, но этот путь усеян подводными камнями, о которых я подробно написал в предыдущей статье «Программирование с ИИ: Когда код пишется за вас, но думать всё равно приходится самому». Я спросил себя: что важнее — продолжить попытки создать одного супер-робота, невероятно сложного и капризного, или выстроить систему?

Ответ стал основой для новой философии. Вместо того чтобы наращивать интеллект одного бойца, постоянно натыкаясь на ограничения чата DeepSeek и бесконечно устраняя все новые и новые ошибки, я решил создать штаб. Мой следующий проект — «мозговой центр», робот-руководитель. Его задачи будут лежать на макроуровне:

1. Динамическое распределение капитала. Он будет оценивать эффективность целой команды подчиненных роботов и распределять между ними средства. Зарабатывающий робот получит больше «топлива», убыточный будет временно отключен. Это здоровый, Darwinian-подход к управлению портфелем.

2. Управление ликвидностью. «Мозговой центр» будет следить за общим пулом свободных средств. При их нехватке он даст команду специальному роботу-казначею продать часть фонда ликвидности (например, SBMM). При избытке — наоборот, купит его. Система станет самофинансирующимся организмом.

Подробнее с этой идеей можно ознакомиться в статье «От сеточника к стратегу: почему я закрываю проект «Торговый робот Scatter&Gather» и строю «мозговой центр» для роботов».

V10.4 Medium: не итог, а надежный фундамент

Поэтому v10.4 — это не просто очередное обновление. Это архитектурный фундамент. Версия, в которой я должен дойти до предела отладки и стабильности для данной концепции. На мой взгляд, все ее компоненты — от системы предзаявок и адаптивного ML-модуля до скрупулезного учета в CSV-файлах — отлажены и я выкладываю ее с чувством выполненного долга. Но прежде чем строить «мозговой центр», мне нужно быть на 200% уверенным в стабильности «сотрудников», которых он будет курировать. Scatter&Gather v10.4_medium должен работать как швейцарские часы и сейчас робот проходит эту проверку. Я оставляю его в длительном тесте перед тем, как обратить свой взгляд к новой, куда более амбициозной архитектуре.

Работа с алгоритмами учит главному: совершенство — не состояние, а направление движения. Я закрываю одну захватывающую главу и с трепетом ожидаю возможности начинать новую. А этот инструмент теперь доступен и вам.

Удачи в торговле, и помните: самый главный код, который вам предстоит отладить, — это ваша собственная дисциплина. Робот лишь инструмент в руках стратега.

Скачать робота:

Scatter&Gather v10.4_medium (download)
Downloaded: 2. Size: 293.9 KB. Date: 09 Янв. 2026

P.S. В версии 10.4_medium обнаружена ошибка, которая до этого себя ни разу не проявила. Возможно, что вы с ней никогда не столкнетесь, но зачем рисковать?

Предлагаю скачать исправленную версию 10.5_medium.