Skip to content

AndreVasilev/Kwatoko

Repository files navigation

kwatoko

Роботы для торговли на бирже прямо с iPhone

Мобильное приложение kwatoko позволяет запускать роботов с различными стратегиями для торговли на бирже через API Тинькофф Инвестиций

🏆 Победитель конкурса Tinkoff Invest Robot Contest в номинации:

  • Лучший торговый робот для мобильных устройств

Участник в номинациях:

  • Лучший интерфейс (визуализация) торговой стратегии

  • Самое оригинальное использование API Тинькофф Инвестиций

Основные возможности

Создание и конфигурация роботов

В приложении доступно создание до 10 роботов с указанием стратегии, инструмента и всех необходимых для торговли по выбранной стратегии параметров (описание стратегий и параметров)

Просмотр истории сделок

В разделе История отображаются сделки по каждому роботу, процент прибыли (убытка) на каждую сделку, а так же график сделок с линией тренда заработка данного робота

Управление счетами

Для авторизации необходимо использовать два токена (инструкция по генерации):

  • токен для биржи

  • токен для песочницы

Рекомендуется использовать Readonly token, если не предполагается торговля на реальной бирже

ЗДРАВО ОЦЕНИВАЙТЕ РИСКИ ПРИ ЗАПУСКЕ РОБОТА ДЛЯ ТОРГОВЛИ НА РЕАЛЬНОЙ БИРЖЕ

В разделе Профиль отображаются открытые счета, можно посмотреть баланс по всем валютам. Для счетов в песочнице доступно открытие, закрытие, пополнение баланса в любой валюте, возможность переименовать счет (только в приложении)

Из-за особенностей работы песочницы, пополнение доступно только в рублях. Чтобы пополнить баланс иностранной валюты, будет совершено пополнение в рублях на сумму приблизительно эквивалентную сумме валюты с последующей покупкой указанной валюты Если произойдет ошибка - попробуйте указать меньшую сумму Покупка иностранной валюты может происходить с задержкой. Если обновление баланса не произойдет моментально - попробуйте вернуться на экран позже и проверить баланс снова

Возможность пополнения баланса определяется режимом торгов биржи

Тестирование

На данный момент в приложении реализован алгоритм торговли по стакану. Исторические данные стаканов отсутствуют (или не были найдены автором), поэтому для тестирования предлагается сгенерировать свой набор данных в формате JSON.

Пример заполнения:

{
    "interval": 1.0,
    "data": [
        {
            "asks": [
                { "quantity": 44, "price": 100.31 },
                { "quantity": 40, "price": 101.24 },
                ...
            ],
            "bids": [
                { "quantity": 22, "price": 99.13 },
                { "quantity": 12, "price": 98.33 },
                ...
            ]
        },
        ...
    ]
}

interval: интервал получения роботом тестовых данных по стакану

data: массив стаканов

asks: массив заявок на продажу в стакане

bids: массив заявок на покупку в стакане

quantity: объём заявки (Int)

price: цена инструмента в заявке (Double)

Для запуска робота на тестовых данных необходимо

  1. Заполнить тестовый файл DemoData.json своим набором данных
  2. Добавить робота со стратегией "Демо: торговля по стакану"
  3. Запустить робота

Торговые стратегии

Торговля по стакану

Алгоритм основан на гипотезе: когда в стакане появляется заявка с аномально большим объёмом, есть вероятность, что произойдет отскок цены от данной заявки. Задача робота заключается в поиске таких заявок и заработке на таком отскоке

Подробное описание с примерами

Результаты

Робот был запущен для торговли 1 лотом акций TCSG 23 мая 2022

За одну сессию робот совершил 51 сделку и заработал 48 рублей, что составляет ~ 2.25% от стоимости лота на момент закрытия торговой сессии

Технические особенности

Заголовок x-app-name: AndreVasilev.Kwatoko

Используемые зависимости:

Все зависимости должны быть установлены перед сборкой проекта через Swift Package Manager

Реализация алгоритма

Исходный код реализации алгоритма находится в файле ContestStrategy.swift

Вспомогательные файлы в папке ContestStrategy

Совместимость

Платформа Минимальная версия
macOS 12.0 (Monterey)
iOS & iPadOS 15.4

Лицензия

Apache License 2.0