opexviewer
v0.9.13
Published
Модуль UI для алготрейдинга и бектестирования роботов на фондовой бирже.
Readme
OpexViewer
Модуль UI для алготрейдинга и бектестирования роботов на фондовой бирже.
Требования
node >= 17Установка
npm i opexviewerNPM
https://www.npmjs.com/package/opexviewer
Описание
OpexViewer является составной частью торговой системы.
На данный момент работает только с одним коннектором. Но спроектирован с возможностью подключения к другим торговым роботам. Общение однонаправлено и вьювер посылает запросы к серверу. При этом сервер ничего не знает про UI. Соответственно возможно подсунуть сервер с торговым роботом на любом языке и сервер может работать автономно без запущенного UI.
Возможности
Настройки
http://localhost:3056/settings
- Добавление адреса сервера. Например, разные сервера с торговыми роботами будут размещены в ДЦ рядом с биржей, а UI будет лежать отдельно для мониторинга.
- Добавление и выбор токенов.
- QR код для быстрого доступа с телефона (если вьювер запущен не на localhost).
- Изменения в конфиге подтягиваются без перезагрузки страницы: список токенов на
/settingsобновляется в фоне, а выбранный токен и связанные поля (accountId,botKey,tgBotKey, sandbox/demo-статус) пересинхронизируются из API.
Синхронизация конфига
Если tokens.json изменился напрямую на сервере или через другой UI:
- страница
/settingsперечитывает список токенов автоматически; - кнопка
Выбратьработает без перезапускаopexviewer; - шапка приложения и текущий выбранный конфиг обновляются фоновым опросом, даже если у нового токена отсутствуют некоторые поля из предыдущего выбранного токена.
Выбор счёта
http://localhost:3056/accounts
- При выборе счёта отображается портфель, баланс и статус (только для чтения или нет).
- При использовании sandbox токена автоматически создаётся счёт и пополняется на 100 тысяч рублей.
- После выбора счёта в шапке всегда отображается баланс и номер счёта.
Инструменты
http://localhost:3056/instruments
- На выбор предоставлены голубые фишки и их фьючерсы
Страница инструмента
http://localhost:3056/instruments/BBG004730N88
Торговля в реальном времени
- Содержит график с выбором таймфреймов (1, 5, 15 мин и 1 час), объём, стакан.
- Селект для выбора робота, кнопки старт стоп для запуска и остановки робота
- Настройки робота: лоты, TS / SL, уровни поддержки и сопротивления. Уровни так же дублируются на графике и в стакане.
- Робота можно запускать только на одном инструменте. Когда робот запущен перейти на другой инструмент нельзя.
- На график наносятся заявки и сделки. Оранжевым и салатовым цветом заявки, зелёным и красным сделки. Они же дублируются внизу страницы в текстовом виде.
Во время торговли можно посмотреть страницы логов и информацию для дебага. В логах содержится информация про сервер и api. На дебаг странице все переменные робота на текущий момент.
Монитор роботов по всем счетам (read-only)
http://localhost:3056/robots/running
- Показывает запущенных роботов в одном месте без переключения по счетам.
- Агрегирует данные по всем активным runtime-контекстам (все доступные счета).
- Обновление автоматически каждые 5 секунд.
- Есть ручной refresh.
- После 15 секунд без успешного обновления отображается stale-индикатор.
- В случае временной ошибки API (включая
503 status_all_accounts_unavailable) сохраняется последний успешный снимок с предупреждением о деградации канала. - Страница только для мониторинга: кнопки запуска/остановки роботов не отображаются.
Бектестирование
Чтобы попасть в режим бектестирования нужно в календаре выбрать прошедшую дату, на которой нужно провести бектест. Панель бектестирования ничем не отличается от реальной торговли, кроме того что есть контролы для пошаговой работы, чтобы отлаживать работу робота.
Обратите внимание, что там где робот уже торговал, он автоматически закешировал стакан и теперь в бектестировании стакан доступен тоже.
Мобильная версия
Вся описанная выше функциональность адаптирована для мобильных устройств. Для быстрого перехода добавлен QR код, который содержит в себе адрес сервера, чтобы повтоно не указывать с телефона. Под стаканом добавлена кнопка скрыть, чтобы график и кнопки поместились на экран.
