Дмитрий Антипов
|
Дата: 07.02.2019
|
|
|
|
Добрый день. Дополнительный вопрос. Метод Connector.GetMarketDepth(security) работает некорректно. После него теряется большая часть стакана (в both.txt) GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- GAZP 01/30/2019 06:59:45 +03:00 : 10 - 10 LKOH 01/30/2019 06:59:45 +03:00 : 1 - 0 -- И в основном 0 GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 -- GAZP 01/30/2019 06:59:45 +03:00 : 0 - 0 LKOH 01/30/2019 06:59:45 +03:00 : 10 - 10 Где 10 - 10, 0 - 0, 1 - 0 это Connector.GetMarketDepth(security).Bids.Count() + " - " + Connector.GetMarketDepth(security).Asks.Count() Хотя по истории LKOH.txt и GAZP.txt таких пробелов нет. GAZP.txtКод отправил на почту.
|
Автор топика
|
|
|
Дмитрий Антипов
|
Дата: 08.02.2019
Экспериментальным методом определил, что стаканы GAZP и LKOH не приходят одновременно. FirstSecurity.WhenMarketDepthChanged(Connector) .Do(ProcessFirstMarketDepth) .Apply(this);
SecondSecurity.WhenMarketDepthChanged(Connector) .Do(ProcessSecondMarketDepth) .Apply(this); Несмотря на то, что оба инструмента 2019/01/31 числа,   все WhenMarketDepthChanged отрабатывают сначала для LKOH, а затем для GAZP. Причем, и при FirstSecurity = LKOH, SecondSecurity = GAZP и при FirstSecurity = GAZP, SecondSecurity = LKOH - первый всегда LKOH. 1 вопрос) Что нужно сделать с коннектором, чтобы WhenMarketDepthChanged двух инструментов приходили одновременно? Плюс Каждый второй QuoteChange в ProcessMarketDepth равен предыдущему. По этой причине, в LHOH.txt 31599 QuoteChange, но ProcessMarketDepth срабатывает 31599 * 2 = 63198 раз (аналогично и для GAZP). 2 вопрос) Почему дублируется QuoteChange marketDepth?
|
Автор топика
|
|
|
Support
|
Дата: 11.02.2019
Добрый день
Могли бы вы разделить ваши вопросы на разные топики и предоставить больше информации в чем именно ваш вопрос?
|
|
|
|
Дмитрий Антипов
|
Дата: 11.02.2019
|
|
|
|
Support  Добрый день
Могли бы вы разделить ваши вопросы на разные топики и предоставить больше информации в чем именно ваш вопрос? Добрый день. Подытожим. Проблемный код отправил на почту. History.zip, GAZP.txt, LKOH.txt, both.txt - прикреплены к посту. В первом посте от 04.02.2019 вопрос 1) Где находится информация о QuoteChange time (изменяемое время) в HistoryEmulationConnector? Третий пост от 08.02.2019 выложен с двумя целям: 1 - Сказать от том, что второй пост от 07.02.2019 разрешен и отвечать на него не нужно. 2 - В связи с этим, появились новые вопросы: 2) Что нужно сделать с историческим коннектором, чтобы WhenMarketDepthChanged двух инструментов приходили одновременно? 3) Почему дублируется QuoteChange marketDepth? Итого: Все вопросы связаны со стаканом заявок и возможно они взаимосвязаны, поэтому они находятся в одном посте. 1) Где находится информация о QuoteChange time (изменяемое время) в HistoryEmulationConnector? 2) Что нужно сделать с историческим коннектором, чтобы WhenMarketDepthChanged двух инструментов приходили одновременно? 3) Почему дублируется QuoteChange marketDepth? 4) Какую дополнительную информацию Вам предоставить? 5) Имея текущий итог - разделять вопросы на разным топикам?
|
Автор топика
|
|
|
Support
|
Дата: 11.02.2019
|
|
|
|
Дмитрий Антипов
|
Дата: 11.02.2019
Support  Не совсем. На картинке Capture.PNG я показал по каким свойствам прошел (и то свойство там было), но время осталось неизменным 06:59:45. Уточню. В файле LKOH.txt как получить вторую колонку? (T(L)=2019/01/31 06:59:46.643) На картинке Capture.PNG перебрал всё и получаю только третью колонку (T(S)=2019/01/30 06:59:45.114)
|
Автор топика
|
|
|
Support
|
Дата: 11.02.2019
|
|
|
|
Дмитрий Антипов
|
Дата: 11.02.2019
Support  Возможно я ошибаюсь и данное время относится не к стакану, а к коннектору. Мне нужно получить вторую колонку из файла LKOH.txt T(L)=2019/01/31 06:59:46.253 T(L)=2019/01/31 06:59:46.643 В общем получить T(L) - чтобы это не значило. Файл был сформирован алгоритмом ниже var storage = storageRegistry.GetQuoteMessageStorage(security); var data = storage.Load(new DateTime(2019, 1, 30), new DateTime(2019, 1, 31)); foreach (var d in data) { Console.WriteLine(d + " {{ " + d.Bids.ToList().Count + " - " + d.Asks.ToList().Count + " }}"); }
|
Автор топика
|
|
|
Support
|
Дата: 12.02.2019
Добрый день
Пожалуйста, уточните ваш вопрос. Если он заключается в том, откуда брать время стакана, то это MarketDepth.LastChangeTime или аналог QuotesChangeTime.ServerTime.
|
|
|
|
Дмитрий Антипов
|
Дата: 12.02.2019
Support  Добрый день
Пожалуйста, уточните ваш вопрос. Если он заключается в том, откуда брать время стакана, то это MarketDepth.LastChangeTime или аналог QuotesChangeTime.ServerTime. Добрый день. Перефразирую. Есть код. SecondSecurity.WhenMarketDepthChanged(Connector) .Do(ProcessSecondMarketDepth) .Apply(this);
private void ProcessSecondMarketDepth(MarketDepth marketDepth) { } Как мне внутри метода void ProcessSecondMarketDepth(MarketDepth marketDepth) получить свойство LocalTime от объекта QuoteChangeMessage?
|
Автор топика
|
|
|
Support
|
Дата: 12.02.2019
В случае реального подключения это будет MarketDepth.LocalTime.
|
|
|
|
Дмитрий Антипов
|
Дата: 12.02.2019
Support  В случае реального подключения это будет MarketDepth.LocalTime. И логичный вопрос - в случае исторического коннектора его никак не получить?
|
Автор топика
|
|
|
Дмитрий Антипов
|
Дата: 12.02.2019
.
|
Автор топика
|
|
|
Support
|
Дата: 12.02.2019
На истории это поле не имеет смысла так как локальное время совпадает с серверным.
|
|
|
|
Дмитрий Антипов
|
Дата: 13.02.2019
Support  На истории это поле не имеет смысла так как локальное время совпадает с серверным. Если на истории стакана локальное время совпадает с серверным, значит и в сделках по стакану FirstSecurity.WhenNewTrade(Connector) .Do(ProcessNewTrade) .Apply(this);
private void ProcessNewTrade(Trade obj) { } локальное время будет совпадать с серверным. Получается, время сделки тоже не доступно и каждая сделка по времени будет = 06:59:45?
|
Автор топика
|
|
|
Support
|
Дата: 13.02.2019
Пожалуйста уточните ваш вопрос. Сделки имеют те временные отметки, которые прислала биржа.
|
|
|
|
Дмитрий Антипов
|
Дата: 13.02.2019
Support  Пожалуйста уточните ваш вопрос. Сделки имеют те временные отметки, которые прислала биржа. Ок. Как внутри метода void ProcessNewTrade(Trade obj) получить временную отметку?
|
Автор топика
|
|
|
Support
|
Дата: 13.02.2019
Trade.Time
|
|
|
|
Дмитрий Антипов
|
Дата: 13.02.2019
 Данное свойство (при историческом коннекторе) всегда имеет значение 06:59:45. Другими словами. Как внутри метода void ProcessNewTrade(Trade obj) при историческом коннекторе определить время сделки (сделка пришла в 10:00:00.000 или 11:26:14.101)?
