Данный проект создан для автоматизации процесса инвестиции и трейдинга в брокере Tinkoff Investments.
Функционал трейдер-бота:
- мониторинг активов
- автоматическое решение о совершении операции
- следование заданной стратегии
- сохранение данных об операциях
- сохранение данных о балансе счета после каждой операции
- ведение подробных логов действий программы
- может быть подключен к тебеграм-боту для управления сервисом
Фунцкионал телеграм бота:
- приостановление / возобновление работы сервиса
- очистка лог-файлов и csv-отчетов
- пересылка log-файла и cdv-отчетов
- формирование отчета об операциях за день
- формирование отчета о текущем балансе счета
Активы, которые необходимо мониторить, настраиваются в конфигурациях для активов (asset_configs).
Имеется возможность добавлять активы, удалять их, давать им параметры покупки и продажи, а так же назначать им стратегию,
по которой будут происходить решения об операциях.
Имеется возможность добавлять собственные стратегии, однако их необходимо
написать самостоятельно и внести в модуль "strategy".
Так же можно самостоятельно добавлять шаблоны для активов.
В настоящее время доступны:
- шаблон активов: CandleTemplate (работа основана на получении свеч)
- стратегии: TrendFollowing (следование тренду)
Перед стартом программы проверьте и настройте следующие конфигурации:
После настроек можно запускать бота:
Для доступа к API необходимы токены.
Файл хранения токенов: configs/.configs.ini.
Шаблон находится в файле configs/.configs.temp.ini, откуда его необходимо перенести в файл конфигураций .configs.ini.
Перед заполнением configs.ini необходимо выполнить команды:
cd путь\в\директорию\trader_bot
copy configs\.configs.temp.ini configs\.configs.iniСодержимое файла:
[TOKENS]
sandbox =
token =
telegram_bot_token =
owner_telegram_id = - sandbox - токен для запуска бота в режиме песочницы
- token - токен, привязанный к существующему счету
- telegram_bot_token - токен телеграм-бота, которого необходимо привязать к сервису
- owner_telegram_id - ID Вашего профиля в телеграме
API токены необходимо получить на сайте брокера.
Токен для бота можно получить у FatherBot.
Токен профиля так можно получить у ботов типа GetMyId.
Путь файла конфигурации: configs/asset_configs.json
Конфигурация имеет следующий вид (пример заполнения):
[
{
"name": "TITR@",
"figi": "TCS30A108BL2",
"amount": 160,
"days_back": 30,
"timeframe": 9,
"check_interval": 1800,
"type": 4,
"strategy": "trendfollowing",
"template": "candle",
"construct_data": {
"MA_small": 10,
"MA_long": 20
}
}
]Таблица конфигурации
| ключ | тип | описание |
|---|---|---|
| name | str | название актива |
| figi | str | figi-идентификатор актива |
| amount | int | количество для торгов |
| days_back | int | за сколько дней брать свечи |
| timeframe | int | интервал свеч (таблица интервалов ниже) |
| check_interval | int | интервал получения новых свечей (в секундах) |
| type | int | тип актива (таблица "Инструменты") |
| strategy | str | вид подключаемой стратегии (таблица "Виды стратегий") |
| template | str | название шаблона для объекта актива |
| construct_data | dict | данные о подключаемой стратегии (таблица "Индикаторы стратегий") |
Таблица видов стратегий
| название | описание | индикаторы |
|---|---|---|
| trendwollowing | Следование тренду - покупка совершается при движении тренда вверх, продажа при смене тренда на нисходящий | MA_small, MA_long |
Таблица индикаторов стратегий
| индикатор | расшифровка |
|---|---|
| MA_small | Средняя скользящая за заданное число свечей (меньшее чем в MA_long) |
| MA_long | Средняя скользящая за заданное число свечей (большее чем в MA_small) |
Таблица интервалов
| номер | интервал |
|---|---|
| 0 | CANDLE_INTERVAL_UNSPECIFIED |
| 1 | CANDLE_INTERVAL_1_MIN |
| 2 | CANDLE_INTERVAL_5_MIN |
| 3 | CANDLE_INTERVAL_15_MIN |
| 4 | CANDLE_INTERVAL_HOUR |
| 5 | CANDLE_INTERVAL_DAY |
| 6 | CANDLE_INTERVAL_2_MIN |
| 7 | CANDLE_INTERVAL_3_MIN |
| 8 | CANDLE_INTERVAL_10_MIN |
| 9 | CANDLE_INTERVAL_30_MIN |
| 10 | CANDLE_INTERVAL_2_HOUR |
| 11 | CANDLE_INTERVAL_4_HOUR |
| 12 | CANDLE_INTERVAL_WEEK |
| 13 | CANDLE_INTERVAL_MONTH |
| 14 | CANDLE_INTERVAL_5_SEC |
| 15 | CANDLE_INTERVAL_10_SEC |
| 16 | CANDLE_INTERVAL_30_SEC |
Таблица инструментов
| номер | инструмент |
|---|---|
| 0 | INSTRUMENT_TYPE_UNSPECIFIED |
| 1 | INSTRUMENT_TYPE_BOND |
| 2 | INSTRUMENT_TYPE_SHARE |
| 3 | INSTRUMENT_TYPE_CURRENCY |
| 4 | INSTRUMENT_TYPE_ETF |
| 5 | INSTRUMENT_TYPE_FUTURES |
| 6 | INSTRUMENT_TYPE_SP |
| 7 | INSTRUMENT_TYPE_OPTION |
| 8 | INSTRUMENT_TYPE_CLEARING_CERTIFICATE |
| 9 | INSTRUMENT_TYPE_INDEX |
| 10 | INSTRUMENT_TYPE_COMMODITY |
Запуск программы осуществляется файлом main.py
Вариант запуска в CMD (необходимо перейти в директорию проекта):
.venv\Scripts\activate
main.pyПрограмма запустит консольный интерфейс с возможностью выбора действий. Для выбора действия необходимо перевести на него указатель с помощью клавиш "вверх" и "вниз", затем нажать пробел или enter. Будет выполнено действие, на которое ведет указатель.
Для запуска необходимо выбрать "запуск" (пока не активно);
Для запуска в тестовом режиме необходимо выбрать "запуск [песочница]";
Для выхода - "выход"";
Из-за ненадобности данный функционал будет удален в будущих версиях
Данный запуск удобен для быстрого запуска без лишних движений, например на сервере.
Для работы программы без консольного управления необходимо запустить файл auto_start.py.
Данный файл будет запускать бота по заданным конфигурациям.
Настраивать конфигурации необходимо вручную.
Путь файла конфигураций: <configs/start_app.ini>
Конфигурационный лист имеет следующий вид (пример заполнения):
[START_PARAMETERS]
[START_PARAMETERS]
client_type = sandbox
check_save = 0
once_test_sandbox = 1
[WORK]
working_status = 0
last_date = 2025-08-13
paused = 0
stop = 0[START_PARAMETERS] - блок параметров для запуска бота (МОЖНО МЕНЯТЬ).
- client_type - тип клиента, может быть стандартным и режим песочницы (standard / sandbox)
- check_save - условие проверки сохраненного статуса бота при запуске. Данные автоматически сохраняются для возможности продолжить работу с момента последнего завершения. (0 - False, 1 - True)
- once_test_sandbox - параметр, отвечающий за запуск в тестовом режиме с последующем удалением аккаунта песочницы.
Работает ТОЛЬКО В РЕЖИМЕ ПЕСОЧНИЦЫ.
1 - будет создан новый аккаунт-песочница, который будет удален по завершению работы программы.
0 - запуск в обычном режиме песочницы с подключением к последнему созданному аккаунта (пока недоступно)
[WORK] - блок параметров-статусов, использующиеся программой во время рвботы (НЕЛЬЗЯ ИЗМЕНЯТЬ).
- working_status - статус работы сервиса (1 - активе, 0 - выключен)
- last_date - последний зафиксированный программой день активного режима
- paused - статус "пауза сервиса" (1 - приостановлен, 0 - активен)
- stop - команда остановки сервиса (1 - активна команда остановки)
| параметр | возможные значения |
|---|---|
| client_type | standard, sandbox |
| check_save | 0, 1 |
| При запуске auto_start.py программа будет работать без вывода в консоль, все логи записываются в файл main_logs.log. |
Запуск программы в cmd:
cd путь\к\директории\trader_bot
.venv\Scripts\activate
start_app.pyВ unix-терминалах:
cd путь\к\директории\trader_bot
source .venv\bin\activate
python3 start_app.py