Как стать автором
Обновить

Комментарии 19

… дабы не задеть чувства, к примеру, фанатов Excel …

— Не задели, да я и сам необидчивый, но:

… попробуйте поработать этими инструментами с данными размером с один миллион строк …

— Работаем на ежедневной основе. Без скриптов, Notepad++ и SQL запросов.

У меня вопрос: почему бы для таких простых задач не использовать уже давно вшитый в Excel инструмент Power Query (что есть, по сути, Power BI)?

На скриншоте ниже первый запрос из 346 тысяч строк формируется из датасета в 940 тысяч записей.

За 5 минут
Но для меня 5 минут — приемлемо.
Но для меня 5 минут — приемлемо.

Ну, и отвечая на ваши вопросы в начале статьи — да, любим работать с данными, но не страдаем от несовершенства инструментов, просто используем весь их функционал.

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

Я для себя определила, что Power Query очень хорош для стандартной предварительной чистки файлов и первоначальной подготовки. Если файл допустим только с одноуровневой шапкой отчета, то проще всего его загрузить сначала в Power Query. Но потом я все равно возвращаюсь в Питон. У меня хотябы сохранены присеты кода для нужных графиков и визуальных настроек. А если те же графики начинать лепить в экселе, то нужно кучу лишних телодвижений делать для настройки удобоваримого формата отображения. Не люблю я мышкой двигать ползунки в экселе и выбирать эти столбцы и строки для диаграм.

Здесь, для понимания, опишу значения в колонках

...

  • OI – открытый интерес

Open interest - это "сумма открытых позиций".

"Интересные выводы" легко продолжить пунктом 3: поскольку при покупке контрактов открытый интерес снижался - это, скорее всего, означает, что кто-то из игроков закрывал ранее открытую короткую позицию. Можно по аналогичной методике посмотреть в прошлом - когда открытый интерес при продаже вырос на такую же величину (и чем это закончилось 16 января).

По методике разделения сделок на крупные и мелкие. Совершая сделки на мосбирже легко получить ситуацию, когда, например, при покупке 400 лотов одной заявкой в сделках будет две по 100 и еще куча мелочи. Так что логично рассмотреть вопрос суммирования однонаправленных сделок проходящих близко по времени для определения реального размера совершенной операции (тут прикопана огромная куча тонкостей и бесконечное количество мнений о том, как это правильно делать).

Вообще, мосбиржа в этом году запустила ALGOPACK (https://www.moex.com/ru/algopack), который значительно упрощает получение информации и анализ совершенных сделок.

Спасибо большое за интересный комментарий, пометил себе Ваши идеи. Что касается ALGOPACK - не знаю как у Вас, но я зарегистрировался в начале января - а доступа так и нет. Хотя именно мосбиржа как первоисточник данных должна диктовать моду. Но что-то у них пока не очень получается.

ух... ваш способ добывания тиков из Quik напомнил мне вот эту картинку:

Вы копируете таблицу сделок, затем через текстовый файл делаете кучу автозамен, чтобы потом итоговый файл закинуть в базу данных через скрипт на Пайтоне...

Но ведь Quik может сразу пихать данные в базу данных по ODBC!
И также, если нужно, в Excel по DDE.

Он это может делать и в реалтайме и разом за весь день (начиная со вчерашней "вечерки"). И все пропущенные данные пихает (начиная со вчерашней вечерки) в течение нескольких минут. Например просто иногда включаю Квик вечером ближе к концу вечерки, дожидаюсь когда загрузятся все графики и все тики. В этот момент Квик сам всё загружаемое параллельно пихает в локально работающую базу данных. Передача всех данных скопом за день в базу занимает чуть больше времени, чем отображение на графиках, поэтому иногда нужно подождать минут 5. Затем на всякий случай убеждаюсь, что загрузилось уже всё (простой выборкой последних значений из базы), прежде чем выключить Квик. То есть загрузка тиковых данных или таблицы всех сделок в Квике - не значит, что он успел всё это в базу передать, нужно убедиться, прежде чем Квик выключать.

Вот же даже на скриншоте у вас где вы копируете данные есть варианты прямого вывода в эксель или в базу данных:

Я предпочитаю сразу пихать в локальную базу данных.

Настраиваю так:

Когда-то на каком-то сайте утянул, уже не помню откуда, остались старые картинки, буду на их примерах, в новых интерфейсах может быть немного по другому, но суть та же.

Может стоило бы этот комментарий сделать отдельной статьёй, но не думаю, что это формат Хабра, да, я тот самый комментатор без статей, который считает, что облекать его простенькие знания в статьи на Хабре - это стыдоба, так как знания простенькие :)

