Как подружиться с алготрейдингом на Go без боли и лишних зависимостей

22 мая 2026
1,819
278
21
3 недели

Знакомая история: хочется попробовать написать своего торгового бота, но как только доходит до реализации технического анализа, энтузиазм угасает. Писать самому расчет RSI или полос Боллинджера — сомнительное удовольствие, а тащить в проект огромные библиотеки с кучей зависимостей не хочется. Я наткнулся на репозиторий cinar/indicator, который решает эту проблему максимально изящно.

Что это такое и зачем оно вам

Indicator Go — это не просто набор формул. Это полноценный фреймворк для технического анализа на Go. Автор собрал под капотом более 80 индикаторов: от классических скользящих средних до довольно экзотических вещей вроде индекса Ульцера или облака Ишимоку.

Проект подкупает своей чистотой. Здесь нет зоопарка сторонних библиотек, только стандартная библиотека Go и дженерики. Последнее особенно радует, потому что позволяет работать с любыми числовыми типами данных без вечного приведения типов.

Чем хороша вторая версия

Недавно проект обновился до v2, и это тот случай, когда мажорная версия реально меняет опыт использования.

Реклама

Во-первых, автор полностью переписал код под использование Go-каналов. Теперь данные текут стримами. Это логично для трейдинга: пришла новая котировка — индикатор тут же выплюнул обновленное значение. Если вы привыкли работать со слайсами, в библиотеке есть хелперы для конвертации, так что переучиваться не придется.

Во-вторых, покрытие тестами довели до 90%. Для финансового софта это критично. В репозитории лежат CSV-файлы с тестовыми данными для каждого индикатора, что позволяет проверить точность расчетов на реальных исторических цифрах.

Что внутри коробки

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

Индикаторы на любой вкус

Все инструменты разбиты по категориям: трендовые, моментум, волатильность и объем. Если вам нужно что-то специфическое, вроде Kaufman's Adaptive Moving Average (KAMA) или Money Flow Index (MFI), скорее всего, оно здесь уже есть.

Готовые стратегии

Библиотека не просто считает цифры, она предлагает скелет для принятия решений. Есть базовые стратегии вроде «Buy and Hold», а есть составные (Compound Strategies). Например, можно объединить MACD и RSI через логическое «И», чтобы бот открывал сделку только при подтверждении от обоих индикаторов.

Бэктестинг и отчеты

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

report := backtest.NewHTMLReport(outputDir)
bt := backtest.NewBacktest(repository, report)
bt.Names = append(bt.Names, "aapl")
bt.Strategies = append(bt.Strategies, trend.NewApoStrategy())

err = bt.Run()

Как это использовать на практике

Самый быстрый способ пощупать проект — запустить его через Docker. Автор предусмотрел интеграцию с Tiingo (популярный поставщик рыночных данных). Вам нужен только API-ключ, и одной командой можно запустить бэктест для интересующих акций:

docker run -it --rm \
  -v $(pwd)/output:/app/output \
  ghcr.io/cinar/indicator:latest \
  --api-key ВАШ_КЛЮЧ_TIINGO \
  --assets aapl msft googl

После этого в папке output появится index.html с графиками и результатами. Это отличный способ быстро проверить гипотезу, не написав ни строчки кода на Go.

Интеграция с ИИ через MCP

Любопытная деталь: в библиотеку встроена поддержка MCP (Model Context Protocol). Это значит, что вы можете подключить эти инструменты к AI-агентам или LLM. Если вы строите систему, где нейросеть должна анализировать рынок и принимать решения на основе «техана», этот мостик сэкономит кучу времени.

Кому стоит попробовать

Indicator Go идеально подойдет тем, кто:

  1. Пишет торгового бота или аналитический сервис на Go.
  2. Хочет разобраться, как работают индикаторы «под капотом» (код чистый и читается легко).
  3. Ищет легкий инструмент для бэктестинга без необходимости разворачивать тяжелые платформы вроде Python-овского Backtrader.

Проект живой, активно поддерживается и имеет версии на TypeScript, если вам вдруг понадобится перенести логику на фронтенд. Несмотря на двойную лицензию (AGPLv3 для опенсорса и коммерческая для закрытых продуктов), для личных проектов и открытых разработок это одно из лучших решений в экосистеме Go.

Конечно, стоит помнить о рисках: никакая библиотека не гарантирует прибыль, а баги случаются даже при 90% покрытия. Но как инструмент для автоматизации рутины Indicator Go справляется на отлично.

🍪 Мы используем файлы cookie и сервис аналитики Яндекс.Метрика, чтобы сайт работал лучше. Продолжая пользоваться devtrends.ru, вы соглашаетесь с обработкой данных согласно Политике конфиденциальности.