В предыдущих статьях я рассказывал, как пришёл к идее создания собственного торгового робота. Мотивация проста:
Автоматизация - алгоритм не спит, не нервничает и не занят своими делами.
Дисциплина - робот исключает эмоции, следуя правилам.
Тестирование - любую идею можно проверить на исторических данных, прежде чем рисковать деньгами.
Я всегда разделял два этапа: разработку торговых идей (логика стратегии) и реализацию механизма исполнения (отправка заявок, автотрейдинг). Сначала - бэктестинг и базовая оптимизация, и только потом - реальная торговля.
Поскольку я нахожусь в активном поиске подходящего решения для автотрейдинга и уже опробовал несколько рабочих вариантов, то эта статья представляет мои размышления об этом механизме исполнения заявок. Ваша критика или поддержка идей приветствуется.
Почему я не хочу использовать QUIК и Windows?
По моему мнению QUIK архаичен, нестабилен для автоматизации и требует оконной среды. Он не предназначен для headless-серверов (это компьютер без монитора, клавиатуры, мыши). QUIK + LUA или внешнее ПО - это сложная, криво документированная и уязвимая связка.
Выбор железа и ОС: Raspberry Pi + Ubuntu Server

Raspberry Pi - это компактный одноплатный компьютер, размером с кредитную карту. Его главные козыри - низкая цена, минимальное энергопотребление (можно держать включенным 24/7) и достаточное для моих задач быстродействие. Мои торговые стратегии оперируют на часовых и дневных интервалах, где не требуются гигантские вычислительные мощности. Даже старая модель Raspberry Pi 3 справится с обработкой данных и отправкой ордеров через API брокера. Это идеальный домашний сервер для робота: компактный, бесшумный и условно недорогой если брать не самые новые модели.

В качестве операционной системы я выбрал Ubuntu Server. Этот дистрибутив Linux славится стабильностью, обширным сообществом и легкостью установки нужного ПО. Python, библиотеки для работы с API - всё ставится без проблем. Отсутствие графического интерфейса (GUI) экономит драгоценные ресурсы "малинки", а управление системой удобно осуществляется удаленно по SSH с любого другого компьютера в домашней сети.
Конечно, можно было бы рассмотреть аренду виртуального сервера (VPS) в облаке, но это влечет ежемесячные платежи. Старый ноутбук тоже мог бы подойти, но Raspberry Pi компактнее, тише и может быть установлена незаметно. Поэтому для моих целей связка Raspberry Pi и Ubuntu Server выглядит оптимальным решением для создания независимого и надежного торгового бота.

Поиск подходящего языка и фреймворка
Вообще начал я с того, что было ближе и привычнее - Node.js. У меня за плечами немалый опыт в этом языке. Работа с WebSocket и REST API, запуск задач по таймеру, хранение данных в JSON - всё это в Node делается быстро и удобно. Именно на этой технологии я собрал свой первый рабочий прототип, и даже выложил его в открытый доступ: SilverFir-TradingBot.
Но по мере развития проекта я начал сталкиваться с ограничениями. Самая большая проблема - отсутствие зрелых библиотек для финансового анализа и бэктестинга. Всё приходилось писать вручную: от парсинга котировок до расчёта индикаторов. Подключение к API брокеров тоже часто требовало обёрток и промежуточных слоёв.
В процессе изучения темы я также узнал о Pine Script - языке программирования, встроенном в TradingView. Он специально создан для написания торговых индикаторов и стратегий. Прост в освоении, отлично подходит для визуального анализа на графике, позволяет запускать простейшие бэктесты буквально в пару строк. Но у него есть ограничения: нет доступа к внешним API и он годится скорее для прототипирования идей, чем для полноценного автотрейдинга.
Поэтому я переключился на Python - язык, на котором написано большинство современных библиотек для финансов, анализа данных и машинного обучения. С переходом на Python открылся целый мир: Backtrader
, pandas
, matplotlib
, TA-Lib
. Всё готово: бери и тестируй любую идею. Вместо бесконечных "велосипедов" я сосредоточился на том, что важно - стратегии.
От Backtrader к Pine Script и обратно
Сначала я выбрал Backtrader - мощный инструмент, позволяющий детально протестировать стратегию, использовать несколько таймфреймов, фильтры, индикаторы, комиссионные и проскальзывание. Но очень быстро стало ясно, что у него есть обратная сторона: слишком много времени уходит на подготовку данных, настройку окружения, отладку визуализации и описание каждой мелочи в коде. Всё гибко, но громоздко.
Решил попробовать backtesting.py - тем более эта библиотека недавно обновилась. Она действительно проще, особенно если тестировать одну стратегию на одной бумаге. Но всё равно: слишком много ручной настройки, особенно если часто меняешь параметры.
В какой-то момент я открыл для себя Pine Script и TradingView. Это было откровением. Пишешь код - сразу видишь результат. Делиться стратегией можно по ссылке, и любой читатель статьи (я ведь пишу публичные статьи) мгновенно видит то же, что и я. Идеально для демонстрации логики и быстрого прототипирования. Но автоматизировать торговлю через Pine Script - плохая идея: нет доступа к API, нет гарантий исполнения.
Я начал искать альтернативы и наткнулся на QuantConnect (Lean Engine). Вроде бы всё есть — история, брокеры, мультиассеты. Но реализация на C#, закрытая инфраструктура и сложность кастомизации меня остановили.
В итоге я хочу вернутся к Python и Backtrader. Хоть он мне и не особенно нравится, но в связке с готовой библиотекой-оберткой он позволяет работать с реальным API. Это единственный реально доступный путь автоматизации с брокером в России, не завязанный на QUIK и Windows.

