Оцифровка дилерских рефлексов на VB6: опыт создания наивного робота для Мосбиржи
В 2020 году разработчик написал на VB6 робота для автоматизации клиентских валютных сделок на Мосбирже. Простая схема из восьми метрик и пяти состояний два года приносила банку прибыль, пока не выявились её ограничения. Разбираем, как работала система и какие уроки извлек автор.

В 2020 году разработчик написал на VB6 робота для автоматизации клиентских валютных сделок на Мосбирже. Простая схема из восьми метрик и пяти состояний два года приносила банку прибыль, пока не выявились её ограничения. Разбираем, как работала система и какие уроки извлек автор.
Как устроен наивный робот на VB6
Автор рассказал на Хабре, что создал торгового робота на Visual Basic 6 — языке, который многие считают устаревшим. Робот оценивал рынок по восьми метрикам, каждую из которых сравнивал с пороговыми значениями. На основе этих сравнений система определяла одно из пяти состояний рынка, а затем по лестнице if-ов принимала решение о закрытии или открытии сделок.
Ключевая особенность — полное отсутствие машинного обучения и сложных алгоритмов. Вся логика умещалась в несколько сотен строк кода, а принятие решений происходило по простым правилам, которые автор назвал «наивными». Несмотря на это, робот два года успешно работал в банке, закрывая клиентские валютные сделки на Московской бирже.
Предыстория и контекст: почему VB6 и зачем такой робот
До появления робота дилеры банка вручную отслеживали котировки и принимали решения о сделках. Это требовало постоянного внимания и приводило к задержкам. Автор, работая в ИТ-отделе банка, решил автоматизировать процесс, чтобы снизить нагрузку на сотрудников и повысить скорость реакции на изменения рынка.
Выбор VB6 объясняется тем, что в банке использовали это язык для внутренних инструментов. Несмотря на почтенный возраст технологии, она позволяла быстро создавать приложения для Windows, которые легко интегрировались с существующей инфраструктурой. Робот работал на выделенном сервере, получая данные о котировках через API биржи.
Почему восемь метрик и пять состояний?
Автор выбрал восемь метрик, которые отражали ключевые аспекты рынка: текущую цену, скорость изменения, объёмы торгов, волатильность и другие. Каждая метрика сравнивалась с порогом, и в зависимости от комбинации результатов система определяла состояние рынка — от «активного роста» до «сильного падения». Пять состояний позволяли роботу выбирать стратегию: например, при «нейтральном» состоянии он не совершал сделок, а при «росте» — открывал длинные позиции.
Такая схема была простой для понимания и отладки, но имела ограничения. Если рынок вёл себя нестандартно — например, резко менял тренд — робот мог принять неверное решение. Автор признаёт, что система не учитывала внешние факторы, такие как новости или макроэкономические данные.
Технические подробности: как работала система
Робот был написан на VB6 и запускался на Windows Server. Он подключался к торговому терминалу через COM-интерфейс, получал котировки в реальном времени и отправлял заявки на биржу. Логика принятия решений была реализована в виде набора вложенных условий: если метрика A больше порога X и метрика B меньше порога Y, то состояние — «рост». После определения состояния выполнялся соответствующий блок кода.
Автор отмечает, что основная сложность заключалась не в написании кода, а в настройке пороговых значений. Он потратил несколько недель на анализ исторических данных и подбор параметров. При этом робот работал в тестовом режиме, пока не была достигнута стабильная прибыльность.
Кого затронет и как: опыт для разработчиков и банков
Статья будет полезна разработчикам, которые работают с устаревшими технологиями и хотят автоматизировать финансовые процессы. Она показывает, что даже простые алгоритмы могут быть эффективными, если правильно настроены. Для банков и финансовых компаний это пример того, как можно снизить операционные риски и повысить эффективность без крупных инвестиций в сложные системы.
В России и СНГ многие банки до сих пор используют легаси-код, и опыт автора может помочь им найти нестандартные решения. Кроме того, статья поднимает вопрос о важности тестирования и мониторинга торговых роботов, чтобы избежать убытков при изменении рыночных условий.
Что будет дальше: ограничения и развитие
Автор признаёт, что робот умер не от наивности, а от того, что рынок изменился. В 2022 году из-за волатильности и новых регуляторных требований схема перестала работать. Он планирует переписать систему на современном языке с использованием машинного обучения, но подчёркивает, что даже простая логика может быть надёжной, если её правильно адаптировать.
В будущем можно ожидать, что банки будут активнее внедрять автоматизацию, но с более гибкими алгоритмами, способными адаптироваться к изменениям. Опыт автора — хороший пример того, как начать с малого и постепенно улучшать систему.
Итог
История с наивным роботом на VB6 показывает, что для успешной автоматизации не всегда нужны сложные технологии. Главное — понимать предметную область и уметь настраивать простые правила. Этот опыт ценен для всех, кто работает в финансовой сфере или занимается разработкой торговых систем, и напоминает, что даже устаревшие инструменты могут приносить пользу, если подходить к делу с умом.