Skip to content

aiooq/Tinkoff-SQL-SDK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tinkoff-SQL-SDK

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, о которых подробно рассказыю в видео.

Краткая инструкция:

  1. Настройки и ключи необходимо установить в файле input.json запускаемого решения;

    Можно подключить телеграм бота, если указать ключ, при этом основной токен доступа может отсутствовать, бот телеграмм будет работать и наоборот;

  2. Запустить любое из трех решений, функционал у каждого решения одинаковый, так как одно ядро (sdk.sql);

    Запустить "!RUN.bat" для JS или Python, или скомпилированный файл "app.exe Go";

  3. Запустить INSTALL.bat от имени администратора, символические ссылки между программами и МТ5 будут созданы, если необходимы торговые графики и не только...;

    Чтобы Запустить MT5, его не нужно устанавливать, достаточно запустить "!RUN MetaTrader5 portable.bat" Чтобы запустить сбор данных в МТ5, нужно выбрать в разделе "Сервисы" -> Tinkoff -> TinkoffData, запустить (при запуске указать путь, символические ссылки должны быть предварительно сделаны через INSTALL)

  4. Если необходимо внести дополнения или улучшения, то нужно запустить SQLiteStudio и подключиться к БД Tinkoff.sqlite (она создается после первого запуска любого из решений);

    Весь основной алгоритм работы, а также все актуальные данные, расчеты и т.д. находятся внутри БД Tinkoff.sqlite; Так как используется режим журанала wal, то одновременно можно делать запись и изменения в БД, даже если какое-либо решение запущено и взаимодействует с БД.

  5. После запуска любого из решений, автоматически будут собраны необходимые данные, произведены расчеты и записаны результаты,
  6. Уведомления на телеграм будут поступать о событиях, которые выбраны в настройках по id события (по умолчанию в настройках указаны все доступные на текущий момент события).

About

Tinkoff Invest Robot Contest

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published