В предыдущих статьях я рассказывал, как пришёл к идее создания собственного торгового робота. Мотивация проста:

  • Автоматизация - алгоритм не спит, не нервничает и не занят своими делами.

  • Дисциплина - робот исключает эмоции, следуя правилам.

  • Тестирование - любую идею можно проверить на исторических данных, прежде чем рисковать деньгами.

Я всегда разделял два этапа: разработку торговых идей (логика стратегии) и реализацию механизма исполнения (отправка заявок, автотрейдинг). Сначала - бэктестинг и базовая оптимизация, и только потом - реальная торговля.

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

Почему я не хочу использовать QUIК и Windows?

По моему мнению QUIK архаичен, нестабилен для автоматизации и требует оконной среды. Он не предназначен для headless-серверов (это компьютер без монитора, клавиатуры, мыши). QUIK + LUA или внешнее ПО - это сложная, криво документированная и уязвимая связка.

Выбор железа и ОС: Raspberry Pi + Ubuntu Server

Возможное место установки сервера у меня в коридоре в слаботочном шкафу
Возможное место установки сервера у меня в коридоре в слаботочном шкафу

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

Слаботочный шкаф. Raspberry Pi 4 в коробке со стилизованным изображением малины (raspberry). На этой малинке на фото крутится Home Assistant для управления всеми умными устройствами
Слаботочный шкаф. Raspberry Pi 4 в коробке со стилизованным изображением малины (raspberry). На этой малинке на фото крутится Home Assistant для управления всеми умными устройствами

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

Конечно, можно было бы рассмотреть аренду виртуального сервера (VPS) в облаке, но это влечет ежемесячные платежи. Старый ноутбук тоже мог бы подойти, но Raspberry Pi компактнее, тише и может быть установлена незаметно. Поэтому для моих целей связка Raspberry Pi и Ubuntu Server выглядит оптимальным решением для создания независимого и надежного торгового бота.

Микрокомпьютеров существует довольно таки много: например этот старый Orange Pi  у меня служит для превращения обычного квартирного домофона в IP камеру видеонаблюдения https://habr.com/p/836718/
Микрокомпьютеров существует довольно таки много: например этот старый Orange Pi у меня служит для превращения обычного квартирного домофона в IP камеру видеонаблюдения https://habr.com/p/836718/

Поиск подходящего языка и фреймворка

Вообще начал я с того, что было ближе и привычнее - Node.js. У меня за плечами немалый опыт в этом языке. Работа с WebSocket и REST API, запуск задач по таймеру, хранение данных в JSON - всё это в Node делается быстро и удобно. Именно на этой технологии я собрал свой первый рабочий прототип, и даже выложил его в открытый доступ: SilverFir-TradingBot.

Но по мере развития проекта я начал сталкиваться с ограничениями. Самая большая проблема - отсутствие зрелых библиотек для финансового анализа и бэктестинга. Всё приходилось писать вручную: от парсинга котировок до расчёта индикаторов. Подключение к API брокеров тоже часто требовало обёрток и промежуточных слоёв.

Под капотом Pine Script: как устроен и для чего используется язык TradingView
Pine Script — это язык программирования, разработанный командой TradingView как Domain Specific Lang...
habr.com

В процессе изучения темы я также узнал о Pine Script - языке программирования, встроенном в TradingView. Он специально создан для написания торговых индикаторов и стратегий. Прост в освоении, отлично подходит для визуального анализа на графике, позволяет запускать простейшие бэктесты буквально в пару строк. Но у него есть ограничения: нет доступа к внешним API и он годится скорее для прототипирования идей, чем для полноценного автотрейдинга.

Поэтому я переключился на Python - язык, на котором написано большинство современных библиотек для финансов, анализа данных и машинного обучения. С переходом на Python открылся целый мир: Backtrader, pandas, matplotlib, TA-Lib. Всё готово: бери и тестируй любую идею. Вместо бесконечных "велосипедов" я сосредоточился на том, что важно - стратегии.

От Backtrader к Pine Script и обратно

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

Мой первый и неудачный опыт поиска торговой стратегии для Московской биржи
Когда закончил писать механизм своего торгового робота обнаружил, что самое главное всё таки не сам ...
habr.com

Решил попробовать backtesting.py - тем более эта библиотека недавно обновилась. Она действительно проще, особенно если тестировать одну стратегию на одной бумаге. Но всё равно: слишком много ручной настройки, особенно если часто меняешь параметры.

Тестировании торговой системы со случайными сигналами на вход для фьючерсов Московской биржи при помощи Python
В этой статье расскажу о том, как воспроизвел и протестировал торговую систему для фьючерсов Московс...
habr.com

В какой-то момент я открыл для себя Pine Script и TradingView. Это было откровением. Пишешь код - сразу видишь результат. Делиться стратегией можно по ссылке, и любой читатель статьи (я ведь пишу публичные статьи) мгновенно видит то же, что и я. Идеально для демонстрации логики и быстрого прототипирования. Но автоматизировать торговлю через Pine Script - плохая идея: нет доступа к API, нет гарантий исполнения.

Pine Script в деле: тестируем стратегию с линейной регрессией и R² (по мотивам S&C из 2007 года) на Московской Бирже
Последние две недели я публиковал подборки из рубрики Traders’ Tips журнала Technical Analysis of ST...
habr.com

Я начал искать альтернативы и наткнулся на QuantConnect (Lean Engine). Вроде бы всё есть — история, брокеры, мультиассеты. Но реализация на C#, закрытая инфраструктура и сложность кастомизации меня остановили.

В итоге я хочу вернутся к Python и Backtrader. Хоть он мне и не особенно нравится, но в связке с готовой библиотекой-оберткой он позволяет работать с реальным API. Это единственный реально доступный путь автоматизации с брокером в России, не завязанный на QUIK и Windows.

Место установки сервера в стене, где стоит коммутатор и один из роутеров
Место установки сервера в стене, где стоит коммутатор и один из роутеров

Обзор публичных API российских брокеров

В России есть выбор. Сегодня три брокера:

предоставляют официально задокументированные API.

Для всех них энтузиаст из Екатеринбурга Чечет Игорь Александрович разработал удобные Python-обёртки: TinkoffPy, AlorPy и FinamPy. Это даёт возможность не только отправлять заявки, но и проводить бэктестинг прямо из Backtrader. Например, связка BackTraderTinkoff позволяет торговать и тестировать стратегии, не выходя из Python-экосистемы.

На фоне этого особенно интересно сравнить с международной практикой. У брокера Interactive Brokers есть официальное руководство по работе с Backtrader - такой уровень зрелости интеграции говорит о серьёзном подходе. Аналогично и в криптоиндустрии: тот же Bybit предоставляет API и готовые коннекторы на GitHub, что подчёркивает тренд на API-фикацию торговли. Я сам не работаю с криптой, но это внушает оптимизм.

Переделанное место установки Raspberry Pi в стене
Переделанное место установки Raspberry Pi в стене

Заключение

Итак, мой текущий стек вырисовывается так: Pine Script для быстрой проверки гипотез и визуализации, затем перенос логики в Python и Backtrader для глубокого бэктестинга, и наконец, TinkoffPy для реальной торговли через API брокера на домашнем Raspberry Pi.

Цель - полностью автономный робот на открытых технологиях, без QUIK и сопутствующей головной боли.

Что думаете?

Автор: Михаил Шардин
? Моя онлайн-визитка
? Telegram «Умный Дом Инвестора»

20 мая 2025 г.

Комментарии (17)


  1. excoder
    20.05.2025 01:45

    Ну это всё конечно классно, но что является целью - путешествие или конечный пункт? :) сколько робот зарабатывает-то?


    1. empenoso Автор
      20.05.2025 01:45

      Хороший вопрос, но ведь это не реклама, для меня пока это путешествие, вот её предыстория: https://habr.com/ru/articles/846938/


  1. nikolz
    20.05.2025 01:45

    Что скажете об этом варианте:

    и этом:


    1. empenoso Автор
      20.05.2025 01:45

      Смотря для чего. Если один скрипт на питоне, то и б/у raspberry pi за 3 т.р. потянет.


      1. nikolz
        20.05.2025 01:45

        Вы предполагаете торговать одной акцией? Если нет, то сколько акций можно торговать на б/у raspberry?


        1. empenoso Автор
          20.05.2025 01:45

          В моём случае можно легко заменить на тоже место хоть intel nuc установить


        1. empenoso Автор
          20.05.2025 01:45

          backtesting.py для одной бумаги, Backtrader - для многих.


    1. NutsUnderline
      20.05.2025 01:45

      это же не биткоин - мощность сервера (почти) не коррелирует с количеством добываемых денег. В любом проекте на малину наоборот очень часто появляются желающие сэкономить и запустить его на апельсине. в данном случае было бы прикольно ужаться до lucky fox.


  1. akakoychenko
    20.05.2025 01:45

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

    Все же, если уже зашла речь о надёжности, то квартира - явно не датацентр, даже, если присутствуют ибп и 2 провайдера.

    Хотя... помню, на заре алготрейдинга на Forts, были довольно серьёзные алготрейдеры с серьёзными оборотами, которые принципиально запускали робота только из дому. Но там причина другая была: страх, что сервер физически украдут, извлекут жёсткий диск, и скопируют с него грааль, после чего, двум роботам станет тесно на одном рынке, ибо робот забирал практически всю ликвидность по интересующим его ценам в интересующий его момент. Такие люди ещё и специально вбрасывали некий % рандомных сделок вообще от балды, чтобы, если конкурент купит историю его сделок и заявок через крысу в брокерской компании, то затруднить ему реверс-инжиниринг