IPO
•••
02.06.26 Finam.ru

Эксперт рассказал о будущем трейдинга в эпоху ИИ

21.01.26 Finam.ru

«Финам» открыл доступ к платформе для мониторинга арбитражных аномалий Spread Insight

"Финам" продолжает развивать технологии для инвесторов и запускает инновационный сервис — "Финам Инсайты"

Загрузить ещё
Темы
...
Расскажите о своем опыте использования сервисов и технологий в инвестициях. Ждем писем на lenta@corp.finam.ru
19.06.26 12:00 Поделиться

Трейдинг в TUI: пишем легковесный клиент на Go через Finam Trade API

Для тех, кто устал переключаться между терминалом и браузером

Главное:

  • Разработчик “Финама” создал Finam Terminal - TUI-клиент с открытым кодом для торговли через API брокера, чтобы не выходить из консоли ради проверки портфеля
  • Терминал написан на Go с использованием tview, весит ~24 МБ, работает в Linux, macOS и Windows, а данные в реальном времени поступают через gRPC-стриминг
  • Биржевой стакан, лента сделок, свечи - все обновляется в реальном времени
Ладыгин Сергей
Ладыгин Сергей
руководитель отдела разработки "Финам"

Меня зовут Сергей, я разработчик в «Финаме». Торгую на бирже около четырех лет. Большую часть дня провожу в терминале - пишу код, деплою, работаю с инструментами. И в какой-то момент заметил нестыковку: все мое рабочее пространство уже в консоли, кроме одной вещи - торгового терминала.

Так появился Finam Terminal - TUI-клиент с открытым кодом для торговли через API брокера «Финам». Написан на Go в свободное время, работает прямо в консоли, весит ~24 МБ. В этой статье расскажу, зачем он нужен, как устроен и почему наличие хорошего API у брокера - это приглашение что-то построить.

Счета и портфель

Проблема: контекст-свитчинг

Типичный рабочий день: несколько окон терминала, IDE, задачи. Параллельно хочется глянуть, что происходит на счете - проверить позиции, посмотреть котировку, может, выставить заявку.

Для этого нужно свернуть терминал, открыть отдельную программу или браузер, залогиниться. А на моей виртуалке с Linux десктопных клиентов для «Финама» вообще нет - только QUIK, который под Linux не запускается без танцев с Wine, или веб-интерфейс FinamTrade в браузере.

Каждый раз - выход из рабочего контекста. Вроде мелочь, но за день набегает.

Что есть на рынке

Если посмотреть на существующие варианты для клиента «Финама», картина такая.

QUIK - классика, проверенная временем. Мощный, функциональный, с поддержкой Lua-скриптов. Но это десктопное Windows-приложение со всеми вытекающими: не запустишь на Linux-сервере, не встроишь в рабочий процесс в консоли. Интерфейс перегружен, порог входа высокий. Для профессиональных трейдеров - отличный инструмент, но для разработчика, которому нужно «быстро глянуть портфель» - как стрелять из пушки по воробьям.

FinamTrade (веб-терминал) - современный, удобный, работает в браузере. Но это именно браузер: еще одна вкладка среди десятков, отвлекающие элементы интерфейса, потребление памяти. И главное - переключение контекста из терминала в браузер и обратно.

Консольных клиентов для торговли через «Финам» на момент начала разработки я не нашел. У некоторых других брокеров есть неофициальные TUI-проекты, но для «Финам Trade API» - пустота.

Повод, которого не хватало: Finam Trade API

Идея консольного клиента витала давно, но реализовать ее мешало отсутствие удобного программного интерфейса. Все изменилось, когда «Финам» запустил современный Trade API.

Что предоставляет API:

  • gRPC и REST - два протокола на выбор. gRPC дает бинарный протокол с минимальными задержками, REST - простоту интеграции.
  • Стриминг данных - подписка на котировки, стакан и статусы заявок в реальном времени через gRPC-потоки. Не нужно постоянно дергать сервер запросами.
  • Официальные SDK - готовые клиентские библиотеки для Go, Python, Kotlin. Не нужно самому генерировать код из proto-файлов или писать обертки поверх HTTP.
  • Песочница - можно протестировать API на демо-счете, не рискуя реальными деньгами.
  • Документация и сообщество - подробная документация на tradeapi.finam.ru, телеграм-чат для вопросов, примеры кода на GitHub.

Хороший API - это всегда приглашение что-то построить. «Финам Trade API» стал именно таким приглашением. Наличие официального Go-клиента означало, что я могу сосредоточиться на интерфейсе и логике, а не на низкоуровневой работе с протоколами.

Важно подчеркнуть: Finam Terminal - это не продукт компании «Финам». Это мой личный проект, написанный в свободное время. Trade API - публичный, и любой разработчик может создать на его базе свое приложение. Мой терминал - один из примеров того, что можно построить, имея хороший API.

Результат: что получилось

Finam Terminal - это полноценный торговый клиент, который работает прямо в консоли. Без браузера, без GUI-фреймворков, без Electron.

Что видишь при запуске. Все брокерские счета в одном окне: ИИС, демосчет, основной. Баланс, открытые позиции, текущая прибыль и убытки - агрегировано, без переключения между вкладками. История сделок и активные заявки - отдельными вкладками внутри того же экрана.

Поиск инструментов. По тикеру или по названию - результаты появляются по мере ввода. Нашел бумагу - нажал Enter - видишь полный профиль: параметры, торговое расписание и свечной график прямо в терминале.

Поиск инструментов

Котировки в реальном времени. Данные поступают через gRPC-стрим напрямую с серверов «Финама» - без задержек промежуточных слоев. Биржевой стакан, лента сделок, свечи - все обновляется в реальном времени.

Профиль инструмента

Торговля с клавиатуры. Лимитные и рыночные заявки, стоп-лоссы, тейк-профиты, связанные SL/TP пары - все выставляется без мыши. Управление заявками тоже: отмена через X или Del, редактирование через E. Переключение между экранами - Tab, навигация - стрелки, подтверждение - Enter.

Характеристики: ~24 МБ оперативной памяти, мгновенный запуск, работа на macOS, Linux, Windows (включая WSL). Установка - одна команда, Docker-образ в комплекте.

Процесс: как это строилось

Стек выбирался из практических соображений.

Go - потому что он компилируется в один бинарник без зависимостей, потребляет мало памяти и идеально подходит для конкурентной работы с gRPC-стримами. Плюс - официальный SDK «Финама» написан на Go, что снимает вопрос совместимости.

tview - библиотека для построения TUI-интерфейсов в Go. Предоставляет готовые виджеты: таблицы, формы, модальные окна, навигацию. На ее базе собран весь интерфейс терминала.

gRPC-стриминг - ключевое преимущество API. Вместо того чтобы каждые N секунд запрашивать данные, клиент открывает один поток и получает обновления по мере их появления. Это критично для торгового терминала: ты видишь изменение цены в момент, когда оно происходит.

Архитектура проекта простая и прямолинейная:

  • api/ - клиент для взаимодействия с «Финам Trade API» через gRPC
  • ui/ - компоненты интерфейса на базе tview
  • config/ - управление конфигурацией
  • models/ - общие структуры данных

Первый релиз состоялся 19 января 2026 года. За два месяца - 8 релизов, от базового просмотра портфеля до полноценной торговли со стоп-заявками. Проект развивается в свободное время: иногда оно есть, иногда нет, поэтому темп неравномерный.

Интересные сложности

Из всех задач больше всего времени съело построение TUI-интерфейса на tview.

Казалось бы, консольный интерфейс - это просто: текст, таблицы, пара форм. На практике - отдельный мир со своими ограничениями. Размер экрана неизвестен заранее и может меняться. Нет пикселей, есть символы. Цвета ограничены палитрой терминала. Фокус ввода - только один элемент в каждый момент.

Свечной график в текстовом режиме - это отдельный квест. Unicode-символы блочной графики позволяют рисовать «почти настоящие» свечи, но нужно правильно масштабировать ось цен, адаптироваться под ширину окна и разумно подписывать ось времени для разных таймфреймов.

Модальные окна для заявок потребовали аккуратной работы с фокусом и валидацией. Особенно связанные SL/TP пары, где нужно показать два набора ценовых полей с динамической валидацией - в текстовом интерфейсе это заметно сложнее, чем в вебе.

Еще один нетривиальный момент - корректная обработка всех статусов заявок. API возвращает разные статусы для обычных, стоповых и связанных заявок. Нужно было правильно маппить их на понятные пользователю состояния и отображать в таблице со всеми деталями: стоп-условия, лимитные/стоповые цены, исполненный/оставшийся объем.

Про API: что понравилось

Отдельно хочу сказать про опыт работы с «Финам Trade API» - потому что качество API напрямую влияет на то, появятся ли вокруг него сторонние проекты.

Официальный Go SDK сэкономил значительное количество времени. Вместо того чтобы разбираться с proto-файлами, генерировать клиентский код, обрабатывать ошибки сериализации - берешь готовый пакет и работаешь с типизированными структурами.

gRPC-стриминг - главная причина, почему консольный клиент вообще имеет смысл. Без данных в реальном времени TUI-терминал был бы просто медленной альтернативой веб-интерфейсу. С потоковыми данными он становится полноценным инструментом.

Демосчет позволил разрабатывать и тестировать торговые функции без риска. Создаешь токен, подключаешься к песочнице, отлаживаешь размещение заявок - все как на реальном рынке, но с виртуальными деньгами.

Документация покрывает основные сценарии, а телеграм-чат помогает с нюансами, которые неизбежно возникают при интеграции.

Это хороший пример того, как брокер может стимулировать развитие экосистемы вокруг своей платформы: дать разработчикам инструменты - и они построят то, что полезно им самим.

Для кого это

