MOEX Pro — аналитический торговый терминал
Full-stack аналитический терминал для российского фондового и срочного рынка. Система агрегирует данные MOEX, хранит рыночную историю локально и предоставляет профессиональный интерфейс для анализа свечей, стакана, потока сделок, открытого интереса, опционов и поведения участников рынка в режиме, близком к realtime.
О проекте
MOEX Pro — профессиональный аналитический терминал для российского фондового и срочного рынка, разработанный как самостоятельная full-stack платформа для исследования рыночных данных Московской биржи.
Основная задача проекта — объединить в одном интерфейсе графический анализ, поток сделок, стакан заявок, открытый интерес, опционные данные, статистику участников рынка и пользовательские инструменты анализа.
Терминал получает данные MOEX, нормализует их на backend, сохраняет историю локально и передаёт обновления клиенту через REST и WebSocket. Архитектура спроектирована таким образом, чтобы источник данных не был жёстко связан с бизнес-логикой и в будущем мог быть заменён или дополнен брокерскими, QUIK или другими market-data интеграциями.
Основные возможности
Получение исторических и актуальных данных Московской биржи
Интерактивные свечные графики
Bid / Ask и рыночный стакан
Анализ потока сделок и order flow
Отображение объёмов и Open Interest
Работа с фьючерсами и опционами
Опционные серии и уровни страйков
Статистика физических и юридических лиц
Пользовательские индикаторы
Графические объекты и drawing tools
Realtime-обновления через WebSocket
Локальное хранение исторических рыночных данных
Архитектура
Проект реализован в виде monorepo с независимыми frontend и backend приложениями, инфраструктурным слоем и общими пакетами.
Backend построен по модульному принципу с разделением API, domain logic, сервисного слоя, интеграций и persistence-слоя. Рыночные источники абстрагированы от основной бизнес-логики, что позволяет подключать новые data providers без изменения ядра системы.
Для initial-state и исторических запросов используется REST API, а потоковые рыночные события передаются клиенту через WebSocket.
Backend
Python 3.12
FastAPI
Pydantic v2
SQLAlchemy 2
Alembic
PostgreSQL / TimescaleDB
Redis
asyncio
httpx
WebSocket
MOEX ISS / ALGOPACK integration
Frontend
React 19
TypeScript
Vite
Zustand
TanStack Query
Lightweight Charts
Radix UI
Tailwind CSS
Playwright
Работа с рыночными данными
Терминал поддерживает получение данных через публичный MOEX ISS и расширенный контур ALGOPACK. На уровне приложения разделены исторические, delayed и realtime-режимы данных.
Чувствительные ключи доступа и API credentials обрабатываются исключительно на backend и не передаются в браузер.
Работа со временем
Для финансового приложения отдельно проработана корректная работа с временными зонами. Все timestamps внутри backend и базы данных сохраняются в UTC, а пользовательский интерфейс отображает биржевое время в зоне Europe/Moscow.
Это позволяет избежать ошибок при построении свечей, торговых сессий, временной шкалы, фильтрации истории и дневных границ.
Инженерные решения
Модульная архитектура вместо монолитного market-data слоя
Разделение domain logic и внешних интеграций
Асинхронная обработка сетевых запросов и потоковых данных
REST + WebSocket transport
Локальная persistence-модель для исторических данных
Миграции базы через Alembic
Инфраструктура разработки через Docker Compose
Статический анализ и linting backend/frontend
Backend tests и frontend E2E tests
Моя роль
Я отвечал за проектирование архитектуры системы, структуру monorepo, backend API, модель хранения рыночных данных, интеграцию с MOEX, WebSocket-контур, frontend-архитектуру и реализацию аналитического интерфейса.
Проект объединяет задачи software architecture, full-stack разработки, обработки финансовых данных, realtime-систем и создания специализированного интерфейса для market analysis.
Результат
В результате создан фундамент независимого аналитического терминала, способного работать с историческими и потоковыми данными MOEX и расширяться в сторону новых источников данных, пользовательских индикаторов, торговых сигналов, алертов и брокерских интеграций.
На текущем этапе приложение используется именно для анализа рынка: отправка реальных торговых заявок намеренно отделена от аналитического контура.