1) С сайта MySQL.COM скачивается MySQL Community Server
Я ставил старенький, что-то типа mySQL server 5.7.23
При этом рекомендуется выбрать ручной способ настройки при установке. В настройках на нужных вкладках не надо создавать никаких паролей, укажите путь, где будет лежать база, и установите кодировку символов UTF8, например (или CP1251).

2) Также ставлю connector ODBC (https://dev.mysql.com/downloads/connector/odbc/) опять же можно что-то старенькое, типа 5.3.14

Устанавливаем ODBC connector по умолчанию. Эта программа нужна, что бы организовать связь между QUIK и MySQL.

3) Запускаем консоль MySQL, если при установке не прописывали пароль, то жмём клавишу Enter.

Создаём базу данных: create database lesson;
естественно название базы тут "обучательное", выбирайте своё.

переключаемся на нашу базу: use lesson;

Создаём в базе таблицу: create table all_trades(time time,price float,volume int,dir varchar(7));
Данная таблица будет содержать следующие столбцы: ВРЕМЯ, ЦЕНА, КОЛИЧЕСТВО, ОПЕРАЦИЯ,
если нужны другие столбцы (открытый интерес, ID сделок и прочее) - вводите свои, тут лишь пример!

4) Настраиваем MySQL как источник данных ODBC.
Переходим в ПАНЕЛЬ УПРАВЛЕНИЯ-АДМИНИСТРИРОВАНИЕ-ИСТОЧНИКИ ДАННЫХ ODBC . В появившемся окошке кликните клавишу ДОБАВИТЬ.
Повторю, что это старые не мои картинки, но суть должна быть понятна:

Из списка выбираем MySQL ODBC 3.51 DRIVER. При этом появится окошко настроек драйвера для MYSQL. Настройки должны быть такие же как на картинках:

После этого, если при нажатии клавиши TEST появилось сообщение SUCCESS! CONNECTION MADE-значит все сделано правильно. Закрываем окошки, нажав клавиши OK

5) Выводим данные из QUIK по ODBC.

Создаем ТАБЛИЦУ ВСЕХ СДЕЛОК в QUIK для любого нужного Вам инструмента со столбцами: ВРЕМЯ, ЦЕНА, КОЛИЧЕСТВО, ОПЕРАЦИЯ.
Иногда нужно обратиться к своему брокеру, чтобы они в своих настройках включили вам таблицу всех сделок. У многих брокеров по умолчанию она отключена, так как нагружает сервер, а не всем нужна.

После щелкаем правой клавишей по таблице и выбираем ВЫВОД ПО ODBC. Кликаем на тип базы данных MYSQL, вбиваем в поле имя root и жмем клавишу ПРИСОЕДИНИТЬСЯ, как показано на картинке:

Осталось только кликнуть на таблицу lesson.all_trades, в которую собираемся выводить данные и настроить соответствие столбцов таблицы базы данных MYSQL и ТАБЛИЦЫ ВСЕХ СДЕЛОК QUIK. Так же выбираем чекбоксы: ЧИСТИТЬ ТАБЛИЦЫ ПЕРЕД ВЫВОДОМ (что бы данные не копились. Старые будут удаляться) и ФОРМАЛЬНЫЕ ИМЕНА(вместе КУПЛЯ ПРОДАЖА будет выводиться B и S)

