Code Monkey home page Code Monkey logo

finambotik's Introduction

Finambotik

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

Легко масштабируется. Для этого в отдельный процесс вынесен диспетчер подписок на стримы котировок.

Для работы робота понадобится 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 startup

Telegram

Нужно создать телеграм-бота через @BotFather. Запомнить сгенерированный токен, разрешить добавление в группу (чат) и отключить приватный режим, чтобы телеграм-бот имел доступ к сообщениям в группе. Добавить его в новую группу, в которой будут отправляться команды торговому роботу.

Конфигурация

В файле config.js вписать свои логин, токен и id брокерского счёта. Это может быть как пустой счёт, так и счёт с бумагами на балансе. Робот будет закрывать только свои позиции в рамках своей стратегии. Также вписать токен телеграм-бота и id группы. Поменять production на 1. В директории с торговым роботом выполнить установку пакетов:

npm install

Запуск

3 раздельных процесса отвечают каждый за свою задачу: Телеграм за чат и команды, диспетчер подписок раздаёт ботам только необходимые подписки, и сам робот за алгоритм и рассчёты. Их можно стартануть по отдельности:

node telegram.js
node grpc.js
node bot1.js

Но я предпочитаю использовать процесс менеджер. Из директории с торговым роботом нужно выполнить следующее:

pm2 start pm2.config.js
pm2 save

По желанию можно в файле settings/bot1-indicators.json вписать циферки индикаторов, чтобы робот не ждал 200 свечек.

Команды в чате для торгового бота

Список команд

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 были скорректированы пути в секциях import. Поэтому в будущем при обновлении .proto файлов необходимо будет перепроверить эти пути.

finambotik's People

Contributors

polkila avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.