Прежде всего - для тех, кто проводит день в терминале и не хочет из него выходить ради проверки позиции. Для любого трейдера с навыками разработчика или желанием их освоить. А еще для тех, кому важна скорость и минимализм. Никаких баннеров, никакого маркетинга внутри интерфейса - только данные и действия. Ну и для тех, кто работает на удаленных серверах без графической оболочки: подключился по SSH - и у тебя полноценный торговый терминал.

Что дальше

Проект активно развивается. В ближайших планах:

  • Аналитика по счету - детальная статистика по сделкам, доходности, распределению активов.
  • Избранное - возможность отслеживать выбранные инструменты в отдельном списке, без поиска каждый раз.
  • Улучшение визуализации данных и расширение набора поддерживаемых типов заявок.
  • Работа над UI интерфейсом что бы он выглядел еще приятнее и понятнее

Проект open source, лицензия Apache 2.0. Вклад приветствуется - от багрепортов до pull request'ов.

Если вы торгуете и живете в консоли - попробуйте. Исходный код лежит в оригинале этой статьи на Хабре.

Комментарии

Авторизуйтесь, чтобы оставить комментарий.
fn1170562 20.06.26 14:28
Победить gRPC - это тяжкий труд!
Ответить
fn740077 20.06.26 06:27
Спасибо за комментарий. Если Вы разработчик, то обращаюсь к Вам с просьбой сделать в  Finam Trade  кнопку   назад/ вперед. Иначе очень неудобно, когда что то нечаянно сдвинула , а вернуть нет возможности. Еще нужна кнопка - точка , для отметок на графике, и большее разнообразие цветовой палитры.
Ответить
fn728452 19.06.26 16:20
не все ясно, но звучит интересно 
Ответить
Обсуждаемые материалы
Загрузить ещё
Здравствуйте! Меня зовут Елена Соболева. Я редактор этого раздела сайта Finam.ru. Если у вас есть опыт использования сервисов и технологий в инвестициях и вы готовы им поделиться – пишите мне на адрес esoboleva@corp.finam.ru. Интересные кейсы мы будем публиковать в этом разделе.

Для тех, кто устал переключаться между терминалом и браузером

18.06.26 Finam.ru

Сервис предоставляет доступ к российским и зарубежным биржам и предлагает сниженные комиссии для активных алготрейдеров

12.06.26 Finam.ru

К 2026 году всё больше трейдеров, инвестиционных фондов, разработчиков и частных инвесторов используют инструменты ИИ для анализа рынков

10.06.26 Finam.ru

Это не революция, в которой интеллект заменяет инфраструктуру

02.06.26 Finam.ru

Эксперт рассказал о будущем трейдинга в эпоху ИИ

17.05.26 Finam.ru

Прибыльная торговля с использованием передовых алгоритмов и моделей

Меньше решений «на глаз» и больше решений, которые можно спокойно объяснить самому себе

Полноценный инструмент для поиска идей, анализа и принятия инвестиционных решений

21.01.26 Finam.ru

«Финам» открыл доступ к платформе для мониторинга арбитражных аномалий Spread Insight

Новые метрики для российских облигаций в «Финам AI-скринере»

С помощью виртуального портфеля можно тестировать идеи и улучшать стратегию, не боясь потерять деньги

Изучайте компании с помощью удобных и понятных мультипликаторов

03.10.25 Finam.ru

В периоды неопределенности на рынке важно уметь грамотно диверсифицировать инвестиционный портфель

"Финам" продолжает развивать технологии для инвесторов и запускает инновационный сервис — "Финам Инсайты"

19.09.25 Finam.ru

Почему ИПИФ Фонд "Арбитраж" может быть полезен российскому инвестору?

Как создать виртуальный портфель и для чего это нужно

08.04.25 Finam.ru

Новая полезная опция — возможность оценить эффективность стратегии относительно рынка

Как венгерский инженер и программист совершил техническую революцию в биржевой торговле

Interactive Brokers Group, Inc. 0,96%

Теперь в «Финам AI-скринер» можно создавать несколько скринеров-стратегий, каждый из которых будет отражать уникальный подход к инвестированию

07.12.24 Finam.ru

Сервис «Финам Автоследование» ведет свою историю с 2011 года

Как пионер теханализа зарабатывал 40% ежегодно на протяжении 35 лет на фондовом рынке

Экспорт котировок – важный инструмент для анализа рынка, разработки торговых стратегий и принятия инвестрешений

06.02.24 Finam.ru

Какая стратегия может обеспечить дополнительную защиту от риска коррекции на рынках?

14.12.23 Finam.ru

Как правильно найти инструменты для парного трейдинга, чтобы добиться успеха? Какие стратегии существуют?

10.12.23 Finam.ru

Стратегии парного трейдинга обычно рассчитаны на краткосрочную или среднесрочную перспективу.

09.12.23 Finam.ru

В поисках возможностей профессионально зарабатывать на рынке в период неизвестности

Home Depot, Inc. (The) 2,08% 3M Company 0,86% McDonald's Corporation -1,84% Walmart Inc.

Прогноз позволяет выделить перспективные для инвестиций бумаги с лучшим соотношением доходности и риска

Загрузить ещё