Внимание! При чекбоксе "Чистить таблицу перед выводом" Квик каждый день в таблице убивает предыдущие данные, поэтому я после того, как в базу загрузились все тики, копирую таблицу, чтобы данные сохранились.
Предпочитаю так, чтобы я точно знал, что в таблице сейчас данные только начиная со вчерашней вечерки.
Естественно у меня там другие столбцы-поля, есть и id ордеров, таблица имеет индексирование. Ну тут у кого какие SQL знания что позволяют.

Остается только кликнуть на НАЧАТЬ ВЫВОД ДАННЫХ, и экспорт начнется.
И будет делаться автоматом при запуске Квика.

Ещё раз напомню, что по этой настройке SQL сервер работает постоянно (это не нагружает комп и никак не сказывается на работе).

Как Квик передаёт пропущенные данные в базу данных?
Например запускаем Квик в 21:30 вечера, Квик подгрузит данные с сервера и параллельно начнет их же пихать в базу данных. В итоге данные загрузятся такие:
- вся вчерашняя вечерка
- вся сегодняшняя дневная сессия
- сегодняшняя вечерка до текущего момента времени, то есть до 21:30 и продолжит загружаться по мере прихода очередных тиков.

Если запустить Квик после окончания вечерней торговой сессии, то загрузится всё тоже самое с полной оконченной вечеркой. Обнуление дня у разных брокеров происходит по разному, но если включить Квик утром, например в 7 утра, то загрузится уже только последняя вечерка. Где проходит эта граница по времени "переключения" - не знаю.

Если что, я в SQL не силён, системно не изучал, освоил только то, что мне нужно для моего увлечения торгами, написанием робота. Впрочем также изучал программирование на Python и нейросети ;)

Спасибо большое за Ваш развернутый ответ, сохранил себе. я, в свою очередь, тоже начал с ODBC для выгрузки в Clickhouse. Нашел и установил драйвера. Но в моем случае все осложнилось тем, что у меня кликхаус крутится отдельно на старом компьютере, а Quik - на ноутбуке. В итоге, да грешен, не добил до конца и бросил это мероприятие :) Но в целом - данному этапу "Варианты получения данных из Quik" - можно смело посвятить одну статью точно и то она будет весьма объемной.

тем не менее все участники рынка по итогам дня выкупили около 7500 лотов. Интересно, почему так случилось, правда?

Т.е. когда рынок покупает, открытый интерес падает ну и наоборот.

Если один купил, то другой ему продал. Так что нельзя говорить, что выкупили столько-то, ведь это же значит, что столько же кем-то продано! Либо умный покупает, а глупый продаёт, либо наоборот, глупый покупал, а умный ему продал.

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

Вы никак не узнаете кто входил или кто выходил из сделки. Один выставил лимитку на покупку, другой в неё продал. Оба вошли в сделку. ОИ увеличился. Что это значит? - Ничего! Кто-то из них будет не прав :)

А когда у кого-то есть уже позиции и он выходит? Он выходит с прибылью или из-за того, что терпит убыток? Тот кто входит об его выходящие лоты (ОИ не изменится при этом), тот умнее или нет? В общем это ничего не значит, когда торгуют одновременно тысячи участников.

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

Давайте возьмем сделки размером более 100 лотов и посчитаем по ним дельту отдельно. Является ли данный признак подходящим для определения крупной сделки? Думаю, что да.

Нет. Если вы не собирали всю картину как сводились встречные сделки. Представьте, что в стакане стоит много заявок на покупку по 1-2 лотику, и там же стоит заявка на 100 лотов (по вашему крупная).
Пришёл реально "крупняк", кинул по рынку на продажу 1000 лотов, и выгреб ВСЕ заявки, и мелкие по 1-2 и вашу, якобы крупную, на 100.
Вы проанализировали лишь ту, которая была на 100 на покупку. А на самом то деле по рынку кинули в продажу 1000 лотов! Поэтому если хотите анализировать крупные заявки, их нужно как-то объединять, например по ID и/или по микросекундам (не точный, но очень близкий вариант).
И в любом случае это всё бессмысленно тоже, так как крупняк не дурак и большие заявки когда надо бросается в открытую, чтобы явно показать, а когда надо, будет долго притворяться мелким кидая роботами по 1-2 лотика. А ещё при этом может работать лимитками, а не по рынку. И опять же, может подставлять маленькие лимитки, а может публично большую заявку показать, которую испугаются. Или айсберг выставить.
И айсберг там будет на 10000 лотов, а грызть его будут мелкими заявками, и вы своим методом будете анализировать НЕ вот эти 10000 лотов, а какие-то другие по 1-2 и 100, которыми кто-то по вашему "крупный на 100", лупил в нереально огромного (который на 10000).
В общем, там всё очень не просто... К сожалению, или к счастью ;)

