Finambotik
Торговый робот для Finam Trade API
Install / Use
/learn @polkila/FinambotikREADME
Finambotik
Робот для алгоритмической торговли, подключаемый к Finam TradeAPI. Управляется через Telegram и базовые настройки в конфигурационном файле.
Легко масштабируется. Для этого в отдельный процесс вынесен диспетчер подписок на стримы котировок.
Для работы понадобится NodeJS, Redis и менеджер процессов по желанию, например PM2.
Подготовка окружения
Установка NodeJS
sudo apt install nodejs
Установка Redis
sudo apt install lsb-release
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
sudo apt-get update
sudo apt-get install redis
Документация по установке для Windows и macOS.
Установка PM2
npm install pm2@latest -g
Для автозапуска PM2 вместе с ОС:
pm2 startup
Telegram
Нужно создать Telegram-бота через @BotFather. Запомнить сгенерированный токен, разрешить добавление в группу (чат) и отключить приватный режим, чтобы Telegram-бот имел доступ к сообщениям в группе. Добавить его в новую группу, в которой будут отправляться команды торговому роботу.
Конфигурация
В файле config.js вписать свои логин, токен и id брокерского счёта. Это может быть как пустой счёт, так и счёт с бумагами на балансе. Робот будет закрывать только свои позиции в рамках своей стратегии.
Также вписать токен Telegram-бота и id группы. Поменять production на 1 для торговли на брокерском счёте или оставить 0 для «бумажной» торговли.
В директории с торговым роботом выполнить установку пакетов:
npm install
Запуск
3 раздельных процесса отвечают каждый за свою задачу:
telegram.js — за чат и команды, диспетчер подписок grpc.js раздаёт ботам необходимые им подписки, и сам робот bot1.js — за алгоритм и рассчёты.
Их можно запустить по отдельности в трёх консолях:
node telegram.js
node grpc.js
node bot1.js
Но я предпочитаю использовать процесс-менеджер и готовый конфигурационный файл для запуска всех необходимых процессов. Из директории с торговым роботом нужно выполнить следующее:
pm2 start pm2.config.js
Для сохранения списка процессов на случай перезапуска ОС:
pm2 save
После этого остановка/старт/перезапуск всех трёх процессов делается такими командами в консоли:
pm2 stop pm2.config.js
pm2 start pm2.config.js
pm2 restart pm2.config.js
Остановка/старт/перезапуск отдельного процесса:
pm2 stop pm2.config.js --only telegram
pm2 start pm2.config.js --only telegram
pm2 restart pm2.config.js --only telegram
pm2 stop pm2.config.js --only grpc
pm2 start pm2.config.js --only grpc
pm2 restart pm2.config.js --only grpc
pm2 stop pm2.config.js --only bot1
pm2 start pm2.config.js --only bot1
pm2 restart pm2.config.js --only bot1
По желанию можно в файле settings/bot1-indicators.json вписать циферки индикаторов, чтобы робот не ждал 200 свечек. Для этого нужно сначала остановить робота pm2 stop pm2.config.js --only bot1, затем вписать циферки, и запустить робота pm2 stop pm2.config.js --only bot1.
Команды в чате для торгового бота
Список команд
help
h
Добавить инструмент
add ticker TQBR.SBER
Удалить инструмент
delete ticker SBER
Остановить/возобновить покупки/продажи
stop buy
start buy
stop sell
start sell
Остановить/возобновить покупки и продажи глобально
stop
start
Остановить/возобновить отдельный инструмент
stop SBER
start SBER
stop buy SBER
start buy SBER
stop sell SBER
start sell SBER
Установить стоп-лосс/тейк-профит 5% для робота (глобально)
sl 5
tp 5
Установить стоп-лосс/тейк-профит 5% для отдельного инструмента
sl SBER 5
tp SBER 5
Купить/продать бумагу встречным лимитным ордером
buy SBER
sell SBER
Купить/продать бумагу по указанной цене
buy SBER 234.56
sell SBER 234.56
Продать рублёвые/долларовые бумаги
sell rub
sell usd
Продать бумаги с результатом >= +5%
sell 5
Продать все бумаги, купленные роботом
sell *
Просмотр бумаг в портфеле
portfolio
p
Список отслеживаемых бумаг
list
l
Список ордеров
orders
o
Установить максимальный размер одной позиции для RUB/USD
max rub 5000
max usd 100
Список настроек робота
settings
Обновление
Скачать новые .proto файлы можно по этой ссылке. Затем их нужно поместить в папку contracts-finam.
После обновления .proto файлов или менеджера подписок grpc.js нужно перезапустить его командой в консоли pm2 restart pm2.config.js --only grpc.
После изменения торгового робота bot1.js нужно перезапустить его командой в консоли pm2 restart pm2.config.js --only bot1.
Интеграция
Для внедрения собственной стратегии в этого робота, нужно в файле bot1.js изменить функцию update_indicators() для торговли по свечам, или изменить функцию event_orderbook() для торговли по стакану.
Можно склонировать торгового робота и применять две и более стратегии одновременно. Для этого нужно:
- скопировать файл
bot1.jsи назвать, например,bot2.js; - изменить в этом файле переменную
redis_prefixна что-нибудь вроде'bot2'; - создать для него отдельную группу в Telegram;
- добавить в эту группу ранее созданного Telegram-бота;
- вписать id группы в конфигурационный файл
config.jsаналогичноbot1, например,bot2: -123456789,; - создать ещё одну секцию в конфигурационном файле PM2
pm2.config.jsаналогично секции дляbot1; - запустить торгового робота командой в консоли
pm2 start pm2.config.js --only bot2.
Готово! Два торговых робота работают одновременно.
Присмотритесь к индикатору перепроданности/перекупленности индекса SP500, чтобы создать свою стратегию торговли американскими бумагами. Он предсказывает будущее!
Related Skills
node-connect
349.9kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.8kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.9kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.9kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
