Exception: Лучший бид больше или равен лучшему офферу


Exception: Лучший бид больше или равен лучшему офферу
Atom Reply
9/14/2011


Quote:

Quik 13:56:10.7069351 System.ArgumentException: Лучший бид 157985 больше или равен лучшему офферу 157980.
Имя параметра: depths
в #=qw1XTJ7dV75pMzOz0hBo$siihDG5OZdJczlcSqCrqHeW9oeTyyyg2z_7_I_sdd8zP.OnSave(List`1 #=qHt7Kciyn5dIQU9bM1p8X6A==, IEnumerable`1 #=qWN5vLK9lgnuirNLbwKPXEQ==, DateTime #=qKKv4d0DmzYEe_LwI_ZTphg==, #=qgSOV1vXH9QyFDywKzjytlUKtRfBvlDa$lfa1pqF_C53vfXDOQ1XxQKKwFTI8v3b1 #=qZLgnP865s$8zaZAaVaUHkw==)
в #=qYHpTVY2S45tYaMYO2yPLP0Kwx4gEDfz9gCrc15vsqp2yDFNlUoPV9z$CnkxhiFm_.#=qLylBwxWKZJxUOHK9AhQfJg==(DateTime #=qYJ4ET8pqjhGXfYJzJxL7WA==, IEnumerable`1 #=qc5Kcj8dkw_HrZhkiXNAARw==, Boolean #=qCYaiWtpxLFpeKOuk9WIa0g==)
в #=qYHpTVY2S45tYaMYO2yPLP0Kwx4gEDfz9gCrc15vsqp2yDFNlUoPV9z$CnkxhiFm_.Save(IEnumerable`1 #=qWRtxCXnEO09I0nh9jQVyCg==)
в StockSharp.Hydra.Worker.<>c__DisplayClass16.<Download>b__10(IMarketDataSource source) в E:\StockSharpReleases\StockSharp_3.2.11\Hydra\Hydra\Worker.cs:строка 210

Начало периодически выскакивать в 3.2.11...

Tags:


Thanks:




33 Answers
1 2  >
Mikhail Sukhov

Avatar
Date: 9/14/2011
Reply


XMbIPb Go to

Начало периодически выскакивать в 3.2.11...


А чем стаканы пишите?
Thanks:

XMbIPb

Avatar
Date: 9/14/2011
Reply


Гидрой.. только что заметил, что у меня экспорт остановился после этой ошибки.. теперь дыра будет.. как попроще сделать чтоб гидра сигнализировала(отправляла sms,email или пищала хотя бы) в такой ситуации?
Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/14/2011
Reply


XMbIPb Go to
Гидрой..


Гидра данные откуда берет?

XMbIPb Go to

только что заметил, что у меня экспорт остановился после этой ошибки.. теперь дыра будет.. как попроще сделать чтоб гидра сигнализировала(отправляла sms,email или пищала хотя бы) в такой ситуации?


Написать код в Гидре?
Thanks:

XMbIPb

Avatar
Date: 9/15/2011
Reply


Mikhail Sukhov Go to

Гидра данные откуда берет?

Quik
Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 9/15/2011
Reply


XMbIPb Go to
Mikhail Sukhov Go to

Гидра данные откуда берет?

Quik


Нашли одно место, где может произойти рассинхронизация, будет в 3.2.12 (выложим вначале на КодеПлекс).
Thanks:

XMbIPb

Avatar
Date: 10/20/2011
Reply


Мигрировал на 4.0.3 - ошибка сохранилась...
Topic starter
Thanks:

Kiruhin

Avatar
Date: 6/6/2012
Reply


свежая версия (билд 17554 на CodePlex) снова стала выбрасывать исключения:

18:45:13.1963215 Quik System.ArgumentException: Лучший бид 75 больше или равен лучшему офферу 74,7.
Parameter name: depths
at #=qOxrUlg4OPs6kyO$Tb$fK_AsvLvpbniHqbem3XR0IqYJ$YHh_unxSb72o8Lx33ST2.OnSave(List`1 #=qdG9D7o0S$VLm$p1X5mJGDg==, IEnumerable`1 #=qI8Yrjw3FSlsTGXzrB2G6Wg==, DateTime #=qglhOpOJV3Eak7bWImN1qFw==, #=qIq66bh$3sZ3H5Qsg8wylKQnhWDKIGWVQ4Kzav3bBjbTuEYdOmqUGMB8pZP7nVXWY #=qzo2XbdxQdj2YpWFIs1luwA==)
at #=qd51RpYzKvk8ZoX3tAE27Pv5dvwlvJ4cd9LHaruSH2tUb7IGlUdMBGa$XKsHI6h7y.#=qjzjdD5iOFmlnVM$CIAaWbg==(DateTime #=qVEeOLCMkwYeCQLpKOSch0w==, #=qIh_krYypcNrIs_TevJuc9w==[] #=qtnbKHRwSl2jMCyY0PYan3Q==, Boolean #=qm2cMzNZ$AhLbKVjYs1uVcw==)
at #=qd51RpYzKvk8ZoX3tAE27Pv5dvwlvJ4cd9LHaruSH2tUb7IGlUdMBGa$XKsHI6h7y.#=qG1RUXoghWzAcXUcOT9wvpc_mdO__lonqO_9aIcpIBx4PoFa9OeOonJ6KslJhoXMc_QLR7RRDGkUG0XQy2cwZOw==(IEnumerable`1 #=qLhXPr$anHsDxuqWw0hZPdg==)
at StockSharp.Hydra.Core.BaseMarketDataSource.SaveDepths(Security security, IEnumerable`1 depths, Boolean raiseDataLoadedEvent) in D:\svalka\invest\_info\_sSharp\lib\stocksharp-17554\dev\Hydra\Core\BaseMarketDataSource.cs:line 209
at StockSharp.Hydra.Core.TraderMarketDataSource.Load() in D:\svalka\invest\_info\_sSharp\lib\stocksharp-17554\dev\Hydra\Core\TraderMarketDataSource.cs:line 101
at StockSharp.Hydra.Worker.WorkerProcess.<Download>b__18(IMarketDataSource source) in D:\svalka\invest\_info\_sSharp\lib\stocksharp-17554\dev\Hydra\Hydra\Worker.cs:line 124
18:45:14.2103233 Quik System.ArgumentException: Лучший бид 150,47 больше или равен лучшему офферу 150,31.
Thanks:

Mikhail Sukhov

Avatar
Date: 6/6/2012
Reply


Kiruhin Go to
свежая версия (билд 17554 на CodePlex) снова стала выбрасывать исключения:

18:45:13.1963215 Quik System.ArgumentException: Лучший бид 75 больше или равен лучшему офферу 74,7.


Можете проверку в MarketDataTrader.OnMarketDepthsChanged вставить? Пока не понятно, на каком участке стакан приходит плохой.
Thanks:

Kiruhin

Avatar
Date: 6/7/2012
Reply


Code
private void OnMarketDepthsChanged(IEnumerable<MarketDepth> depths)
{
	depths.ForEach(d =>
	{
		if (d.BestAsk.Price <= d.BestBid.Price)
			Log.SafeInvoke("Ошибка: d.BestAsk.Price <= d.BestBid.Price; {0}, {1}, {2}".Put(d.BestAsk.Price, d.BestBid.Price, d.Security.Code));

		//...

	});
}


этот код ничего в лог не пишет, когда ошибки продолжают валиться.
Thanks:

Mikhail Sukhov

Avatar
Date: 6/7/2012
Reply


Kiruhin Go to
этот код ничего в лог не пишет, когда ошибки продолжают валиться.


Я имел ввиду что-то типа такого:

Code
private void OnMarketDepthsChanged(IEnumerable<MarketDepth> depths)
{
	depths.ForEach(d =>
	{
		//Trace.WriteLine("MDA " +dc.Security+":"+dc._DebugId+":"+ dc.LastChangeTime.ToString("HHmmss.fff"));
		if (d.Bids.Length > 0 || d.Asks.Length > 0)
		{
			if (d.BestAsk.Price <= d.BestBid.Price)
				Log.SaveInvoke("Error 1");

			var clone = d.Clone();

			if (clone.BestAsk.Price <= clone.BestBid.Price)
				Log.SaveInvoke("Error 2");

			_depthsBuffer.Add(d.Security, clone);
		}
	});
}
Thanks:

Kiruhin

Avatar
Date: 6/7/2012
Reply


да, в моем варианте валились ошибки NullReferenceException.
но все равно в логе видно, что уже в этот метод приходит плохой стакан

запустил Гидру с Вашим кодом, отпишусь позже.
Thanks:

Kiruhin

Avatar
Date: 6/7/2012
Reply


17:51:22.3118925 Quik Error 1
17:51:22.3118925 Quik Error 2
17:51:30.3495156 Quik System.ArgumentException: Лучший бид 131660 больше или равен лучшему офферу 131655.
Имя параметра: depths
...

да, в этот метод стакан уже приходит неправильный.
Thanks:

Mikhail Sukhov

Avatar
Date: 6/7/2012
Reply


Kiruhin Go to
17:51:22.3118925 Quik Error 1
17:51:22.3118925 Quik Error 2
17:51:30.3495156 Quik System.ArgumentException: Лучший бид 131660 больше или равен лучшему офферу 131655.
Имя параметра: depths
...

да, в этот метод стакан уже приходит неправильный.


Получается, что то, что вы отписали здесь, неправильно?
Thanks:

Alexander

Avatar
Date: 6/7/2012
Reply


Kiruhin Go to
17:51:22.3118925 Quik Error 1
17:51:22.3118925 Quik Error 2
17:51:30.3495156 Quik System.ArgumentException: Лучший бид 131660 больше или равен лучшему офферу 131655.
Имя параметра: depths
...

да, в этот метод стакан уже приходит неправильный.


Выведите, пожалуйста, вместе с Error1 и Error2
d.BestAsk.Volume и d.BestBid.Volume
Thanks:

Kiruhin

Avatar
Date: 6/8/2012
Reply


Alexander Mukhanchikov Go to
Выведите, пожалуйста, вместе с Error1 и Error2
d.BestAsk.Volume и d.BestBid.Volume


13:43:42.8640657 Quik Error 1. 'VBM2': bestAsk (Price=5447, volume=49); bestBid (Price=5448, volume=1)
13:43:42.8640657 Quik Error 2. 'VBM2': bestAsk (Price=5447, volume=49); bestBid (Price=5448, volume=1)
13:43:56.3298895 Quik System.ArgumentException: Лучший бид 5448 больше или равен лучшему офферу 5447.
Parameter name: depths
at #=qOxrUlg4OPs6kyO$Tb$fK_AsvLvpbniHqbem3XR0IqYJ$YHh_unxSb72o8Lx33ST2.OnSave(List`1 #=qdG9D7o0S$VLm$p1X5mJGDg==, IEnumerable`1 #=qI8Yrjw3FSlsTGXzrB2G6Wg==, DateTime #=qglhOpOJV3Eak7bWImN1qFw==, #=qIq66bh$3sZ3H5Qsg8wylKQnhWDKIGWVQ4Kzav3bBjbTuEYdOmqUGMB8pZP7nVXWY #=qzo2XbdxQdj2YpWFIs1luwA==)
at #=qd51RpYzKvk8ZoX3tAE27Pv5dvwlvJ4cd9LHaruSH2tUb7IGlUdMBGa$XKsHI6h7y.#=qjzjdD5iOFmlnVM$CIAaWbg==(DateTime #=qVEeOLCMkwYeCQLpKOSch0w==, #=qIh_krYypcNrIs_TevJuc9w==[] #=qtnbKHRwSl2jMCyY0PYan3Q==, Boolean #=qm2cMzNZ$AhLbKVjYs1uVcw==)
at #=qd51RpYzKvk8ZoX3tAE27Pv5dvwlvJ4cd9LHaruSH2tUb7IGlUdMBGa$XKsHI6h7y.#=qG1RUXoghWzAcXUcOT9wvpc_mdO__lonqO_9aIcpIBx4PoFa9OeOonJ6KslJhoXMc_QLR7RRDGkUG0XQy2cwZOw==(IEnumerable`1 #=qLhXPr$anHsDxuqWw0hZPdg==)
at StockSharp.Hydra.Core.BaseMarketDataSource.SaveDepths(Security security, IEnumerable`1 depths, Boolean raiseDataLoadedEvent) in D:\svalka\invest\_info\_sSharp\lib\stocksharp-17554\dev\Hydra\Core\BaseMarketDataSource.cs:line 209
at StockSharp.Hydra.Core.TraderMarketDataSource.Load() in D:\svalka\invest\_info\_sSharp\lib\stocksharp-17554\dev\Hydra\Core\TraderMarketDataSource.cs:line 0
at StockSharp.Hydra.Worker.WorkerProcess.<Download>b__18(IMarketDataSource source) in D:\svalka\invest\_info\_sSharp\lib\stocksharp-17554\dev\Hydra\Hydra\Worker.cs:line 124
Thanks:

Kiruhin

Avatar
Date: 6/8/2012
Reply


Mikhail Sukhov Go to
Получается, что то, что вы отписали здесь, неправильно?

ага. ошибся. извините.
Thanks:

Mikhail Sukhov

Avatar
Date: 6/8/2012
Reply


Можете проверить не Гидру, а в отдельной консольной программе написать такой код:

Code
var qt = new QuikTrader();
qt.NewSecurities += securities =>
{
	foreach (var security in securities)
	{
		if (security.Id == "ID инструмента")
		{
			qt.RegisterQuotes(security);
			break;
		}
	}
};
qt.MarketDepthsChanged += depths =>
{
	foreach (var depth in depths)
	{
		if (depth.Security.Id == "ID инструмента")
		{
			if (/* проверка */)
				Console.WriteLine("Ошибка");
		}
	}
};
qt.Connected += qt.StartExport;
qt.Connect();


Это покажет, приходят ли данные уже испорченные из Квика.
Thanks:

Kiruhin

Avatar
Date: 6/8/2012
Reply


да. конечно.
я отпишусь.
Thanks:

chudokos

Avatar
Date: 6/25/2012
Reply


Kiruhin Go to
да. конечно.
я отпишусь.


Получилось ли у вас в какой момент данные уже испорченные приходят?
Thanks:

Kiruhin

Avatar
Date: 7/3/2012
Reply


вообще что-то руки до стокшарпа не доходят последнее время, ничего не делал пока. выставил только maxErrorCount в значение побольше )
может, через недельку посмотрю... (от своего обещания не отказываюсь =) )
Thanks:

Mikhail Sukhov

Avatar
Date: 7/3/2012
Reply


Kiruhin Go to
вообще что-то руки до стокшарпа не доходят последнее время, ничего не делал пока. выставил только maxErrorCount в значение побольше )
может, через недельку посмотрю... (от своего обещания не отказываюсь =) )


Судя по всему ошибка локальная, и только у вашего брокера. Так что можете не торопится. В любом случае ее устранение от нас вряд ли будет зависеть. Да и стаканы через квик - это та еще дезинформация.
Thanks:

XMbIPb

Avatar
Date: 8/24/2012
Reply


В 4.1.3 при экспорте из квика с 18:45 до 18:50 вылетает каждую секунду.. ну и до этого пару раз...

Можно что-то сделать?
Брокер Финам...
Topic starter
Thanks:

Alexander

Avatar
Date: 9/13/2012
Reply


В клиринг не надо сохранять стаканы.
Thanks:

XMbIPb

Avatar
Date: 10/24/2012
Reply


Alexander Mukhanchikov Go to
В клиринг не надо сохранять стаканы.


А в остальное время? Может можно хотя бы как-то эти сообщения перехватить.. чтоб лог не засирать.. хотел вставить пустой обработчик в BaseMarketDataSource.. но боюсь какую-нибудь серьёзную ошибку пропустить.. а откуда конкретно это сообщение в лог заносится найти не могу...
Topic starter
Thanks:

Mikhail Sukhov

Avatar
Date: 10/24/2012
Reply


XMbIPb Go to
А в остальное время? Может можно хотя бы как-то эти сообщения перехватить.. чтоб лог не засирать.. хотел вставить пустой обработчик в BaseMarketDataSource.. но боюсь какую-нибудь серьёзную ошибку пропустить.. а откуда конкретно это сообщение в лог заносится найти не могу...


Лучше в Квик написать, с вопросом, а почему это в клиринг стакан пляшет.Blink
Thanks:
1 2  >

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

loading
clippy