Connector.NewTrades += Несоответствие получаемых данных

Connector.NewTrades += Несоответствие получаемых данных
Atom
3/3/2017
Prival


В стратегии запрашиваю несколько инструментов, нужны для принятия решения для входа и выхода из рынка. Использую - "MICEXINDEXCF", "SiH7", "RIH7" и "SBER@TQBR".
Code
protected override void OnStarted()
{

Connector.NewTrades += Connector_NewTrades;

base.OnStarted();
}

private void Connector_NewTrades(IEnumerable<StockSharp.BusinessEntities.Trade> trades)
{
foreach (var trade in trades)
{
// расчеты по каждому trade

// в конце вставил проверку на адекватность данных

if (trade.Security.Code != "MICEXINDEXCF")
{
if (trade.Price > trade.Security.BestAsk.Price || trade.Price < trade.Security.BestBid.Price)
{
Console.WriteLine(@"Сбой trede {0} время {1} price {2} ОИ {3} Пок {4} Прод {5} BestAsk={6} BestBid={7} LastTrade={8}",
trade.Security, trade.Time.DateTime, trade.Price,trade.OpenInterest, trade.Security.AsksCount, trade.Security.BidsCount,
trade.Security.BestAsk,trade.Security.BestBid, trade.Security.LastTrade.Price);
}
}
}


В окно вывода идут практически постоянно следующие данные

Сбой trede RIH7@FORTS время 03/03/2017 12:00:07 price 109400 ОИ 517294 Пок 2678 Прод 1723 BestAsk=Оффер 109440 6 BestBid=Бид 109430 51 LastTrade=109390

В чем неадекватность данных.
1. trade.Price неравен trade.Security.LastTrade.Price (109400 и 109390)
2. Обе эти цены находятся за пределами границ спреда BestAsk=109440, BestBid=109430

И это происходит достаточно часто и по всем получаемым инструментам
Сбой trede SBER@TQBR время 03/03/2017 12:00:07 price 163.7 ОИ Пок 1865 Прод 2034 BestAsk=Оффер 163.82 50 BestBid=Бид 163.75 50 LastTrade=163.7
Сбой trede RIH7@FORTS время 03/03/2017 12:00:07 price 109410 ОИ 517360 Пок 2678 Прод 1723 BestAsk=Оффер 109440 6 BestBid=Бид 109430 51 LastTrade=109410
Сбой trede RIH7@FORTS время 03/03/2017 12:00:07 price 109410 ОИ 517292 Пок 2678 Прод 1723 BestAsk=Оффер 109440 6 BestBid=Бид 109430 51 LastTrade=109410
Сбой trede RIH7@FORTS время 03/03/2017 12:00:07 price 109410 ОИ 517288 Пок 2678 Прод 1723 BestAsk=Оффер 109440 6 BestBid=Бид 109430 51 LastTrade=109410
Сбой trede RIH7@FORTS время 03/03/2017 12:00:07 price 109410 ОИ 517286 Пок 2678 Прод 1723 BestAsk=Оффер 109440 6 BestBid=Бид 109430 51 LastTrade=109410
Сбой trede RIH7@FORTS время 03/03/2017 12:00:07 price 109410 ОИ 517284 Пок 2678 Прод 1723 BestAsk=Оффер 109440 6 BestBid=Бид 109430 51 LastTrade=109410
Сбой trede SIH7@FORTS время 03/03/2017 12:00:07 price 59059 ОИ 3342132 Пок 3703 Прод 3673 BestAsk=Оффер 59058 43 BestBid=Бид 59056 7 LastTrade=59058
Сбой trede SIH7@FORTS время 03/03/2017 12:00:07 price 59059 ОИ 3342132 Пок 3703 Прод 3673 BestAsk=Оффер 59058 43 BestBid=Бид 59056 7 LastTrade=59059
Сбой trede SIH7@FORTS время 03/03/2017 12:00:07 price 59059 ОИ 3342134 Пок 3703 Прод 3673 BestAsk=Оффер 59058 43 BestBid=Бид 59056 7 LastTrade=59059
Сбой trede SIH7@FORTS время 03/03/2017 12:00:07 price 59059 ОИ 3342136 Пок 3703 Прод 3673 BestAsk=Оффер 59058 43 BestBid=Бид 59056 7 LastTrade=59059

1. Подскажите что нужно сделать, как правильно получать данные, что бы они лежали внутри спреда ? Возможно ли это ?
2. Если trade.Price неравен trade.Security.LastTrade.Price, кому верить, где данные более свежие ?

Подключение к боевому Квику через lua. Версия библиотеки 4.3.21



Thanks:


RomSunZ

Avatar
Date: 3/4/2017
Reply


Вы через какой коннектор получаете данные? Не думали что стакан и сделки приходят в разных потоках и могут быть не синхронизированы как в случае orderlog?
Thanks:

Prival

Avatar
Date: 3/4/2017
Reply


Про это думал и встречался с этим в других платформах, но что бы была такая рассинхронизация даже помыслить не мог....практически постоянно сделки проходят за пределами спреда, и это уже скорее всего не биржа и потоки виноваты, а особенность обработки StockSharpa. Когда под соединяюсь к Квику через lua Qscalp такого не наблюдается.
Самое поразительное это trade.Price неравен trade.Security.LastTrade.Price (109400 и 109390) он что тоже в разных потоках идет ?
Thanks:

RomSunZ

Avatar
Date: 3/4/2017
Reply


Проверяйте Ваш код в этом случае. Я, например, получаю более-менее адекватные данные через луа по стаканам/сделкам. Ну и учитывайте, что newtrade может прийти раньше, чем изменится информация level1 по инструменту - нужно проверять.
Thanks:

Prival

Avatar
Date: 3/4/2017
Reply


Код есть в первом посте. Могу в понедельник перепроверить еще раз и выложить весь (что бы вам было легче). Но это сути не поменяет. Еще раз прошу внимательно посмотреть вы говорите что level1 может меняться позже. Хорошо...тогда поясните строчки где RIH7@FORTS там ОИ меняется сначала 517360 потом 517292...517288...517286...517284, т.е. level1 идет обновление, а вот BestAsk, BestBid и LastTrade не меняются. Это как по вашему может быть ? Ну или другой вопрос, ни одной сделки не прошло, ни бид ни офер не поменялся, а ОИ поменялся...6 раз ...
Thanks:

RomSunZ

Avatar
Date: 3/5/2017
Reply


Я же Вам и говорю, проверяйте свой код. Это далеко не весь Ваш код, и где может быть ошибка я знать не могу. Просто констатирую, что у меня луа данные посылает адекватно.
ЗЫ. Откройте пример квика и посмотрите что происходит там как вариант.
Thanks:

Support

Avatar
Date: 3/6/2017
Reply


Вы получаете данные через терминал... В этом случае не гарантируется синхронизация данных со стаканом... Если нужна синхронизация, то нужно использовать плазу в режиме OrderLog.
Thanks:

Prival

Avatar
Date: 3/6/2017
Reply


RomSunZ
Я же Вам и говорю, проверяйте свой код. Это далеко не весь Ваш код, и где может быть ошибка я знать не могу. Просто констатирую, что у меня луа данные посылает адекватно.
ЗЫ. Откройте пример квика и посмотрите что происходит там как вариант.


Как обещал прикладываю полный код. Можете посмотреть, проверить поступление данных у себя. Очень удивлен что у Вас все нормально. Я считал что да потоки разные, и рассинхронизация. может иметь место, но это должны быть единичные случаи на сильных движения....тут же идет практически постоянная рассинхронизация, даже на вечерке когда рынок абсолютно спокоен и еле движется...

З.Ы. И искренне удивлен, что trade.Price иногда неравен trade.Security.LastTrade.Price получается это разные потоки ?
TestData01.rar 13 MB (230)
Thanks:


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy