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

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


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


Tags:


Thanks:


< 1 2 3 4  >
Mikhail Sukhov

Avatar
Date: 7/3/2012
Reply


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

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

Thanks:

XMbIPb

Avatar
Date: 8/24/2012
Reply


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

в #=qBqzAfx4eX6jbAhjwSd62HDxRx7KjXUhZdaqXaKrbhWNK89$cczN7Ybo1P582C383.#=qPNbrzoo63qiPKAB3RxCH5A==(List1 #=qHaHP4WZSVdKz53Hwzy$ekw==, IEnumerable1 #=qASUWOKDOCFZ2Wu9LWXkBtQ==, #=qvs0CsnLs_Ss1esfBSm5zwBJaDoBW$uY3FBMC6svegSZeQ2rqGZkXJaXHGH7s1irW #=qMfciDzi6G743_rIzu43_Aw==) в #=qz04YdXG2$YAOxeHvpD93kpzjtGGmn$CBMgLGYgYx3D5hyvyfpJ92$IJuzvbahT9DbHGoXECLGq73jVeWqoM7WA==.#=qhS5pEqj0jxrC3EkM2L2ByLP81D1u7MoFLP3gC9SmO2Ha62X2cRDXdnIw_qFSrI0yPZNVSXkqSrWbXB_ShwaNMF27KENqU9n7vKpFW$rzX$w=(IEnumerable1 #=qVh5t1g33tQf$GUY1wukgfA==, #=qT_JKyf8jvmdh8CnDd2erv404Kgk89rxorXnimUV3J5ygkrYMLo9XjjmlV7xs65$6 #=qSWB2y1ELx12TguZDCS1CWQ==) в #=qh2YSDa39RBEjCcO4rb2nambbPWQx618j_mhbAjIJkMVjnwGRGU3KGJb5NYvLGTBn.#=qteF9LpJJBLkC9LySoZdzwA==(DateTime #=qZ5Kd0lhJbrY2DbBE04yF9Q==, #=qZHHnzqkYDg7xCyaxj6PR9A==[] #=qh5tCqhElr2D_oYbBKomIaQ==, Boolean #=qSVNcMUfTvym2UYUPwu0xcQ==) в #=qh2YSDa39RBEjCcO4rb2nambbPWQx618j_mhbAjIJkMVjnwGRGU3KGJb5NYvLGTBn.Save(IEnumerable1 #=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.b__1a(IMarketDataSource source)

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

Thanks:

Alexander

Avatar
Date: 9/13/2012
Reply


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

Thanks:

XMbIPb

Avatar
Date: 10/24/2012
Reply


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

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

Thanks:

Mikhail Sukhov

Avatar
Date: 10/24/2012
Reply


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

Лучше в Квик написать, с вопросом, а почему это в клиринг стакан пляшет.[blink]

Thanks:

Alexander

Avatar
Date: 10/24/2012
Reply


Переопределить RaiseProcessDataError. Там фильтровать. Только если так. Это приходит по идее туда и пишется через this.AddErrorLog

Thanks:

XMbIPb

Avatar
Date: 4/4/2013
Reply


Alexander Mukhanchikov: Переопределить RaiseProcessDataError. А где он теперь находится? Просто я тогда так и не докопался.. а сейчас(в 4.1.9) гидра стала падать из-за этой ошибки.. специально останавливаю экспорт в 18:45.. но пока он останавливается, успевает прилететь этот эксепшн и гидра падает..

18:45:00.020| |Quik |Останавливается. 18:45:00.241| |Quik |Для GDU3@RTS загружено 18 стаканов. 18:45:00.450| |Quik |Для GDM3@RTS загружено 28 стаканов. 18:45:00.656| |Quik |Для CHMF@EQNL загружено 65 стаканов. 18:45:00.941| |Quik |Для SRU3@RTS загружено 13 стаканов. 18:45:01.141| |Quik |Для VTBR@SMAL загружено 5 стаканов. 18:45:01.358| |Quik |Для AKRN@EQNL загружено 9 стаканов. 18:45:01.557| |Quik |Для RI135000BP3@RTS загружено 51 стаканов. 18:45:01.757| |Quik |Для RI150000BE3@RTS загружено 1 стаканов. 18:45:01.948| |Quik |Для RIU3@RTS загружено 46 стаканов. 18:45:02.159| |Quik |Для TNBP@EQNE загружено 3 стаканов. 18:45:02.385| |Quik |Для SVM3@RTS загружено 11 стаканов. 18:45:02.592| |Quik |Для MFGSP@EQNE загружено 1 стаканов. 18:45:02.804| |Quik |Для MTLRP@EQBR загружено 70 стаканов. 18:45:03.004| |Quik |Для AVAZ@EQNL загружено 15 стаканов. 18:45:03.224| |Quik |Для MSNG@EQBR загружено 87 стаканов. 18:45:03.447| |Quik |Для GRAZ@EQNL загружено 8 стаканов. 18:45:03.730| |Quik |Для MRSB@EQNE загружено 1 стаканов. 18:45:03.933| |Quik |Для ODVA@EQNE загружено 1 стаканов. 18:45:04.298| |Quik |Для SNGS@TQNL загружено 3 стаканов. 18:45:04.501| |Quik |Для RI150000BD3@RTS загружено 4 стаканов. 18:45:04.706| |Quik |Для TGKD@EQBS загружено 8 стаканов. 18:45:04.940| |Quik |Для RI130000BQ3@RTS загружено 13 стаканов. 18:45:05.165| |Quik |Для ROSN@TQNL загружено 2 стаканов. 18:45:05.381| |Quik |Для RBCM@EQNL загружено 12 стаканов. 18:45:05.576| |Quik |Для RI145000BD3@RTS загружено 8 стаканов. 18:45:05.783| |Quik |Для RTKMP@EQBR загружено 5 стаканов. 18:45:06.007| |Quik |Для MGVM@EQNE загружено 16 стаканов. 18:45:06.206| |Quik |Для RI145000BF3@RTS загружено 5 стаканов. 18:45:06.476| |Quik |Для AFKS@EQNL загружено 11 стаканов. 18:45:06.710| |Quik |Для BANE@EQNE загружено 7 стаканов. 18:45:06.923| |Quik |Для BANEP@EQNE загружено 10 стаканов. 18:45:07.161| |Quik |Для TRNFP@EQNL загружено 19 стаканов. 18:45:07.364| |Quik |Для DIXY@EQNL загружено 1 стаканов. 18:45:07.581| |Quik |Для REBR@EQNE загружено 2 стаканов. 18:45:07.837| |Quik |Для MOEX@EQLV загружено 3 стаканов. 18:45:08.058| |Quik |Для MSTT@EQNL загружено 6 стаканов. 18:45:08.281| |Quik |Для MVID@EQNL загружено 4 стаканов. 18:45:08.523| |Quik |Для NMTP@EQNL загружено 26 стаканов. 18:45:08.742| |Quik |Для PHOR@EQBR загружено 10 стаканов. 18:45:08.987| |Quik |Для PIKK@EQBR загружено 12 стаканов. 18:45:09.217| |Quik |Для RUALR@EQBR загружено 12 стаканов. 18:45:34.073| |Quik |Сохранение стаканов для SNGSP@EQNL. 18:45:34.790| |Quik |Сохранение стаканов для SiU3@RTS. 18:45:34.795| |Quik |Сохранение стаканов для RI135000BP3@RTS. 18:45:34.870| |Quik |Сохранение стаканов для LKM3@RTS. 18:45:35.011| |Quik |Сохранение стаканов для RIM3@RTS. 18:45:35.089| |Quik |Сохранение стаканов для FEES@EQNL. 18:45:35.104| |Quik |Сохранение стаканов для GAZP@EQNE. 18:45:35.179|Error |Unhandled Exception|System.ArgumentException: Лучший бид 130,38 больше или равен лучшему офферу 128,35 во время 03.04.2013 18:44:57. Parameter name: depths at #=qhBqOxQ5SIAbyY2y6N4BACFDFlQ_j1Q8yNEtvBOYqije_f5J8ROizhDxiO305Qb7J.#=qr_KzM1xL4C_LNzBQG0cU1w==(List1 #=qtNWXcGR9OrC167LNZ6sqwA==, IEnumerable1 #=qSHBGsvI2XWoCf1iMdzkfkQ==, #=qE5zo4_Ejp278xyk1AZp_K4lW5e2aEbLnSXrHx0bkG0IPV$BZ64GnXHWVHNZJ$akP #=qxK5OV7scqRijV8foIwhTOg==) at #=qUIMgopRPM50_snA_IW7lP5vnYLX4Ycjk3tlkUJmO$df$BhOICeXYRcKE6VPTBUvWor_HO$pMaUHIccrT1sunXQ==.#=qtPi_jCcTQy54OokHmjQzTrWtsFtcY3JYPA5Pimp6VuHCD0uL37gJzv$_$IzMNYh_eeJNWPUUDx9E2sMiBuYQgLprnVeNO_L1hHWagWtxbeo=(IEnumerable1 #=qWIwOd8WCA_EX_3JPloWbeQ==, #=q9h_Acx51llzEuCgXXohQKifmacT4UQOfLLvGdIR0x1XzExFE4ZUGkV6nMHXy$6I4 #=q1bBiLtrF41cu9bGzzYSWkA==) at #=qJM9xtd9HT4k2cHOn7Ak7RSOm$uYCug_vtlSEqSqyO5XEdM3kbiV34ZAsRb1B0dzg.#=q1Mggw99G5hfFdA9JpoWTIQ==(DateTime #=qZGVM4ZzDSX8cnal_sirMTA==, #=qJKlgmjPaEu7aOWykYJHW0w==[] #=qIsf10FO4RN0C3UDhi1Bpbw==, Boolean #=qg58umgjgqmnnboxFNnaEVQ==) at #=qJM9xtd9HT4k2cHOn7Ak7RSOm$uYCug_vtlSEqSqyO5XEdM3kbiV34ZAsRb1B0dzg.Save(IEnumerable1 #=qlKNnsuKM7O8284FGVcOKnA==) at StockSharp.Hydra.Core.BaseMarketDataSource.SaveDepths(Security security, IEnumerable1 depths, Boolean raiseDataLoadedEvent) in c:\Dropbox\CODING\StockSharp\StockSharp\trunk\Hydra\Core\BaseMarketDataSource.cs:line 264 at StockSharp.Hydra.Core.TraderMarketDataSource1.SaveValues(IDictionary2 data, Func1 getNewValues, Func4 saveValues) in c:\Dropbox\CODING\StockSharp\StockSharp\trunk\Hydra\Core\TraderMarketDataSource.cs:line 111 at StockSharp.Hydra.Core.TraderMarketDataSource1.ProcessNewData() in c:\Dropbox\CODING\StockSharp\StockSharp\trunk\Hydra\Core\TraderMarketDataSource.cs:line 120 at StockSharp.Hydra.Core.TraderMarketDataSource`1.Stop() in c:\Dropbox\CODING\StockSharp\StockSharp\trunk\Hydra\Core\TraderMarketDataSource.cs:line 85 at StockSharp.Hydra.Worker.Downloader.Finish() in c:\Dropbox\CODING\StockSharp\StockSharp\trunk\Hydra\Hydra\Worker.cs:line 252 at StockSharp.Hydra.Worker.Downloader.Download() in c:\Dropbox\CODING\StockSharp\StockSharp\trunk\Hydra\Hydra\Worker.cs:line 216 at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.TimerQueueTimer.CallCallback() at System.Threading.TimerQueueTimer.Fire() at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() at System.Threading.ThreadPoolWorkQueue.Dispatch()

И так каждый день...

Thanks:

Андрей Шабанов

Avatar
Date: 4/5/2013
Reply


та же проблема.

Thanks:

chudokos

Avatar
Date: 4/21/2013
Reply


Андрей Шабанов: та же проблема.

Аналогично, в 18:45 Гидра вылетает после того как несколько раз приходят ошибки, что бид больше оффера. Вообще, не знаю, рассматривали ли вы такой вариант, но это можно вынести в настройки, пусть пользователь сам решает останавливать ли закачку или нет. В том, что бид больше оффера не всегда есть проблема. Например, в пред.торговые полчаса на споте все трейдеры ставят заявки, а сделки еще не проходят. Там бид больше оффера может быть спокойно, это не ошибка. К тому же, пользователь сам может выбирать что он потом с этими стаканами будет делать. Их можно чистить самому или алгоритм обработки данных строить так, чтобы обходить такие вещи. А так получается, данных совсем нет, что есть грустно.

Вы постоянно модифицируете работу с данными, уже очень много сделали, молодцы. К сожалению, я .NET только осваиваю, надеюсь выйти на хороший уровень и помочь. Из тех идей, которые есть по обработке данных по мимо инструмента чистки стаканов от ситуаций "оффер ниже бида", есть следующие (возможно, у кого-то дойдут руки и желание их сделать):

  • Удаление плохих тиков (например, сделка была на 20% выше/ниже предыдущей)
  • Проверка и удаление дублированных данных (это алгоритм может быть использован также в следующем пункте)
  • Склеивание файлов, записанных их разных источников (как клеить стаканы, учитывая, что время пишется локального компьютера, я не знаю, но идеи есть)
  • Приведение времени записанных стаканов ко времени проведения сделок (если это вообще возможно)
  • Фильтрация стаканов (аналог создания свечек по сделкам, но тут еще проще - просто отфильтровать часть данных) по разным таймфреймам
  • Заполнение данных по пустым дням из других источников (я так понял, что это есть в склеивании данных, но еще не тестировал, можно ли не склеивая заполнить пропуски)

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

Thanks:

Mikhail Sukhov

Avatar
Date: 4/22/2013
Reply


chudokos: В том, что бид больше оффера не всегда есть проблема.

Конкретно в этом случае - это косяк Квика, 100%. Судя по всему, это РТС, и неправильно собирается стакан. Не уверен, стоит ли вообще писать кривые данные.

chudokos:

  • Удаление плохих тиков (например, сделка была на 20% выше/ниже предыдущей)
  • Проверка и удаление дублированных данных (это алгоритм может быть использован также в следующем пункте)
  • Склеивание файлов, записанных их разных источников (как клеить стаканы, учитывая, что время пишется локального компьютера, я не знаю, но идеи есть)
  • Приведение времени записанных стаканов ко времени проведения сделок (если это вообще возможно)
  • Фильтрация стаканов (аналог создания свечек по сделкам, но тут еще проще - просто отфильтровать часть данных) по разным таймфреймам
  • Заполнение данных по пустым дням из других источников (я так понял, что это есть в склеивании данных, но еще не тестировал, можно ли не склеивая заполнить пропуски)
  1. Это можно сделать самостоятельно через Storage API
  2. Что есть дублированные данные?
  3. Нет смысла в том плане, что овчинка не стоит выделки.
  4. Опять же, нет смысла, так как есть более правильные пути.
  5. См пункт 1.
  6. Не совсем понятно, что предлагается сделать

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

Если мы говорим про Квик, то да, данные без метки времени. Если брать от биржи, то конечно же с меткой.

Thanks:
< 1 2 3 4  >

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

loading
clippy