Работа со стаканом заявок
Atom Ответить
04.02.2019


Добрый день.

Имею историю по стаканам.
History.zip

Загружаю историю по стакану из локального хранилища.
LKOH.txt
По времени всё ок. (06:59:46.253, 06:59:46.643... меняется)
QuoteChange,T(L)=2019/01/30 03:59:45.114,T(S)=2019/01/30 06:59:45.114 {{ 10 - 10 }}
QuoteChange,T(L)=2019/01/3106:59:46.253,T(S)=2019/01/30 06:59:45.114 {{ 10 - 10 }}
QuoteChange,T(L)=2019/01/31 06:59:46.643,T(S)=2019/01/30 06:59:45.114 {{ 10 - 10 }}

Гружу историю через HistoryEmulationConnector (аналогично как в S# Shell) и не могу найти свойство отвечающее за QuoteChange в коннекторе и стратегии.
Capture.PNG
Отображается неизменяемое 06:59:45

WriteLine(FirstSecurity.Code + " " + Connector.CurrentTime) и
WriteLine(SecondSecurity.Code + " " + Connector.MarketDataAdapter.CurrentTime) в ProcessMarketDepth(MarketDepth marketDepth)
both.txt

Где находится информация о QuoteChange time в HistoryEmulationConnector или стратегии?
History.zip 1,1MB (0) LKOH.txt 2,6MB (1) Capture.PNG 36,1KB (33) both.txt 15,6MB (0)

Теги:


Спасибо:




22 Ответов
Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 07.02.2019
Ответить


Добрый день.

Дополнительный вопрос.
Метод Connector.GetMarketDepth(security) работает некорректно.
После него теряется большая часть стакана (в both.txt)

И в основном 0


Где
10 - 10,
0 - 0,
1 - 0 это Connector.GetMarketDepth(security).Bids.Count() + " - " + Connector.GetMarketDepth(security).Asks.Count()

Хотя по истории LKOH.txt и GAZP.txt таких пробелов нет.
GAZP.txt

Код отправил на почту.
GAZP.txt 5MB (0)
Автор топика
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 08.02.2019
Ответить


Экспериментальным методом определил, что стаканы GAZP и LKOH не приходят одновременно.


Несмотря на то, что оба инструмента 2019/01/31 числа,
Capture1.PNGCapture.PNG
все 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?
Capture1.PNG 84,8KB (26) Capture.PNG 85,1KB (26)
Автор топика
Спасибо:

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
Ответить


Метка времени у стакана находится в свойстве https://doc.stocksharp.r...Depth_LastChangeTime.htm Это то, что вам нужно?
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 11.02.2019
Ответить


Support Перейти
Метка времени у стакана находится в свойстве https://doc.stocksharp.r...Depth_LastChangeTime.htm Это то, что вам нужно?


Не совсем. На картинке 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
Ответить


Время на истории это https://doc.stocksharp.r...Depth_LastChangeTime.htm Вы же вывели другие свойства, которые не относятся к стакану. Поэтому вопрос заключается в том, что вам нужно получить.
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 11.02.2019
Ответить


Support Перейти
Время на истории это https://doc.stocksharp.r...Depth_LastChangeTime.htm Вы же вывели другие свойства, которые не относятся к стакану. Поэтому вопрос заключается в том, что вам нужно получить.


Возможно я ошибаюсь и данное время относится не к стакану, а к коннектору.
Мне нужно получить вторую колонку из файла LKOH.txt
T(L)=2019/01/31 06:59:46.253
T(L)=2019/01/31 06:59:46.643

В общем получить T(L) - чтобы это не значило.

Файл был сформирован алгоритмом ниже
Автор топика
Спасибо:

Support

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


Добрый день

Пожалуйста, уточните ваш вопрос. Если он заключается в том, откуда брать время стакана, то это MarketDepth.LastChangeTime или аналог QuotesChangeTime.ServerTime.
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 12.02.2019
Ответить


Support Перейти
Добрый день

Пожалуйста, уточните ваш вопрос. Если он заключается в том, откуда брать время стакана, то это MarketDepth.LastChangeTime или аналог QuotesChangeTime.ServerTime.


Добрый день.

Перефразирую.

Есть код.

Как мне внутри метода void ProcessSecondMarketDepth(MarketDepth marketDepth) получить свойство LocalTime от объекта QuoteChangeMessage?
Снимок.PNG
Снимок.PNG 27,4KB (20)
Автор топика
Спасибо:

Support

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


В случае реального подключения это будет MarketDepth.LocalTime.
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 12.02.2019
Ответить


Support Перейти
В случае реального подключения это будет MarketDepth.LocalTime.

И логичный вопрос - в случае исторического коннектора его никак не получить?

Автор топика
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 12.02.2019
Ответить


.
Автор топика
Спасибо:

Support

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


На истории это поле не имеет смысла так как локальное время совпадает с серверным.
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 13.02.2019
Ответить


Support Перейти
На истории это поле не имеет смысла так как локальное время совпадает с серверным.

Если на истории стакана локальное время совпадает с серверным, значит и в сделках по стакану

локальное время будет совпадать с серверным.

Получается, время сделки тоже не доступно и каждая сделка по времени будет = 06:59:45?
Автор топика
Спасибо:

Support

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


Пожалуйста уточните ваш вопрос. Сделки имеют те временные отметки, которые прислала биржа.
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 13.02.2019
Ответить


Support Перейти
Пожалуйста уточните ваш вопрос. Сделки имеют те временные отметки, которые прислала биржа.

Ок.
Как внутри метода void ProcessNewTrade(Trade obj) получить временную отметку?
Автор топика
Спасибо:

Support

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


Trade.Time
Спасибо:

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 13.02.2019
Ответить


Снимок.PNG
Данное свойство (при историческом коннекторе) всегда имеет значение 06:59:45.

Другими словами.

Как внутри метода void ProcessNewTrade(Trade obj) при историческом коннекторе определить время сделки (сделка пришла в 10:00:00.000 или 11:26:14.101)?
Снимок.PNG 25KB (15)
Автор топика
Спасибо:

Support

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


Предоставлен ли ответ здесь https://stocksharp.ru/posts/m/46732/ ?
Спасибо:

Support

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


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

Дмитрий Антипов

Фотография
Курсы Благотворитель
Дата: 14.02.2019
Ответить


Support Перейти
Предоставлен ли ответ здесь https://stocksharp.ru/posts/m/46732/ ?


Добрый день.

К сожалению не совсем.

По отображению исторического времени через ордер лог - вопросов нет, работает идеально.
Только я использую не событие
Код
connector.NewOrderLogItem
, а MarketRule инструмента
Код
FirstSecurity.WhenNewOrderLogItem(Connector)
, поскольку не нужно искать инструмент в коннекторе.

К несчастью, ордер лог доступен только на срочном рынке, на споте этот вариант не подойдет, поэтому использую историю стакана

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

Большое спасибо.

Т.к.
Цитата:
К несчастью, ордер лог доступен только на срочном рынке, на споте этот вариант не подойдет, поэтому использую историю стакана
+ для отслеживания поведения крупной заявки в стакане на истории и ещё ряда стратегий необходимо историческое время - передайте пожалуйста разработчикам следующую просьбу.
Добавьте пожалуйста (для исторического коннкектора)
для правил
Код
security.WhenNewTrade
,
Код
security.WhenMarketDepthChanged

и событий
Код
Connector.MarketDepthChanged
,
Код
Connector.NewTrade

возможность просмотра исторического времени, как это уже реализовано для
Код
connector.NewOrderLogItem
и
Код
security.WhenNewOrderLogItem
.

Данные доработки разрешат данный вопрос.







Автор топика
Спасибо:


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

loading
clippy