Согласен лишь с тем, что все не просто :) Уверен, что к счастью, т.к. лично мне интересны такие сложные задачи. Что касается Вашего мнения - мне нужно некоторое время для размышления, чтобы конструктивно Вам возразить.

Если вы не собирали всю картину

Недавно у меня были диалоги по похожим основаниям. Сделки SiH4 от позавчерашнего вечера. А сейчас мы их "штурмуем".

В чём засада?! Вы совершенно правы, но правы в формальной логике. Т.е. в совершенно академическом её виде. Но это "формальная" логика, она о форме без содержания. Понимаете, это логика не касается качества.

Это трабл, который тянется в гуманитарных науках со времён эргодической теории. Законы неживой природы спроецировали на биологические системы. А они частенько неэргодичны.

"Без ретеста этой группы вниз идти нельзя", - написал вчера я. Крупные сделки можно использовать, например, как разворотные точки. Как точки для входа после коррекции. Естественно, со стопами. Или как цели, или для частичного закрытия позиции.

А сейчас мы мучительно штурмуем этот уровень. Это тоже ничего не доказывает, просто совпадение. Но при более длительном погружении, возможно, проявляется некая морфология.

Это как ИИ не видит, фрагменты дорожных знаков или слова нестандартным шрифтом, когда всплывает меню "Я не робот". А люди видят, люди умеют "дорисовывать" в воображении сообразно усвоенной ими с детства морфологии. Мы способны отрываться от предложенной нам формы и погружаться в содержание.

Эвристики тоже работают, как и формальная логика. Если это кусок скалы, то логика и только. А если цена и деньги, то обязательно с эвристикой. Потому, что цена и деньги живут, исключительно, в нашей башке.

Интересная лекция в ютубе по эвристикам, там влияющие факторы располагаются по весам квантованием. Не знаю проходят ли тут ссылки. "Ю.И. Журавлев. Математические методы прогнозирования".

Он говорит, что Чубайс эти методы использовал применительно к РАО ЕЭС

Интересная лекция в ютубе по эвристикам, там влияющие факторы располагаются по весам квантованием. Не знаю проходят ли тут ссылки. "Ю.И. Журавлев. Математические методы прогнозирования".

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

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

Добрый день. Спасибо, очень поучительно.

Я не программирую, к тому же пенс. Но похоже, что элементарные навыки нужно приобретать. Аналитику с крупными сделками делал графически, глазками и ручками на графике X-tick MT5.

Там же отмечал:

— High, Low прошлого дня.

— Первый час (IB)

— VAH, POC, VAL из Market Profile

— и Фибоначи от первого часа.

Так себе занятие.

