понедельник, 13 февраля 2023 г.

Детектор аномальных объёмов — анализируем спрос и предложение с помощью платформы TKSBrokerAPI

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

В частности, трейдерам бывает интересно автоматически анализировать биржевой стакан текущих цен. Им нужно получать оперативные оповещения о появлении в нём аномальных (относительно других значений) объёмов предложений продавцов или покупателей. Существует гипотеза о том, что если на рынке в текущий момент времени преобладают объёмы покупателей, а также появились большие или сверхбольшие предложения на покупку, то цена инструмента будет расти в краткосрочной перспективе, или, как минимум, не будет падать ниже этих предложений. И, тоже самое, но наоборот: если преобладают объёмы продавцов и в них присутствуют аномальные значения, то цена будет снижаться или не будет расти.

Следующий скриншот иллюстрирует стакан цен с объёмами предложений продавцов и покупателей, которые трейдер визуально может принять за аномалии:

Но как же их определять автоматически?

суббота, 11 февраля 2023 г.

Как сделать +16% на бирже за 2 часа? Помогут роботы!

Всем привет! Недавно я упоминал про REST API от Тинькофф Инвестиции и про платформу ⚙️TKSBrokerAPI на Python, для упрощения автоматизации работы с биржей через брокера Тинькофф. Сам я тоже использую эту платформу: для получения кастомных отчётов и автоматизации трейд-роботов и различных ботов-оповещалок.

На этой неделе очень порадовал $KROT, который последние дни невероятно волатилен (в том числе из-за новостей об ограничениях биржи на бумаги третьего эшелона), но зато хорошо подходит для тестов, спасибо ему за это! А также порадовал алгоритм моего нового торгового робота в основе которого используется ⚙️TKSBrokerAPI: впервые удалось протестировать его на сильных движениях и заметить в телеметрии, что он достаточно неплохо поймал второй откат на пятиминутках, самостоятельно вошёл в позицию, дождался хорошей возможности и вышел в плюс (изобразил это на графике ниже).

На одном лоте получилось более +16% прибыли, 280 рублей разницы в цене и 2800 руб. профита 🙂 Неплохой результат, так как до этого рынок был, в основном, спокойный и удавалось поймать роботом не более +0.5-1.5% за сделку. Поэтому я долгое время не знал, как он себя поведёт при сильных движениях, сможет ли дождаться большей прибыли и устоит ли на волатильном рынке. Сейчас убедился на тестовом счёте, что сможет 😊

Про трейд-робота, алгоритмы и торговые сценарии расскажу чуть позже, а пока сохраню себе на память записи телеметрии:

  • 10:25 UTC "message": "BUY-стоп выставлен по цене первого покупателя: [1695 rub], лотов: [1]"
  • 12:04 UTC "message": "SELL-маркет исполнен по [1975 rub], ср. [1695 rub], лотов [1], профит 16.52%"
Конечно же, любому роботу нужна (авто-)оптимизация, потому что далее через пару часов, если посмотреть график $KROT за 9.02.2023, можно было выйти ещё рублей на 200 выше, но робот этого уже не дождался.

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

Если вы хотите упростить свои рутинные операции на бирже — закажите автоматизацию у меня, пишите, обсудим вашу задачу и чем я могу помочь. Контакт в Телеграм: @tgilmullin.

суббота, 7 января 2023 г.

How to quickly find anomalies in number series using the Hampel method

Translated from Russian. The original article is here:

In practice, there are issues for the solution of which it is required to find anomalies in the numerical series. For ease of understanding, we can assume that these are values that differ from most numbers in the series in some way (outlier, non-standard value, deviation from the norm). Such tasks are found in various areas:

  • cleaning of noisy data in Data Science;
  • outlier filtering in the training sample for neural networks in Machine Learning;
  • search for abnormal network hacker activity, while monitoring traffic and events in Cybersecurity;
  • detection of outliers or tails in the stock data stream in Algorithmic Trading;
  • as well as in any anomaly search tasks, where data can be presented as a numerical series.

The concepts of a number series in mathematical analysis and in statistics are different. We accept a numerical series as its statistical understanding, that is, a finite sequence of numbers (analogous to a sample). There are various interpretations of the anomaly in the numerical series. We will consider them further.

The article also shows examples of how to find anomalies quickly and efficiently in numerical series using the modified Hampel method (Hampel F.R.).

пятница, 6 января 2023 г.

Jupyter Notebook: теория и практика фильтрации данных методом Хампеля

Всем привет! Я сделал примеры с фильтрацией данных методом Хампеля в Jupyter Notebook, где можно поэкспериментировать с различными параметрами функции HampelFilter(). Показано применение этого фильтра для поиска аномальных выбросов в числовых рядах, полученных из биржевых цен. А также написал простой скрипт на Python, который можно запустить, и посмотреть, о чём идёт речь.

Эти примеры написаны для недавно опубликованной статьи: «Как быстро найти аномалии в числовых рядах с помощью метода Хампеля».

Поддержать проект: https://yoomoney.ru/to/410015019068268

PriceGenerator: release-1.3.81

Опубликован очередной релиз платформы PriceGenerator: v1.3.81. Рассмотрим основные изменения.

Дайджест

Внимание! Поддерживаемая версия Python не ниже 3.9.

Теперь можно добавлять кастомные линии (например, линии собственных индикаторов, рассчитанных заранее) и маркеры на основной график вместе с ценовыми свечами. Для этого используется метод RenderBokeh().

Появилась возможность задавать направления генерируемых трендов простыми словами: updownno или буквами: udn совместно с ключом --split-trend (в дополнение к уже существующей возможности указывать тренды символами /\-), например, --split-trend=up-down-no-up--split-trend=u-d-n-u.

Также можно выбирать тёмную или светлую темы для графиков, построенный через метод RenderBokeh(), при помощи нового параметра darkTheme (если True, то используется тёмная тема, иначе — светлая тема).

Пример графика со светлой темой и с дополнительными кастомными маркерами и новой линией:


Поддержать проект: https://yoomoney.ru/to/410015019068268