Обзор публичных API российских брокеров
В России есть выбор. Сегодня три брокера:
Т-Инвестиции: https://developer.tbank.ru/invest/intro/intro
Алор: https://alor.dev/docs/
предоставляют официально задокументированные API.
Для всех них энтузиаст из Екатеринбурга Чечет Игорь Александрович разработал удобные Python-обёртки: TinkoffPy, AlorPy и FinamPy. Это даёт возможность не только отправлять заявки, но и проводить бэктестинг прямо из Backtrader. Например, связка BackTraderTinkoff позволяет торговать и тестировать стратегии, не выходя из Python-экосистемы.
На фоне этого особенно интересно сравнить с международной практикой. У брокера Interactive Brokers есть официальное руководство по работе с Backtrader - такой уровень зрелости интеграции говорит о серьёзном подходе. Аналогично и в криптоиндустрии: тот же Bybit предоставляет API и готовые коннекторы на GitHub, что подчёркивает тренд на API-фикацию торговли. Я сам не работаю с криптой, но это внушает оптимизм.

Заключение
Итак, мой текущий стек вырисовывается так: Pine Script для быстрой проверки гипотез и визуализации, затем перенос логики в Python и Backtrader для глубокого бэктестинга, и наконец, TinkoffPy для реальной торговли через API брокера на домашнем Raspberry Pi.
Цель - полностью автономный робот на открытых технологиях, без QUIK и сопутствующей головной боли.
Что думаете?
Автор: Михаил Шардин
? Моя онлайн-визитка
? Telegram «Умный Дом Инвестора»
20 мая 2025 г.
Комментарии (17)
nikolz
20.05.2025 01:45Что скажете об этом варианте:
и этом:
empenoso Автор
20.05.2025 01:45Смотря для чего. Если один скрипт на питоне, то и б/у raspberry pi за 3 т.р. потянет.
NutsUnderline
20.05.2025 01:45это же не биткоин - мощность сервера (почти) не коррелирует с количеством добываемых денег. В любом проекте на малину наоборот очень часто появляются желающие сэкономить и запустить его на апельсине. в данном случае было бы прикольно ужаться до lucky fox.
akakoychenko
20.05.2025 01:45Вот, прямо чувствую, как желание обладать домашним бесшумным сервером в слаботочном шкафу и гордиться этим фактом подтянуло за собой и необходимость вернуться к трейдингу, а не наоборот)
Все же, если уже зашла речь о надёжности, то квартира - явно не датацентр, даже, если присутствуют ибп и 2 провайдера.
Хотя... помню, на заре алготрейдинга на Forts, были довольно серьёзные алготрейдеры с серьёзными оборотами, которые принципиально запускали робота только из дому. Но там причина другая была: страх, что сервер физически украдут, извлекут жёсткий диск, и скопируют с него грааль, после чего, двум роботам станет тесно на одном рынке, ибо робот забирал практически всю ликвидность по интересующим его ценам в интересующий его момент. Такие люди ещё и специально вбрасывали некий % рандомных сделок вообще от балды, чтобы, если конкурент купит историю его сделок и заявок через крысу в брокерской компании, то затруднить ему реверс-инжиниринг
excoder
Ну это всё конечно классно, но что является целью - путешествие или конечный пункт? :) сколько робот зарабатывает-то?
empenoso Автор
Хороший вопрос, но ведь это не реклама, для меня пока это путешествие, вот её предыстория: https://habr.com/ru/articles/846938/