TradeTerminal
Универсальный торговый терминал для Bybit и Binance с CLI интерфейсом и архитектурой клиент-сервер, разработанный для минимизации задержки при работе с биржами. Проект создан на Rust и предоставляет мощный набор инструментов для профессиональной торговли криптовалютой.

Основные возможности
Торговые операции
- Размещение ордеров: Market и Limit ордера с быстрым исполнением
- Риск-менеджмент: Автоматический расчёт размера позиции от риска в USDT с учётом комиссий биржи
- Take Profit: Настройка выхода из позиции в процентах от входа
- Trailing Stop: Гибкая система трейлинг-стопов с поддержкой:
- Абсолютных значений цены и callback в долларах
- Процентов от текущей цены
- Соотношений (ratio) для активации на основе расстояния до Stop Loss
- Auto-Stop (AS): Умный выход из позиции на активных рынках
- Клик по цене копирует её для быстрого ввода
- Триггер активируется по достижению цены или процента
- Таймер ликвидности (2 сек) - закрывает позицию если торговля останавливается
- Идеально для фиксации прибыли на волатильных участках
- Hedge Mode: Поддержка одновременных Long/Short позиций на одном инструменте
Интерфейс и управление
- CLI интерфейс: Удобная командная строка с сокращениями команд
- Pipe оператор: Комбинирование команд через
|для создания сложных сценариев- Например:
:br 10 94000 | ts 2% 0.5%- открыть позицию и сразу установить trailing stop
- Например:
- Цепочки команд: Последовательное выполнение через
;- Например:
:ca; br 10 94000- отменить все ордера и открыть новую позицию
- Например:
- Просмотр состояния: Отображение открытых ордеров, активных позиций и текущего баланса
- Управление ордерами: Отмена отдельных ордеров или всех сразу
- Мультисимвольность: Быстрое переключение между торговыми парами
График и визуализация
- Встроенный график: Интерактивный график с поддержкой множества таймфреймов
- Sub-second таймфреймы: Уникальная возможность работы с таймфреймами 1s, 5s, 10s, 30s
- Использует реальные tick-данные с биржи
- Агрегация происходит на клиенте для максимальной точности
- Отображение реальных сделок без дополнительной нагрузки на сервер
- Стандартные таймфреймы: От 1 минуты до дневных свечей (15m, 1h, 4h, D и др.)
- Уровни цен: Добавление и удаление горизонтальных уровней
- Навигация: Прокрутка истории, масштабирование, автоследование за последней ценой
- Звуковая индикация: Опциональные звуковые сигналы при сделках на бирже
- Высокий тон - покупка, низкий - продажа
- Частота увеличивается при росте торговой активности
Архитектура
- Клиент-сервер: Разделение логики для оптимизации задержки
- WebSocket: Постоянное соединение для мгновенного получения данных
- Автообновление: Автоматическое обновление данных о позициях и ордерах
- Docker поддержка: Простое развёртывание на VPS для минимизации задержки до серверов биржи
Технологический стек
- Язык: Rust (высокая производительность и безопасность памяти)
- Протокол: WebSocket для real-time коммуникации
- Биржи:
- Bybit API v5 (Testnet и Production)
- Binance API (Spot и Futures)
- Развёртывание: Docker, Docker Compose
- UI: TUI (Text User Interface) с поддержкой вкладок
Расчёт размера позиции
Терминал использует продвинутую формулу расчёта, которая учитывает комиссии биржи:
quantity = risk_usdt / (|entry_price - sl_price| + entry_price * fee * 2)
Параметры:
- Taker fee: 0.055%
- Maker fee: 0.02%
- Комиссия умножается на 2 (вход + выход по SL)
Пример:
- Риск: $10
- Entry: 95000, SL: 94000
- Разница: $1000
- Fee cost: 95000 × 0.00055 × 2 = $104.5
- Total risk per unit: $1104.5
- Quantity: 10 / 1104.5 = 0.00905 BTC
Trailing Stop: типы активации
Абсолютная цена
:ts 97000 500 - активация при достижении цены 97000, callback $500
Процент
:ts 2% 0.5% - активация при росте на 2% от входа, callback 0.5% от текущей цены
Соотношение (Ratio)
:ts 1/3 2% - активация на расстоянии в 3 раза больше, чем до Stop Loss
Формула: trigger = entry ± (|SL - entry| × denominator/numerator)
Пример:
- Вход: 100
- SL: 101 (риск 1%)
- Ratio:
1/3 - Trigger: 103 (в 3 раза дальше от входа, чем SL)
- Затем TS движется с callback 2% от текущей цены
Команды терминала
Базовые ордера
:buy 0.01 # Market buy 0.01 BTC
:buy 0.01 95000 # Limit buy @ 95000
:sell 0.01 # Market sell
:sell 0.01 96000 # Limit sell @ 96000
Ордера с риск-менеджментом
:buyrisk 10 94000 # Long market, риск $10, SL @ 94000
:buyrisk 10 94000 95000 # Long limit @ 95000
:buyrisk 10 94000 - 2 # Long market + TP 2%
:sellrisk 10 96000 # Short market, риск $10, SL @ 96000
:sellrisk 10 96000 95000 # Short limit @ 95000
:sellrisk 10 96000 95000 1.5 # Short limit + TP 1.5%
Trailing Stop
:ts 2% 0.5% # Активация +2%, callback 0.5%
:ts 97000 0.5% # Активация @ 97000, callback 0.5%
:ts 2% 500 # Активация +2%, callback $500
:ts 1/3 2% # Активация на ratio 1:3 от SL, callback 2%
Auto-Stop
:as 2 0.545 # Таймер 2 сек, триггер @ 0.545
:as 2 0.2% # Таймер 2 сек, триггер +0.2%
Логика работы:
- Цену можно скопировать кликом в интерфейсе
- При достижении триггера запускается таймер ликвидности
- Если за 2 секунды нет сделок на бирже - позиция закрывается
- Защита прибыли на быстрых движениях с последующим затуханием
Комбо команды
:br 10 94000 | ts 2% 0.5% # Long + trailing stop
:sr 10 96000 | ts 2% 0.5% # Short + trailing stop
:ca; br 10 94000 # Отменить все + новый ордер
График
:chart # Открыть график
:tf 1s # Таймфрейм 1 секунда
:tf 5s # Таймфрейм 5 секунд
:tf 15 # Таймфрейм 15 минут
:tf D # Дневной таймфрейм
:level 95000 # Добавить уровень
:levels # Очистить уровни
:sound # Вкл/выкл звук трейдов
Управление
:cancel abc123 # Отменить ордер
:cancelall # Отменить все ордера
:symbol ETHUSDT # Сменить символ
:help # Справка
Сокращения команд
:b=:buy:s=:sell:br=:buyrisk:sr=:sellrisk:ts=:trailing-stop:as=:auto-stop:c=:cancel:ca=:cancelall:sym=:symbol:h=:help
Навигация
Основной интерфейс
:- Режим ввода командыTab- Переключение вкладокr- Обновить данныеEsc- Выход из режима вводаq- Выход из программыCtrl+C- Принудительный выход
График
h- Прокрутка влево (назад во времени)l- Прокрутка вправо (вперёд во времени)+/=- Увеличить масштаб-- Уменьшить масштаб0- Сбросить к последним свечам
Развёртывание
Локальный запуск
- Клонировать репозиторий
- Создать
.envфайл с API ключами:
BYBIT_API_KEY=your_api_key
BYBIT_API_SECRET=your_api_secret
BYBIT_TESTNET=true
- Запустить сервер:
cargo run --bin trade-server - Запустить клиент:
SERVER_URL=ws://127.0.0.1:9000 cargo run --bin trade-client
Развёртывание на VPS
Для минимизации задержки рекомендуется размещать сервер в регионе, близком к серверам бирж (Bybit/Binance: Singapore, Tokyo):
- Установить Docker на VPS
- Создать
.envс API ключами - Запустить:
docker-compose up -d - Подключить клиент:
SERVER_URL=ws://vps-ip:9000
Сценарии использования
Этот инструмент полезен для:
- Профессиональной торговли криптовалютой с минимальной задержкой
- Скальпинга и внутридневной торговли
- Автоматизации торговых стратегий через pipe и цепочки команд
- Тестирования торговых идей на Testnet
- Удалённой торговли через VPS
Открытый исходный код
Выпущен под лицензией MIT. Проект демонстрирует профессиональные практики разработки высокопроизводительных приложений на Rust и может служить образовательным ресурсом для изучения:
- Архитектуры клиент-сервер на WebSocket
- Работы с биржевыми API
- Разработки TUI приложений
- Риск-менеджмента в торговле
Ссылки
- Статус: В стадии разработки (приватный репозиторий)
- Технологии: Rust, WebSocket, Docker, Bybit API, Binance API
- Лицензия: MIT