Блог им. TakoiTip
Кофе 11.26, робот на Альфа-Про. В части 0 писал: «Решил
допилить проблемный модуль — и сломал то, что работало».
Вот разбор — по дням, как было.
Отправная точка. Пятница, конец сессии: v4.6 (лесенка + EMA)
работала в советнике — виртуальные позиции, реальных заявок
не было. Финал в журнале: «Не удалось закрыть 8 лот после 3
попыток — ЗАКРОЙТЕ ВРУЧНУЮ!». Рынок уже уходил в закрытие —
закрывать руками было нечего и некогда, но сам факт, что
движок не смог выполнить свою процедуру конца дня, всё
решал: пока нет доверия к движку, любой результат — шум.
В части 0 я написал «закрыл руками» — повторил формулировку
лога; точнее так: руками закрывать было нечего, но робота
я остановил и ушёл пересобирать. В субботу начался допил.

Суббота. Исправлял вайб-кодингом: сформулировал нейросети,
что не так — получил правку — применил — проверил. Цикл
повторился пять-семь раз, и дальше пошло по нарастающей:
правка — ошибка компиляции — правка, чтобы её починить —
новая ошибка. Компиляция то вставала, то падала. Когда
наконец собралось — оказалось, что это ещё не победа: код
на выходе не работал, а интерфейс поплыл — окна наезжали
на текст. Я смотрел на экран и не мог сказать, какая из
правок что сломала, — потому что не было ни истории
изменений, ни точки возврата.
Воскресенье. Пересборка заново. К вечеру в папке проекта
лежали четыре генерации нового кода — в проверку советником
пошла четвёртая. Три предыдущие отбраковал сам: где-то данные
приходили не те, где-то не приходили, где-то просто потёк
интерфейс — окна наезжали на текст. Уже не помню, что именно
было в какой: итерации шли так плотно, что между ними
не оставалось точек, которые можно было бы вспомнить.
Понедельник — и тут повезло дважды. MМВБ в те выходные
работала, но остальные рынки отдыхали — штиль, поэтому
воскресный код проверялся не на торговле, а на сборе цен,
гвардах, подключении. Вышел в советник в понедельник — и
только вечером по логам понял: рынок тихий, в рабочий режим
робот не выходил. Понедельник был выходным в США — те самые
«0 сделок, сессия в ожидании» из отчёта, день 1 первой
пятёрки. Сырой код встретил пустой рынок, первые сделки пошли
во вторник, на живом. Попадание в выходной — случайность,
но удачная.
И для масштаба — сравнение с первой сборкой. v4.6 собиралась
3–5 дней и около 50–60 итераций до ввода в работу. Я
рассчитывал, что, зная её грабли, соберу новую быстрее.
Не собралось: четыре генерации, три отбраковки, выходные
целиком. И главное — новый робот получился другим: не
«v4.6 без багов», а пересобранный заново — другая логика,
другой GUI. Ошибки старой версии не стали спецификацией
новой, они стали опытом, который изменил замысел. Вот почему
быстрее не вышло: переписать «то же самое, но правильно»
быстро нельзя, потому что получилось не «то же самое».
Чему это меня научило — четыре правила, каждое оплачено:
1. Вайб-кодинг без тестов — рулетка. Один-два цикла «поправь-
проверь» — нормальная скорость. Пять-семь подряд — вы уже
не правите код, вы играете в испорченный телефон с
нейросетью. Она всё помнит, но иногда ломается или
придумывает — и тогда правка задевает соседний узел.
2. Точка возврата — до первой правки, не после. Если после
пяти итераций нельзя откатиться к работавшему — значит,
работоспособность не была защищена. Это моя главная
ошибка: не сами правки, а отсутствие точки, к которой
можно вернуться.
3. Компиляция — это ещё не тест. Та суббота прошла два
круга: сначала пять-семь итераций борьбы за то, чтобы код
вообще собрался. Собрался — и оказалось, что не работает,
плюс поплывший интерфейс. Компиляция отвечает ровно на
один вопрос — «собралось или нет» — и ни на один из
настоящих: «работает ли», «не сломал ли соседнее». Между
«компилируется» и «работает» — вся пропасть, в которую
я тогда упал.
4. Пересборка заново — нормальный ход, когда есть два ответа:
почему предыдущая версия умерла и по какому критерию
считается готовой новая. Без этих ответов пересборка —
не метод, а лотерея.
Финальная ирония: проблемный модуль, ради которого всё
затевалось, в новой версии работает. А всё остальное могло
бы не пострадать — если бы в субботу между правками стояли
проверки.
Это дневник разработки. Вопросы — в комментарии.
— Извините, вайб-итерация не сработала. Рефакторинга будете ждать?
Яичница готовится строго в сессионном окне — вне окна![]()
блокируется гвардом
Да лучше бы были ссылки. Сейчас вообще не понятно что.