|
Автор топика
|
|
|
Support
|
Дата: 14.02.2019
|
|
|
|
Support
|
Дата: 14.02.2019
Так же ваша информация передана разработчикам, так как тиковые сделки должны приходить в случае формирования свечей.
|
|
|
|
Дмитрий Антипов
|
Дата: 14.02.2019
|
|
|
|
Support  Добрый день. К сожалению не совсем. По отображению исторического времени через ордер лог - вопросов нет, работает идеально. Только я использую не событие Кодconnector.NewOrderLogItem , а MarketRule инструмента КодFirstSecurity.WhenNewOrderLogItem(Connector) , поскольку не нужно искать инструмент в коннекторе. К несчастью, ордер лог доступен только на срочном рынке, на споте этот вариант не подойдет, поэтому использую историю стакана Цитата:Так же ваша информация передана разработчикам, так как тиковые сделки должны приходить в случае формирования свечей. Большое спасибо. Т.к. Цитата:К несчастью, ордер лог доступен только на срочном рынке, на споте этот вариант не подойдет, поэтому использую историю стакана + для отслеживания поведения крупной заявки в стакане на истории и ещё ряда стратегий необходимо историческое время - передайте пожалуйста разработчикам следующую просьбу. Добавьте пожалуйста (для исторического коннкектора) для правил , Кодsecurity.WhenMarketDepthChanged и событий КодConnector.MarketDepthChanged , возможность просмотра исторического времени, как это уже реализовано для Кодconnector.NewOrderLogItem и Кодsecurity.WhenNewOrderLogItem . Данные доработки разрешат данный вопрос.
|
Автор топика
|
|