Вступление: Финал эксперимента и ответ скептикам. Как мы с ИИ написали Open-Source убийцу SaaS-ботов на 280 000 строк кода, и почему я отдаю его даром.
В своих прошлых статьях я рассказывал, как научился использовать ИИ вместо команды сеньоров («Почему для одних ИИ — гений, а для других — идиот») и почему классическая команда сегодня только тормозит разработку из-за бюрократии и потери контекста («Парадокс инвестиций: Почему $1,000,000 и команда сеньоров убили бы мой стартап»).
В комментариях на меня вылили ушат холодного и вполне обоснованного скепсиса. Мне писали: «Где метрики? Кому нужен твой пет-проект?».
И знаете что? Вы абсолютно правы. ©
Открыто бороться с гигантами индустрии, пытаясь перебить их рекламные бюджеты - это чистое самоубийство для соло-разработчика. У меня нет миллионов на закупку трафика и маркетинг. Именно поэтому я принял единственное доступное мне стратегическое решение: я не буду с ними конкурировать. Я просто убью их бизнес-модель.
А сделать это можно только одним способом - открыв код и выложив его в Open-Source. Отдать людям бесплатно то, за что корпорации берут по $50-100 в месяц.
Сегодня финал этого эксперимента длинною в год. Возможно, это один из самых масштабных публичных кейсов, когда не профессиональный разработчик (хотя конечно за последний год я подрос в этом плане) создал проект такого уровня в одиночку при помощи ИИ.
Я представляю вам DepthSight - платформу для алгоритмического трейдинга которая на голову превосходит закрытые решения. В ней более 280 000 строк кода, 1100+ автотестов, 600+ файлов, распределенная микросервисная архитектура и нативный ИИ-ассистент. Сегодня я полностью открываю её исходники (AGPL-3.0).
В комментариях к прошлой статье кто-то бросил тезис: «Да такое можно написать за выходные». Знаете, возможно, вы правы, но у нас не было возможности проверить это на практике. Теперь у нас такая возможность есть. Я открываю код проекта на 280 000 строк, где 90% кода написала машина.
Вы можете открыть репозиторий прямо сейчас. Найдите архитектурные дыры, покажите, где нейронка написала бредовый алгоритм, разнесите мой код. Я буду только рад, если вы укажете мне на косяки. Но если этот код работает и держит нагрузку… тогда нам всем есть о чём подумать.
Боль индустрии: Архитектурный абсурд SaaS
В крипте все помешаны на безопасности (аппаратные кошельки, seed-фразы в сейфах), но при этом трейдеры спокойно отдают API-ключи закрытым SaaS-сервисам (типа 3Commas, Veles или Bitsgap). Утечка базы данных такого сервиса - это риск потери депозита.
Вторая проблема - примитивность. За 50$ вам продают тупую DCA-сетку, которая просто покупает каждое падение цены на 1%, даже если рынок не дает никаких оснований что бы докупать.
Моя цель была создать Self-Hosted SaaS «в коробке». Платформу, которая ставится на ваш личный сервер, ключи хранятся в вашем зашифрованном Postgres, а возможности и гибкость логики превосходит любые платные аналоги.

Отказ от спагетти: Умные сетки и Иерархия
Я отказался от классических нодовых редакторов. И вместо этого DepthSight использует строгую иерархическую структуру:
Filters (Фильтры) - глобальные запреты (например, не торговать в Азиатскую сессию или если Биткоин падает).
Entry Conditions (Условия) - Условия для входа в позицию (Уровень, плотность в стакане, ускорение ленты, поджатия и т.д.).
Management (Управление) - поведение после входа.(трейлинг стоп, добавление в позицию, безубыток)
Киллер-фича: В отличие от ботов представленных на рынке в DepthSight шаг усреднения сетки (DCA) можно привязать к любому блоку. Вы можете сделать так, чтобы бот усреднял позицию только если цена упала на 2% И в стакане появилась лимитная плотность больше $1,000,000. А динамические ссылки (Dynamic Links) позволяют прятать ордера например за уровень, пробойную свечу или лимитку в стакане.
Архитектура: Как это работает под капотом
Чтобы платформа выдерживала нагрузки и работала 24/7 в многопользовательском режиме, мы с ИИ спроектировали распределенную систему.
Стек проекта:
Бэкенд: Python 3.11+, FastAPI (REST + WebSockets).
Асинхронные задачи: Celery (для тяжелых бэктестов и генетической оптимизации).
Фронтенд: React / TypeScript + Tailwind.
Базы данных: PostgreSQL (постоянное хранилище) + Redis (стейт, Pub/Sub, квоты).

Эволюция коннектора: От самописных сокетов к CCXT
Изначально я отказыался от готовых библиотек таких как ccxt и писал об этом в прошлой статье. Но по мере добавления новых бирж (Bybit, OKX, Bitget) поддерживать самописные коннекторы стало просто невозможно в одиночку. Поэтому я переписал ядро исполнения (Executor) на базе библиотеки ccxt, что дало возможность довольно быстро подключать новые биржи через их унифицированный интерфейс.
Инженерная магия: Market Data Fan-out
Одна из главных проблем торговых платформ - лимиты бирж на количество WebSocket-соединений (Rate Limits). Если 50 пользователей запустят ботов на паре BTC/USDT, и каждый откроет свой сокет к бирже - ваш сервер забанят через пару минут.
DepthSight решает это через паттерн Market Data Fan-out. Работает один центральный сервис (market_data_service.py), который собирает тики и через Redis Pub/Sub раздает их всем изолированным worker-контейнерам.
# market_data_service.py import redis.asyncio as redis_asyncio from bot_module.exchanges import create_exchange_executor class MarketDataService: def _get_consumer(self, exchange_id: str) -> DataConsumer: """Динамически создает коннектор на базе CCXT для нужной биржи.""" if exchange_id not in self.consumers: # Универсальный экзекьютор под любую биржу futures_executor = create_exchange_executor( exchange=exchange_id, api_key="", api_secret="", session=self.session, market_type="futures_usdtm" ) consumer = DataConsumer( executor=futures_executor, market_data_mode="direct", market_data_publish_callback=self._publish_market_payload ) self.consumers[exchange_id] = consumer return self.consumers[exchange_id] async def _publish_market_payload(self, payload: Dict[str, Any]) -> None: """Единственное WebSocket-соединение получает данные от CCXT и рассылает их воркерам через Redis Pub/Sub.""" stream_key = payload.get("stream_key") channel = f"depthsight:market_data:events:{stream_key}" # Публикуем тик в канал. Ботам больше не нужно стучаться на биржу. await self.redis.publish(channel, json.dumps(payload))
Это решение позволяет масштабировать платформу горизонтально, обслуживая сотни ботов с нулевой дополнительной нагрузкой на биржу.
ИИ на уровне ядра: Защита от галлюцинаций и ИИ-Оракул
Пользователю не обязательно собирать стратегии руками и перредвигая блоки по одному. Достаточно просто сформулировать торговую систему словами или просто загрузить скриншот графика из TradingView с разметкой, и встроенный ассистент распознает паттерны и соберет рабочую стратегию в редакторе.
Но как заставить LLM не галлюцинировать и отдавать рабочий код? Бэкенд жестко контролирует вывод нейросети через Pydantic:
# api/schemas.py from pydantic import BaseModel, Field from typing import List, Optional, Literal class GenerateStrategyRequest(BaseModel): text_prompt: str = Field(..., description="Текстовое описание стратегии от пользователя.") current_config_json: Optional[Dict[str, Any]] = Field( None, description="Текущая конфигурация для модификации." ) class StrategyV2ConfigData(BaseModel): strategy_name: str = Field(default="VisualBuilderStrategy") symbol: str marketType: Literal["FUTURES", "SPOT"] filters: ConditionNode entryConditions: ConditionNode positionManagement: List[ManagementBlock] oracle_regime: Optional[int] = None use_ml_confirmation: Optional[bool] = False # api/routes/ai.py @ai_core_router.post( "/generate-strategy", response_model=schemas.ApiResponseData[schemas.StrategyV2ConfigData], ) async def generate_strategy_from_text_ai_core_endpoint( request: schemas.GenerateStrategyRequest, current_user: models.User = Depends(get_current_user), ): # LLM (Gemini/OpenRouter) генерирует JSON. # Pydantic строго валидирует ответ через schemas.StrategyV2ConfigData generated_json = await ai_assistant.generate_strategy_json_from_prompt( request, current_user ) # Плюс проверка прав пользователя (доступность блоков на его тарифе) enforce_strategy_plan_restrictions(generated_json, current_user) return {"data": generated_json}
ИИ-Оракул (Market Regime)
Помимо генерации, в платформу вшит ИИ-Оракул, обученный на GMM (Gaussian Mixture Models). В отличие от классических индикаторов, он не предсказывает “вверх” или “вниз”. Он предсказывает фазу рынка. Оракул оценивает дрейф сложности (Complexity drift) и скорость забывания (Memory) рынка, понимая, когда плавный флэт перерастает в “экстремальный шок”. Бот может автоматически закрыть все позиции, если Оракул зафиксирует резкую смену рыночного режима.
Federated Discovery Hub (Социальный слой)
Трейдинг в одиночку на закрытом сервере - это безопасно, но скучно. Поэтому я встроил в монорепозиторий Discovery Hub.
Это федеративная клиент-серверная модель. Ваша личная Self-hosted нода безопасно связывается с центральным хабом сообщества. Вы не передаете туда приватные ключи или балансы. Вы делитесь только логикой стратегий и графиками PnL при желании.
По сути, это TradingView для алготрейдеров: вы можете зайти в Хаб, посмотреть бэктесты и статистику чужой стратегии, и в один клик (Import) скопировать её в свой локальный редактор.

DevOps для чайников: Деплой одной кнопкой и OTA-обновления
Создать крутую архитектуру - это полдела. Главная проблема опенсорса в том, что обычному трейдеру сложно поднять у себя связку из 10 сервисов (Postgres, Redis, Celery, FastAPI и React). Если инструкция по установке непонятная - проект обречен.
Поэтому я написал deploy.sh - скрипт которы автоматически поднимает все сервисы на чистом сервере ubuntu. Достаточно просто приобрести сервер, подключиться по SSH и вставить одну команду:
curl -fsSL https://raw.githubusercontent.com/DepthSight-Pro/DepthSight/main/deploy.sh | bash
Что делает скрипт:
Ставит Docker, UFW (настраивает Firewall) и нарезает Swap-файл (чтобы сборка React не убила дешевый VPS).
Автоматически генерирует все пароли (Postgres, Redis), JWT-секреты и ключ шифрования ключей (Fernet) и кладет их в
.env. Вам не нужно ничего придумывать руками.Спрашивает ваш домен, поднимает Caddy Server и сам получает SSL-сертификат от Let’s Encrypt.
(Опционально) Разворачивает ноду Bitcart для приема криптоплатежей.
OTA-обновления (Over-The-Air) из браузера
Вторая проблема Self-Hosted - обновления. Если для админов и программистам это довольно привычно то для трейдеров это уже проблема, поэтому я реализовал автообновления прямо из веб-интерфейса. Когда вы нажимаете кнопку “Обновить” в браузере, бэкенд FastAPI в докере не может сам обновить докер. Поэтому он просто создает пустой файл-триггер data/.update_trigger в примонтированном контрейнере.
При деплое на хост-машину прописывается cron-задача:
* * * * * root if [ -f /opt/depthsight/data/.update_trigger ]; then rm /opt/depthsight/data/.update_trigger && bash /opt/depthsight/update.sh; fi
Каждую минуту хост проверяет наличие файла. Если файл есть - запускается update.sh, который делает git reset --hard, пуллит свежий код и пересобирает контейнеры. То есть пользователь просто нажимает кнопку обновить и через несколько минут у него новая версия и ему даже не приходится лезть в консоль.
Монетизация Open-Source и Лицензия
Наверное, у людей далёких от разработки опенсорс может возникнуть вопрос: “Зачем ты отдаешь систему такого уровня бесплатно? В чем подвох?”
Буду откровенен - это не просто благотворительность и есть варианты монетизации. Я понимаю, что в одиночку без инвестиций я не смогу конкурировать с проприетарными решениями, поэтому я и принял решение открыть код.
Я выбрал лицензию AGPL-3.0. Она позволяет любому человеку бесплатно поднимать платформу для себя. Но она юридически обязывает любую компанию, которая решит сделать на базе моего кода закрытый коммерческий SaaS, открыть свои доработки сообществу.
Как я планирую зарабатывать? Недавно DepthSight получил статус официального брокера-партнера биржи Bybit. Я вшил свой Broker ID прямо в код экзекьютора. Когда ваш бот торгует на платформе, биржа выплачивает часть комисии которую она зарабатывает. Для трейдера условия не меняются, его комиссия остается точно такой же.
Конечно, я не питаю иллюзий. Это Open-Source. Любой программист может зайти в исходники, найти строку с Broker ID и удалить её. Кто-то даже может спиратить проект и поднять свой закрытый сервис, наплевав на AGPL. Это неизбежные издержки опенсорса.
Но я делаю ставку на здравомыслие. Обычному пользователю нет смысла ковыряться в коде ради копеек (которые все равно достанутся бирже), рискуя сломать автообновления.
Мишени для код-ревью: за что меня уволили бы из корпорации
Я знаю, что эту статью читают суровые архитекторы. И прежде чем вы откроете репозиторий, чтобы доказать несостоятельность ИИ, я сам дам вам координаты главных мишеней.
Откуда вообще взялись эти 280 000 строк кода? Скептик скажет, что это ии слоп. Но давайте посмотрим на структуру: ~30% — это сложный фронтенд на React с визуальным редактором, ~20% — это 1100+ тестов, еще ~25% занимают 2 бэктестера и реализация того же визуального редактора.
Но я признаю, в платформе есть серьезный технический долг. Это предел текущих возможностей ИИ, который я осознанно оставил:
“God Object” на 13 000 строк. Откройте
controller.py. Он весит 670 КБ.Отсутствие CI/CD Pipelines. В ближайшее время будет исправлено.
Frontend Coupling. В React тоже есть “толстые” компоненты, например,
CommunityHub.tsxна 120 КБ.
Вы наверное скажете, что это не production-ready. Я скажу: это цена скорости. Если кто-то из профессионалов готов зайти в GitHub, открыть Issue и показать, как правильно распилить этот контроллер по паттернам SOLID - я приму это с благодарностью. Потому что если бы я потратил еще пару месяцев на идеальный рефакторинг, проект бы никогда не увидел свет. Лучшее - враг хорошего. Базовая архитектура правильная(?), безопасность (Fernet шифрование ключей, JWT) — на высоком(?) уровне. А рефакторинг 13 000 строк controller.py — это отличная задача на ближайшее будущее или если кто-то проявит желание помочь.
Заключение
Я прошел путь от не-разработчика до создателя огромного Enterprise-продукта. И всё это благодаря диалогам с LLM. Мы живем в эпоху сингулярности соло-разработчиков, где один человек с правильной ментальной моделью и ИИ может создавать то, что раньше требовало отдела из 20 человек и миллионов венчурных инвестиций.
Если вы хотите запустить своего бота без абонентских плат - поднимайте свою версию DepthSight (установка в одну команду).
А если вам понравилась архитектура, подход или вы просто поддерживаете идею децентрализации и Open-Source - переходите на GitHub и, пожалуйста, поставьте проекту звезду ⭐️.
Для соло-разработчика это лучшая мотивация
🔗 GitHub: https://github.com/DepthSight-Pro/DepthSight
P.S. Проект в опенсорсе. Я обращаюсь к тем, кто занимается Highload и HFT. Я не профессиональный разработчик, и нейронки - не панацея от архитектурных уязвимостей. Меня волнуют две вещи: 1. Безопасность хранения ключей (насколько адекватно реализовано Fernet-шифрование в связке с текущей базой). 2. Эффективность Market Data Fan-out (выдержит ли текущая связка Redis Pub/Sub + CCXT одновременную работу 100 ботов в рамках одного сервера). Если вы видите дыры - заведите Issue на GitHub или разнесите меня в комментариях. Я готов учиться.