Качаю реестры сделок Мосбиржи. Раньше бесплатно с 2008 по 2016 ежедневно с FTP-сервера ММВБ или других источников (S#.Data (Hydra), конвертером QScalp) или обезличенные с КВИКа и добросовестно с 10:00 до 23:50 наносил на график. А с 2016 я архив сделок покупаю у биржи за 45 тыр. рябчиков в год.

Excel давно не переваривает количество строк. Access перестал раскрывать эти файлы недавно. Архив сделок за месяц в формате CSV = 2,5 Гб. И будет расти.

Хочу найти коннектор к Мосбирже и грузить данные в онлайн базу какую-нибудь. Тем более, что плата за архивы сравнялась с подключением. И что бы в реальном времени можно было сделки извлекать с различными сортировками. А может даже и на график выносить.

Подскажите вариант(ы).

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

SQL Server и Studio установил, но не осваивал. В целом, обучаем до начального уровня.

Да, есть сервис московской биржи, который очень скупо делится данными.

На моексе PLAZA/FAST/FIX протоколы выдаются любому желающему частному инвестору, за деньги. Разница в том, что у вас Aggregated Tick, а в «прямом» TickByTick. Это разные данные и соответсвенно разная аналитика.

И с этого момента (с Aggregated Tick) ваша аналитика и рассуждения превращаются простите в бред. Более того, отсутствие знаний у вас в вопросе работы биржи превратили этот бред в откровенную чушь.

Во-первых в нормальной ленте TickByTick есть байтовое представление что это за сделка. В минимальном представлении можно взять определить мейкера или тейкера, в максимальном полные 4 байта с кодом сделки (оно называется condition). Т.е при наличии смекалки можно определять даже маркетмейкеров на входе и айсберги. Без этих минимальных вещей любые рассуждение ой там 1000 кинули - крупняк, а там 2 мелкая рыбеха - самообман и чушь

Во-вторых,

Но лично мне хотелось бы получить четкий признак локальных экстремумов. Если говорить упрощенно, я хотел бы в ситуации, когда цена упала – понимать, что «это дно и дальше будем расти», или в ситуации, когда цена растет – понимать, «это вершина, скоро начнем падать». И, буду честен, мне пока не удалось этого достичь. 

вы этого не сможете достигнуть пока ваше мышление линейно. Слишком много параметров и переменных вы не учитываете, которые ваши точки похоронят в один момент и если вы на них опирались при торговле еще и разденут до нитки

Сожалею, что мой текст вызвал у вас такую реакцию. Отвечу последовательно: 1) По поводу использования протоколов на моексе- ключевое слово "за деньги". Мне известны тарифы, полагаю они не доступны большинству пользователей физиков. 2) Цель статьи - описание инструментов и подходов к анализу больших данных на примере расчетного фьючерса на нефть. Точка. Мне не интересны спекуляции, распознавание работы маркетмейкеров, айсберги и т.п.; 3) Считаю использование агрегированной информации вполне приемлемым для своих целей. Исхожу из простой мысли - в конкретный момент времени куплен/продан существенный объем. Определение же участников сделок, их количества и прочих деталей в рамках этого объема в этот момент времени - зависит от целей Вашей работы.

2) Вы определитесь, тут вы описываете инструменты или представляете вниманию вашу аналитику. Если инструменты, тогда называйте статью верно и не пытайтесь анализировать, это получилось мягко говоря не очень. Как минимум потому что не то что в статье, так еще и в комментариях вы не можете уловить главную мысль которую вам озвучили еще до меня: если кто-то купил, значит кто-то продал

3) Ради бога считайте как вам удобно. С учетом агрегирования которое идет по времени, забираются тики за 0.25 секунды. И на этом моменте в целом ваша простая мысль встречается с неразрешимой проблемой, т.к в одном тике крупном может быть как одна сделка купли-продажи, так и 1000 мелких. Что вы анализируете тогда по итогу? Или вы показываете еще один метод отображения объемов не столбиками, а как-то по иному?)

3) Вот. Посредством конструктивной дискуссии мы с Вами приближаемся к какому-то консенсусу, который в моем представлении звучит так: пусть за 0.25 секунды произошла продажа 1000 лотов. Да, не видя структуры этой продажи - считаю наивным делать предположения о причинах этой продажи в столь краткий промежуток времени (поэтому этот момент в статье отражен в шутливой форме). Однако - считаю, что это признак локального всплеска активности участников рынка. А вот как интерпретировать этот признак и интерпретировать ли - этот вопрос я оставляю на усмотрение исследователя/читателя.

Пс: мне надо видимо еще дописать что Side сделки Покупка/Продажа обозначает Тейкер/Мейкер. И тут кстати еще одна стенка будет.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий