Tорговые роботы. Full Orders Log.
Atom
13.03.2012
StockSharp


Здравствуйте. В этой статье мы расскажем Вам, что такое Full orders log, как он выглядит, для чего используется, и какую интересную информацию можно в нем увидеть. Начнем с определения и общих понятий и свойств. После этого поговорим о том, как можно использовать ордер лог для создания торговых роботов.
Full orders log (в статье будем использовать сокращение FOL) — это список всех заявок с полной информацией по каждой заявке. Еще его называют анонимным ордер логом (анонимная рыночная информация), т.к. из всей информации о заявке в нем не доступен только номер счета клиента, пославшую эту заявку. Как вы понимаете, эта информация конфиденциальна. Ордер лог, это самый глубокий и детальный уровень информации, который доступен трейдеру.

Полный список полей таблицы orders_log


Поле Тип Описание

replID i8 Служебное поле подсистемы репликации

replRev i8 Служебное поле подсистемы репликации

replAct i8 Служебное поле подсистемы репликации

id_ord i8 Номер заявки

sess_id i4 Идентификатор торговой сессии

client_code c7 Код клиента

moment t Время изменения состояния заявки

status i4 Статус заявки

action i1 Действие с заявкой

isin_id i4 Уникальный числовой идентификатор инструмента

dir i1 Направление

price d16.5 Цена

amount i4 Количество в операции

amount_rest i4 Оставшееся количество в заявке

comment c20 Комментарий трейдера

hedge i1 Признак хеджевой заявки

trust i1 Признак заявки доверительного управления

ext_id i4 Внешний номер

login_from c20 Логин пользователя, поставившего заявку

broker_to c7 Код FORTS фирмы-адресата внесистемной заявки

broker_to_rts c7 Код RTS фирмы-адресата внесистемной заявки

date_exp t Дата истечения заявки

id_ord1 i8 Номер первой заявки

broker_from_rts c7 Код РТС клиента — владельца заявки

id_deal i8 Идентификатор сделки по данной записи журнала заявок

deal_price d16.5 Цена заключенной сделки

local_stamp t Локальное время пользователя


Онлайн данные по full_orders_log можно получать через шлюз Plaza2. До 17 февраля 2012 года по Plaza2 была доступна информация только по рынку ФОРТС, с 17 февраля Биржа ММВБ – РТС начала трансляцию анонимной рыночной информации по Валютному рынку и Фондовому рынку в секторе Основной рынок.
Таким образом, через шлюз Plaza II будет доступна информация по следующим рынкам:

  • Cрочный рынок FORTS

  • Фондовый рынок в Секторе рынка Standard

  • Валютный рынок в режиме РТС Money

  • Фондовый рынок в Секторе Основной рынок


Сохранять ордер лог, обрабатывать и создавать торговых роботов на его основе, вы можете с помощью библиотеки StockSharp. 11 марта StockSharp был сертифицирован биржей РТС для работы с Plaza II.

Файл с сохраненными данными FOL выглядит примерно следующим образом. Вид из FAR'a.
Tорговые роботы. Full Orders Log Рис.1
роботы

Формат данных может немного различаться, зависит от настроек программы, через которую вы его получаете, которая может трансформировать данные, для приведения их к более удобному виду. Например, в изначальном варианте инструменты обозначаются с помощью isin_id i4 Уникальный числовой идентификатор инструмента (8й столбец на картинке) Помимо ордер лога, по шлюзу Plaza2 передается и другая информация, среди которой fut_sess_contents, где мы можем посмотреть соответствие числовых идентификаторов названию контактов. Например, isin_id = 242176 будет соответствовать контракту RIH2. Таким образом, мы можем преобразовывать вид данных. В этой статье Вы столкнетесь с картинками, где они будут немного различаться.

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

Symbol – название инструмента = isin_id

Type – покупка/продажа = dir

ID - уникальный номер заявки = id_ord

Moment - время изменения состояния заявки = moment

Volume – количество лотов = amount

Price – цены по которой выставляли заявку = price

Action Действие с заявкой - выставление 1/удаление 0 /сделка 2 = action

ID_Deal - уникальный номер сделки = id_deal

Price_Deal – цена по которой прошла сделка = deal_price

В отформатированном виде ордер лог будет выглядеть примерно так.
Tорговые роботы. Full Orders Log Рис.2
роботы2

Как хранить и обрабатывать FOL

На данный момент (2012 год), файл с ордер логом с данными по всем инструментам срочного рынка весит порядка 4-5 гигабайт за один торговый день. По инструменту RTSi, порядка 1 гигабайта за один день. В одном дне RTSi содержится порядка 8-10 млн строк, из них сделок 600-800 тысяч строк.
1 гигабайт или 9млн строк за день, довольно внушительный объем данных. Поэтому появляется вопрос, как лучше работать с таким объемом данных? По сути, оредр лог представляет собой базу данных, поэтому для его обработки и хранения можно использовать программы для создания и хранения БД. С помощью языка SQL мы можем обрабатывать данные, выводить нужные нам информация и производить расчеты. SQL проще чем C#, т.к. имеет узкую специализацию, поэтому его легче освоить, но использовать его для других целей проблематично. Писать робота нужно на C#, для вспомогательных целей при работе с ордер логом использовать SQL.

Торговые роботы на основе ордер лога.

Как уже было сказано, создавать торговых роботов на основе ордер лог можно с помощью stocksharp.
Plaza2 + FOL дают высокую скорость и все необходимые данные для создания и работы высокочастотных роботов. Тут и добавить больше нечего, бери да делай. Если же говорить о тестировании высокочастотных роботов на истории, то нам необходимы стаканы и все сделки. И стаканы и сделки можно сохранять отдельно от FOL через другие каналы. Но, стаканы и сделки не синхронизированы, т.е. мы можем получить такую ситуацию, когда те или другие данные пришли с запаздыванием, в итоге сделка будет относиться к стакану, который был несколькими секундами ранее или позднее. Например, при стакане с офером на 160 600 проходит сделка на покупку 160 700. Ордер лог может избавить нас от такой проблемы, с его помощью можно получить синхронизированный со сделками стакан.
Еще такой момент по тестированию. Если вы захотите ознакомиться с FOL, вы можете скачать месяц бесплатной истории на сайте РТС. На Рис.2 как раз пример исторических данных с сайта РТС. Там вы можете увидеть момент времени, когда заявка пришла в систему, но! Когда заявка пришла к вам на компьютер, там не показано. Нам же, для формирования стаканов, нужно знать какими пачками и в какое время мы получали данные. Поэтому, когда мы сохраняем информацию на домашних компьютерах, дополнительно появляется метка времени, когда заявки дошли до нас.

Tорговые роботы. Full Orders Log Рис. 3
Добавлена метка с временем получения данных на компьютер
роботы3

На сайте РТС, история ордер лога за один год по всем инструментам стоит 5000$. Если вам интересно это направление, стоит задуматься о сохранении истории уже с сегодняшнего дня, чтобы потом не тратить деньги на покупку.

Манипулирование биржевым стаканом: Торговые роботы или …?

Понимание рыночного механизма потока заявок может дать нам ответ на многие вопросы, правда после которых, может появиться еще больше количество вопросов. В сети лежит ролик “Манипулирование ценой в биржевом стакане”. В ролике показано, как трейдер выставляет заявку на покупку по цене лучшего офера в стакане. Как только он нажимает на ОК, оффер исчезает из стакана. Инсайдер (трейдер-блогер) объясняет такое поведение действиями торговых роботов.
Цитата: “Вы же наверняка часто видели, как кидая заявку на продажу по рынку, цена уходит назад и Ваша заявка удовлетворяется по цене ниже пунктов на 50, чем та цена, которую Вы видели секунду назад и цена сразу же возвращается назад на 50 пунктов вверх.

Они видят благодаря РТС все Ваши манипуляции с заявкой и используют свои быстрые каналы связи с серверами биржи, чтобы откусить чуток от Вашего ордера.”
С точки зрения ордер лога, такого быть не может и торговые роботы не могут реагировать на такую заявку. Среагировать на поступившую заявку, мы можем после того, как к нам пришли данные из плазы. Это самый быстрый, легально возможный способ. Данные, пришедшие из плазы, это уже история, свершившееся событие. Значит, если мы кинули заявку по цене офера, то она обязана исполниться. Или, этот офер должен быть снят до того момента, когда наша заявка на покупку пришла в систему. Единственное объяснение, которое приходит мне в голову такое: брокер делает искусственную задержку и передает информацию о том, что идет заявка. После этого робот брокера отзывает свою заявку или делает другие нужные действия, после чего заявку клиента посылают на рынок. Достаточно задержать заявку на полсекунды, чтобы проводить такие махинации, что естественно незаконно. В законе о проф. участниках указанно, что в случае конфликта интересов брокера и клиента, брокер обязан отдавать приоритет клиенту. Так это происходит в действительности или нет, мы не знаем.



Ордер лог представляется интересным инструментом для анализа рыночной ситуации. Огромное количество интересных возможностей, о которых мы не сказали или даже не знаем. Если у вас есть вопросы, или нужна помощь по ордер логу, можете написать на почту info@stocksharp.com.

StockSharp Торговые роботы


< 1 2 3  >
Mikhail

Фотография
Дата: 18.04.2012
Ответить


Mikhail

Например там не указывается, что по такой заявке выполняется максимум 1 сделка.


После ответа техподдержки РТС стало ясно, что на самом деле нет ограничения на одну сделку. Описанный случай может происходить, если обе заявки (...5771 и ...5814) от одного лица. Это тоже нельзя увидеть по файлу с ФТП. Нужен живой лог.
Спасибо:

StockSharp

Фотография
Дата: 18.04.2012
Ответить


Mikhail
Mikhail

Например там не указывается, что по такой заявке выполняется максимум 1 сделка.


После ответа техподдержки РТС стало ясно, что на самом деле нет ограничения на одну сделку. Описанный случай может происходить, если обе заявки (...5771 и ...5814) от одного лица. Это тоже нельзя увидеть по файлу с ФТП. Нужен живой лог.


Михаил, здравствуйте. Помню, что обещал у себя посмотреть. Не успеваю никак. Даже неудобно, что сказал и не сделал. Обещаю исправиться =)
Спасибо:

Mikhail

Фотография
Дата: 19.04.2012
Ответить


Alexey Gorbunov

Михаил, здравствуйте. Помню, что обещал у себя посмотреть. Не успеваю никак. Даже неудобно, что сказал и не сделал. Обещаю исправиться =)


Ничего страшного, Алексей! Мне пока не срочно.
Спасибо:

VoDA

Фотография
Дата: 11.05.2012
Ответить


Alexey Gorbunov
На сайте РТС, история ордер лога за один год по всем инструментам стоит 5000$. Если вам интересно это направление, стоит задуматься о сохранении истории уже с сегодняшнего дня, чтобы потом не тратить деньги на покупку.

Горбунов Алексей
StockSharp Торговые роботы

А где можно скачать эту историю?

По ссылке от
Alexander Mukhanchikov
лежат только старые данные от 2011 года.

Или я чего-то не понимаю?
Спасибо:

Alexander

Фотография
Дата: 11.05.2012
Ответить


Да, доступно лишь пару дней.
Остальное - либо покупать, либо сохранять и копить историю самому
Спасибо:

VoDA

Фотография
Дата: 11.05.2012
Ответить


Alexander Mukhanchikov
Да, доступно лишь пару дней.
Остальное - либо покупать, либо сохранять и копить историю самому

так я готов копить, но плиз ткни пальцем ГДЕ эти несколько дней лежат? Желательно актуальных ;)))
Спасибо:

Alexander

Фотография
Дата: 11.05.2012
Ответить


Выше тыкал, там 2011 год
Спасибо:

VoDA

Фотография
Дата: 11.05.2012
Ответить


Alexander Mukhanchikov
Выше тыкал, там 2011 год

м... я думал, что там есть хоть несколько дней актуальных данных...

а как еще можно получить или накопить актуальные данные?
Спасибо:

Alexander

Фотография
Дата: 11.05.2012
Ответить


VoDA
Alexander Mukhanchikov
Выше тыкал, там 2011 год

м... я думал, что там есть хоть несколько дней актуальных данных...

а как еще можно получить или накопить актуальные данные?


выше вам уже отвечал
1) купить
2) сохранять нужную таблицу, подключившись через плазу2
Спасибо:

VoDA

Фотография
Дата: 11.05.2012
Ответить


Alexander Mukhanchikov
м... я думал, что там есть хоть несколько дней актуальных данных...

а как еще можно получить или накопить актуальные данные?


выше вам уже отвечал
1) купить
2) сохранять нужную таблицу, подключившись через плазу2[/quote]
понял, спасибо =)
Спасибо: zaq1
< 1 2 3  >

Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy