Mikhail Sukhov
|
Date: 7/3/2012
Kiruhin:
вообще что-то руки до стокшарпа не доходят последнее время, ничего не делал пока. выставил только maxErrorCount в значение побольше )
может, через недельку посмотрю... (от своего обещания не отказываюсь =) )
Судя по всему ошибка локальная, и только у вашего брокера. Так что можете не торопится. В любом случае ее устранение от нас вряд ли будет зависеть. Да и стаканы через квик - это та еще дезинформация.
|
|
|
|
Thanks:
|
|
|
|
|
|
XMbIPb
|
Date: 8/24/2012
|
|
|
|
|
В 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
|
Date: 9/13/2012
В клиринг не надо сохранять стаканы.
|
|
|
|
Thanks:
|
|
|
|
|
|
XMbIPb
|
Date: 10/24/2012
Alexander Mukhanchikov:
В клиринг не надо сохранять стаканы.
А в остальное время? Может можно хотя бы как-то эти сообщения перехватить.. чтоб лог не засирать.. хотел вставить пустой обработчик в BaseMarketDataSource.. но боюсь какую-нибудь серьёзную ошибку пропустить.. а откуда конкретно это сообщение в лог заносится найти не могу...
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 10/24/2012
XMbIPb:
А в остальное время? Может можно хотя бы как-то эти сообщения перехватить.. чтоб лог не засирать.. хотел вставить пустой обработчик в BaseMarketDataSource.. но боюсь какую-нибудь серьёзную ошибку пропустить.. а откуда конкретно это сообщение в лог заносится найти не могу...
Лучше в Квик написать, с вопросом, а почему это в клиринг стакан пляшет.[blink]
|
|
|
|
Thanks:
|
|
|
|
|
|
Alexander
|
Date: 10/24/2012
Переопределить RaiseProcessDataError. Там фильтровать. Только если так.
Это приходит по идее туда и пишется через this.AddErrorLog
|
|
|
|
Thanks:
|
|
|
|
|
|
XMbIPb
|
Date: 4/4/2013
|
|
|
|
|
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:
|
|
|
|
|
|
Андрей Шабанов
|
Date: 4/5/2013
|
|
|
|
Thanks:
|
|
|
|
|
|
chudokos
|
Date: 4/21/2013
|
|
|
|
|
Андрей Шабанов:
та же проблема.
Аналогично, в 18:45 Гидра вылетает после того как несколько раз приходят ошибки, что бид больше оффера.
Вообще, не знаю, рассматривали ли вы такой вариант, но это можно вынести в настройки, пусть пользователь сам решает останавливать ли закачку или нет. В том, что бид больше оффера не всегда есть проблема. Например, в пред.торговые полчаса на споте все трейдеры ставят заявки, а сделки еще не проходят. Там бид больше оффера может быть спокойно, это не ошибка.
К тому же, пользователь сам может выбирать что он потом с этими стаканами будет делать. Их можно чистить самому или алгоритм обработки данных строить так, чтобы обходить такие вещи. А так получается, данных совсем нет, что есть грустно.
Вы постоянно модифицируете работу с данными, уже очень много сделали, молодцы.
К сожалению, я .NET только осваиваю, надеюсь выйти на хороший уровень и помочь. Из тех идей, которые есть по обработке данных по мимо инструмента чистки стаканов от ситуаций "оффер ниже бида", есть следующие (возможно, у кого-то дойдут руки и желание их сделать):
- Удаление плохих тиков (например, сделка была на 20% выше/ниже предыдущей)
- Проверка и удаление дублированных данных (это алгоритм может быть использован также в следующем пункте)
- Склеивание файлов, записанных их разных источников (как клеить стаканы, учитывая, что время пишется локального компьютера, я не знаю, но идеи есть)
- Приведение времени записанных стаканов ко времени проведения сделок (если это вообще возможно)
- Фильтрация стаканов (аналог создания свечек по сделкам, но тут еще проще - просто отфильтровать часть данных) по разным таймфреймам
- Заполнение данных по пустым дням из других источников (я так понял, что это есть в склеивании данных, но еще не тестировал, можно ли не склеивая заполнить пропуски)
Так образом, блок с манипуляциями будет, на мой взгляд достаточно полным и проведя их можно подойти к тестированию стратегий, будучи уверенным, что данные корректные, полные, время различных видов данных совпадает со временем сервера. Хотя насчет последнего не так все просто, ведь мы видим стакан уже с задержкой и когда он был на сервере биржи мы не знаем точно, а вот время сделки у нас серверное.
|
|
|
|
Thanks:
|
|
|
|
|
|
Mikhail Sukhov
|
Date: 4/22/2013
|
|
|
|
|
chudokos:
В том, что бид больше оффера не всегда есть проблема.
Конкретно в этом случае - это косяк Квика, 100%. Судя по всему, это РТС, и неправильно собирается стакан. Не уверен, стоит ли вообще писать кривые данные.
chudokos:
- Удаление плохих тиков (например, сделка была на 20% выше/ниже предыдущей)
- Проверка и удаление дублированных данных (это алгоритм может быть использован также в следующем пункте)
- Склеивание файлов, записанных их разных источников (как клеить стаканы, учитывая, что время пишется локального компьютера, я не знаю, но идеи есть)
- Приведение времени записанных стаканов ко времени проведения сделок (если это вообще возможно)
- Фильтрация стаканов (аналог создания свечек по сделкам, но тут еще проще - просто отфильтровать часть данных) по разным таймфреймам
- Заполнение данных по пустым дням из других источников (я так понял, что это есть в склеивании данных, но еще не тестировал, можно ли не склеивая заполнить пропуски)
- Это можно сделать самостоятельно через Storage API
- Что есть дублированные данные?
- Нет смысла в том плане, что овчинка не стоит выделки.
- Опять же, нет смысла, так как есть более правильные пути.
- См пункт 1.
- Не совсем понятно, что предлагается сделать
chudokos:
Так образом, блок с манипуляциями будет, на мой взгляд достаточно полным и проведя их можно подойти к тестированию стратегий, будучи уверенным, что данные корректные, полные, время различных видов данных совпадает со временем сервера. Хотя насчет последнего не так все просто, ведь мы видим стакан уже с задержкой и когда он был на сервере биржи мы не знаем точно, а вот время сделки у нас серверное.
Если мы говорим про Квик, то да, данные без метки времени. Если брать от биржи, то конечно же с меткой.
|
|
|
|
Thanks:
|
|
|
|
|