Mikhail Sukhov
|
Дата: 14.09.2011
XMbIPb  Начало периодически выскакивать в 3.2.11...
А чем стаканы пишите?
|
|
|
|
XMbIPb
|
Дата: 14.09.2011
Гидрой.. только что заметил, что у меня экспорт остановился после этой ошибки.. теперь дыра будет.. как попроще сделать чтоб гидра сигнализировала(отправляла sms,email или пищала хотя бы) в такой ситуации?
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 14.09.2011
XMbIPb  Гидрой..
Гидра данные откуда берет? XMbIPb  только что заметил, что у меня экспорт остановился после этой ошибки.. теперь дыра будет.. как попроще сделать чтоб гидра сигнализировала(отправляла sms,email или пищала хотя бы) в такой ситуации?
Написать код в Гидре?
|
|
|
|
XMbIPb
|
Дата: 14.09.2011
Mikhail Sukhov  Гидра данные откуда берет?
Quik
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 14.09.2011
XMbIPb  Mikhail Sukhov  Гидра данные откуда берет?
Quik Нашли одно место, где может произойти рассинхронизация, будет в 3.2.12 (выложим вначале на КодеПлекс).
|
|
|
|
XMbIPb
|
Дата: 20.10.2011
Мигрировал на 4.0.3 - ошибка сохранилась...
|
Автор топика
|
|
|
Kiruhin
|
Дата: 06.06.2012
|
|
|
|
свежая версия (билд 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.
|
|
|
|
Mikhail Sukhov
|
Дата: 06.06.2012
Kiruhin  свежая версия (билд 17554 на CodePlex) снова стала выбрасывать исключения:
18:45:13.1963215 Quik System.ArgumentException: Лучший бид 75 больше или равен лучшему офферу 74,7.
Можете проверку в MarketDataTrader.OnMarketDepthsChanged вставить? Пока не понятно, на каком участке стакан приходит плохой.
|
|
|
|
Kiruhin
|
Дата: 07.06.2012
Код
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));
//...
});
}
этот код ничего в лог не пишет, когда ошибки продолжают валиться.
|
|
|
|
Mikhail Sukhov
|
Дата: 07.06.2012
Kiruhin  этот код ничего в лог не пишет, когда ошибки продолжают валиться. Я имел ввиду что-то типа такого: Код
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);
}
});
}
|
|
|
|
Kiruhin
|
Дата: 07.06.2012
да, в моем варианте валились ошибки NullReferenceException. но все равно в логе видно, что уже в этот метод приходит плохой стакан
запустил Гидру с Вашим кодом, отпишусь позже.
|
|
|
|
Kiruhin
|
Дата: 07.06.2012
17:51:22.3118925 Quik Error 1 17:51:22.3118925 Quik Error 2 17:51:30.3495156 Quik System.ArgumentException: Лучший бид 131660 больше или равен лучшему офферу 131655. Имя параметра: depths ...
да, в этот метод стакан уже приходит неправильный.
|
|
|
|
Mikhail Sukhov
|
Дата: 07.06.2012
Kiruhin  17:51:22.3118925 Quik Error 1 17:51:22.3118925 Quik Error 2 17:51:30.3495156 Quik System.ArgumentException: Лучший бид 131660 больше или равен лучшему офферу 131655. Имя параметра: depths ...
да, в этот метод стакан уже приходит неправильный. Получается, что то, что вы отписали здесь, неправильно?
|
|
|
|
Alexander
|
Дата: 07.06.2012
Kiruhin  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
|
|
|
|
Kiruhin
|
Дата: 08.06.2012
|
|
|
|
Alexander Mukhanchikov  Выведите, пожалуйста, вместе с 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
|
|
|
|
Kiruhin
|
Дата: 08.06.2012
Mikhail Sukhov  Получается, что то, что вы отписали здесь, неправильно? ага. ошибся. извините.
|
|
|
|
Mikhail Sukhov
|
Дата: 08.06.2012
Можете проверить не Гидру, а в отдельной консольной программе написать такой код: Код
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();
Это покажет, приходят ли данные уже испорченные из Квика.
|
|
|
|
Kiruhin
|
Дата: 08.06.2012
да. конечно. я отпишусь.
|
|
|
|
chudokos
|
Дата: 25.06.2012
Kiruhin  да. конечно. я отпишусь. Получилось ли у вас в какой момент данные уже испорченные приходят?
|
|
|
|
Kiruhin
|
Дата: 02.07.2012
вообще что-то руки до стокшарпа не доходят последнее время, ничего не делал пока. выставил только maxErrorCount в значение побольше ) может, через недельку посмотрю... (от своего обещания не отказываюсь =) )
|
|
|
|
Mikhail Sukhov
|
Дата: 03.07.2012
Kiruhin  вообще что-то руки до стокшарпа не доходят последнее время, ничего не делал пока. выставил только maxErrorCount в значение побольше ) может, через недельку посмотрю... (от своего обещания не отказываюсь =) ) Судя по всему ошибка локальная, и только у вашего брокера. Так что можете не торопится. В любом случае ее устранение от нас вряд ли будет зависеть. Да и стаканы через квик - это та еще дезинформация.
|
|
|
|
XMbIPb
|
Дата: 24.08.2012
|
|
|
|
В 4.1.3 при экспорте из квика с 18:45 до 18:50 вылетает каждую секунду.. ну и до этого пару раз... в #=qBqzAfx4eX6jbAhjwSd62HDxRx7KjXUhZdaqXaKrbhWNK89$cczN7Ybo1P582C383.#=qPNbrzoo63qiPKAB3RxCH5A==(List`1 #=qHaHP4WZSVdKz53Hwzy$ekw==, IEnumerable`1 #=qASUWOKDOCFZ2Wu9LWXkBtQ==, #=qvs0CsnLs_Ss1esfBSm5zwBJaDoBW$uY3FBMC6svegSZeQ2rqGZkXJaXHGH7s1irW #=qMfciDzi6G743_rIzu43_Aw==) в #=qz04YdXG2$YAOxeHvpD93kpzjtGGmn$CBMgLGYgYx3D5hyvyfpJ92$IJuzvbahT9DbHGoXECLGq73jVeWqoM7WA==.#=qhS5pEqj0jxrC3EkM2L2ByLP81D1u7MoFLP3gC9SmO2Ha62X2cRDXdnIw_qFSrI0yPZNVSXkqSrWbXB_ShwaNMF27KENqU9n7vKpFW$rzX$w=(IEnumerable`1 #=qVh5t1g33tQf$GUY1wukgfA==, #=qT_JKyf8jvmdh8CnDd2erv404Kgk89rxorXnimUV3J5ygkrYMLo9XjjmlV7xs65$6 #=qSWB2y1ELx12TguZDCS1CWQ==) в #=qh2YSDa39RBEjCcO4rb2nambbPWQx618j_mhbAjIJkMVjnwGRGU3KGJb5NYvLGTBn.#=qteF9LpJJBLkC9LySoZdzwA==(DateTime #=qZ5Kd0lhJbrY2DbBE04yF9Q==, #=qZHHnzqkYDg7xCyaxj6PR9A==[] #=qh5tCqhElr2D_oYbBKomIaQ==, Boolean #=qSVNcMUfTvym2UYUPwu0xcQ==) в #=qh2YSDa39RBEjCcO4rb2nambbPWQx618j_mhbAjIJkMVjnwGRGU3KGJb5NYvLGTBn.Save(IEnumerable`1 #=qDijncmxOZuMVXEQZJ6Gg9w==) в StockSharp.Hydra.Core.BaseMarketDataSource.SaveDepths(Security security, IEnumerable`1 depths, Boolean raiseDataLoadedEvent) в C:\StockSharp_4.1.3_Sources\Hydra\Core\BaseMarketDataSource.cs:строка 284 в StockSharp.Hydra.Core.TraderMarketDataSource.ProcessNewData() в C:\StockSharp_4.1.3_Sources\Hydra\Core\TraderMarketDataSource.cs:строка 128 в StockSharp.Hydra.Core.TraderMarketDataSource.Load() в C:\StockSharp_4.1.3_Sources\Hydra\Core\TraderMarketDataSource.cs:строка 108 в StockSharp.Hydra.Worker.WorkerProcess.<Download>b__1a(IMarketDataSource source) Можно что-то сделать? Брокер Финам...
|
Автор топика
|
|
|
Alexander
|
Дата: 13.09.2012
В клиринг не надо сохранять стаканы.
|
|
|
|
XMbIPb
|
Дата: 24.10.2012
Alexander Mukhanchikov  В клиринг не надо сохранять стаканы. А в остальное время? Может можно хотя бы как-то эти сообщения перехватить.. чтоб лог не засирать.. хотел вставить пустой обработчик в BaseMarketDataSource.. но боюсь какую-нибудь серьёзную ошибку пропустить.. а откуда конкретно это сообщение в лог заносится найти не могу...
|
Автор топика
|
|
|
Mikhail Sukhov
|
Дата: 24.10.2012
XMbIPb  А в остальное время? Может можно хотя бы как-то эти сообщения перехватить.. чтоб лог не засирать.. хотел вставить пустой обработчик в BaseMarketDataSource.. но боюсь какую-нибудь серьёзную ошибку пропустить.. а откуда конкретно это сообщение в лог заносится найти не могу... Лучше в Квик написать, с вопросом, а почему это в клиринг стакан пляшет.
|
|
|