Tinkoff Invest Robot Contest
Более подробная информация в видео: https://disk.yandex.ru/d/nW3efxihRH4-4g
- Модульность и кроссплатформенность SDK (любая ОС, почти любой язык, главное наличие поддержки SQLite);
- Легкость подключения к любому языку программирования, который поддерживает http запросы, при этом не нужно переписывать всю программу;
- Когда данные в одном хорошо продуманном хранилище, это облегчает просмотр, обработку, изменение, тестирование, хранение и отправку;
- Автономность сбора данных, программа легко спарсит необходимые данные, требуемой (или всей) глубины;
- Сбор разработан наилучшим образом с минимальными издержками на кол-во запросов, а также учитывая приоритет инструментов и таймфреймов, приоритет можно настраивать;
- Собранные данные можно использовать внутри БД, для статистических расчетов, для индикаторов или экспертов, можно экспортировать в CSV и другие форматы файлов;
- Моделирование истории сделок база делает автоматически, созданы индикаторы и эксперты на основе алгоритма которых сформируются сделки, возможно добавление своих;
В качестве примера разработано несколько основных индикаторов (МА, Пересечение МА, индикатор события открытия минуты), эти индикаторы можно использовать или добавлять в БД свои алгоритмы; Разработаны эксперты работающие на основе индикаторов со своими произвольными параметрами, можно использовать, дополнять, добавлять свои, есть инструкции в формате видео, ссылка вверху.
- Возможность гибкого создания эксперта, привязать к любому событию индикатора, а также настроить торговлю например только long-close или только short-close, а можно все вместе...;
- Можно разрешить эксперту только давать сигналы, или торговать на демо или\и реале, можно полностью выключить алготорговлю одним действием, например в системе много ботов, они все встанут на паузу;
- Возможность получения уведомлений в телеграм о важных событиях (список можно настроить или расширить по необходимости);
- Торговые сигналы могут формировать как экспертом, так и в ручную через базу, а также можно из внешней системы взаимодействовать с БД и торговать;
- Все эксперты формируют историю и статистику своих сигналов и торговли в виде сделок и таблицы метрик;
- Возможность быстрой очистки БД, чтобы привести ее в исходное состояние в таблице m_input, есть параметр clear=0, установим в 1, БД очиститься, параметр сам вернется в 0;
- Сбор данных и торговля, учитывает лимиты и ограничения, запросов и торговли, все запросы выполняются мультипоточно (быстро) и ядро контролирует приоритеты запросов и их скорости;
- Легкость интеграции сервисов в ядро, без влияния на скорость работы (например интегрированный телеграм бот);
- Все данные в БД поддерживаются в актуальном состоянии, имеется возможность вкл\выкл сбора стакана или трейдов по необходимым инструментам;
- Легкость обновления ядра (2 варианта), необходимо заменить файл sdk.sql или прямым подключением к БД;
- Легкость обновления API, благодаря встроенному автоматическому разбору swagger документа, достаточно добавить документ в БД;
- Гибкое регулирование запросов, например при выключенном демо режиме, запросы связанные с демо режимом не будут работать и подобными фичами легко можно дополнять и расширять функционал;
- Таблицы проиндексирвоаны наилучшим образом, чтобы поддерживать максимальный отклик, но если и этого не достаточно, можно целиком или частично запустить БД в оперативной памяти;
- Мультиинструментальность, можно одновременно работать хоть на всех инструментах предоставляемых от Тинькофф API и свежие данные при этом будут поддерживаться в актуальном состоянии;
- Тесты проводились ~1000 инструментов, все было хорошо, запас возможностей для сбора данных большой, выше чем позволяет API, решается просто, ожиданием ))
- Торговля же активируется только после полного сбора данных (указанной глубины), каждый сам решает, но М1 ТФ у него глубина до ~2018 года;
- Одновременно торговля производится на всех счета, которые доступны для токена, нужно быть внимательным с правами токенов к счетам, считаю это большим плюсом+!
- В дальнейшем планирую добавить возможность указывать несколько токенов для разных счетов, разных людей, а БД при этом будет единая, чтобы историю не дублировать и экономить вычислительные ресурсы;
- Во время сбора текущих тиковых данных, рассчитывается текущая свеча М1, которая обновляется, подобным образом можно разработать расчет всех необходимых ТФ и дополнить ядро;
- Минимум зависимостей от сторонних библиотек, программ и сервисов, ядро в пределах одной БД, таким образом: ядро программы = БД = SDK;
- Мультипоточность обеспечивают сторонние языки программирования, при этом контроль за теми запросами, которые можно выполнять параллельно, а какие только последовательно решает БД.
- Удобное конфигурирование, через всего 1 файл, который можно перенести с ПК на ПК, а также настроить внешней программой, формат JSON;
- Ядро, при поступлении данных проверяет и контролирует цены, инструменты, дополняет типы, проверяет на корректность токены и параметры, сообщит об ошибке в телеграм, залогирует события БД и т.д...
- Есть ещё много возможностей и плюсов использования SQL-SDK, о которых подробно рассказыю в видео.
- Настройки и ключи необходимо установить в файле input.json запускаемого решения;
Можно подключить телеграм бота, если указать ключ, при этом основной токен доступа может отсутствовать, бот телеграмм будет работать и наоборот;
- Запустить любое из трех решений, функционал у каждого решения одинаковый, так как одно ядро (sdk.sql);
Запустить "!RUN.bat" для JS или Python, или скомпилированный файл "app.exe Go";
- Запустить INSTALL.bat от имени администратора, символические ссылки между программами и МТ5 будут созданы, если необходимы торговые графики и не только...;
Чтобы Запустить MT5, его не нужно устанавливать, достаточно запустить "!RUN MetaTrader5 portable.bat" Чтобы запустить сбор данных в МТ5, нужно выбрать в разделе "Сервисы" -> Tinkoff -> TinkoffData, запустить (при запуске указать путь, символические ссылки должны быть предварительно сделаны через INSTALL)
- Если необходимо внести дополнения или улучшения, то нужно запустить SQLiteStudio и подключиться к БД Tinkoff.sqlite (она создается после первого запуска любого из решений);
Весь основной алгоритм работы, а также все актуальные данные, расчеты и т.д. находятся внутри БД Tinkoff.sqlite; Так как используется режим журанала wal, то одновременно можно делать запись и изменения в БД, даже если какое-либо решение запущено и взаимодействует с БД.
- После запуска любого из решений, автоматически будут собраны необходимые данные, произведены расчеты и записаны результаты,
- Уведомления на телеграм будут поступать о событиях, которые выбраны в настройках по id события (по умолчанию в настройках указаны все доступные на текущий момент события).