В стратегии запрашиваю несколько инструментов, нужны для принятия решения для входа и выхода из рынка. Использую - "MICEXINDEXCF", "SiH7", "RIH7" и "SBER@TQBR".
Код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