Собственно сабж.
Вот такое сообщение:
Finam | 28.05.2013 13:34:27.981 | Внимание | Обновление остановлено. Ошибка при обновлении базы инструментов источника Finam: System.ArgumentNullException: Value cannot be null. Parameter name: code at StockSharp.BusinessEntities.ExchangeBoard.GetOrCreateBoard(String code, Func`2 createBoard) at StockSharp.Algo.History.Finam.FinamHistorySource.#=q3JIY2NwKNSrLKBnOvNlTNwA2dyab8ChfGyscj96LGXM=(Security #=qFbijq_9RJECNjKQUk6dHBg==) at StockSharp.Algo.History.Finam.FinamHistorySource.GetNewSecurities() at StockSharp.Hydra.Finam.FinamSource.GetNewSecurities() at StockSharp.Hydra.MainWindow.<>c__DisplayClass8f.<ExecutedSourceEnabledChanged>b__8b()
В качестве инструментов Finam указано All@Finam.
Kommentare (10)
Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen
Вчера функция не сработала, зато сегодня загрузка инструментов произошла. Хотя настройки не менялись.
Наткнулся на другой баг:
RTS | 29.05.2013 08:49:09.543 | Ошибка | System.InvalidOperationException: Инструмент VTBR-09.10.09@FORTS имеет недопустимый шаг цены 0.00001. Шаг цены базового актива VTBR@FORTS равен 0.0001. at #=qjJUPQYXIV1yypTgCLhOO$kj1XX2Ux63lzcq90fRouWs6v6Hz2fZSiJRTzCDYlUC9.#=qBwaAlSsB$3N_3DVnrubSBg==(Dictionary
2 #=qAyGv67EQ5ehEKRzYpV0CLA==, DateTime #=qePY3L0KsiNMbdQLq6hkzsA==) at #=qjJUPQYXIV1yypTgCLhOO$kj1XX2Ux63lzcq90fRouWs6v6Hz2fZSiJRTzCDYlUC9.#=q6_M1YKs5sYyXbMRTUR6TlQ==(FTP_Client #=q8OG8aXaBnhpbzqNKHnavnQ==, DateTime #=qYGaUB$AvqlqSHpxjT1WV9A==) at #=qv5AkQyYPMH8DTFfr5SPYf0uH5HdWuo9td2ciOCV$gSzgLQK2v_LNTmkc0ZG8sXs9.#=q1lNyf0T9PmRVEgZzH4Z6XQ==(IDictionary2 #=qs8l_eSsGbOLA1fNJNkxZVA==, FTP_Client #=qmh0K0vUsmhX2vSqFHkHdKg==, DateTime #=qEWsTOYO$uAlzH8yAXKzoCA==) at StockSharp.Algo.History.Rts.RtsHistorySource.#=qeYEnUEyo6U8NNMsYxk3c1ClgDjA3_17bR76SGjM_0Pw=.#=q006xh1jG47VUyf4wEa9IFUkjEM1QHKjhiSFYbO0YQZ8=() at Ecng.Common.Converter.<>c__DisplayClasse.<DoInCulture>b__d() at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Func1 func) at Ecng.Common.Converter.DoInCulture(CultureInfo cultureInfo, Action action) at StockSharp.Algo.History.Rts.RtsHistorySource.LoadTrades(DateTime date, IDictionary2 trades) at StockSharp.Hydra.Rts.RtsSource.Load() at StockSharp.Hydra.Worker.Downloader.Download()Инструмент VTBR-09.10.09@FORTS имеет недопустимый шаг цены 0.00001. Шаг цены базового актива VTBR@FORTS равен 0.0001.
Что может быть за проблема и как ее лечить?
Если в настройках источника установлена галочка "Скачивать данные для инструментов РТС Стандарт", то ее надо снять.
Проблема действительно появляется довольно часто, особенно на инструментах РТС Стандарт, где шаг постоянно скачет и сильно отличается от шага базового инструмента. Если у вас есть какие-то идеи как решить проблему более системно, то предлагайте.
ЗЫ еще выдать ворнинг если цена не кратна шагу.
Правда формат может статься совсем заумным и цена хранится дельтой между ценой начала дня и текущей, деленной на шаг. Тогда и short может хватить... если колебания не слишком высоки.
PS Шаг может быть банально уменьшен в 100 раз. По идее должно хватить на косяки данных.
У меня как то давным давно, вылезла подобная ошибка. Качал с Финама, Сбербанк. Я изменил шаг цены в настройках инструмента, уменьшил в 10 раз. И история закачалась полностью, без ошибок. Может это слишком простой способ, но мне помогло 😀 . Может ошибка другая была. А вообще, где может понадобится шаг цены, для чего он в Гидре? Его же потом в инструменте настраиваешь.
Проверка правильности входящей цены (цена должна быть кратна шагу) это единственная цель наличия шага цены в Гидре?
Может просто округлять до шага цены. У меня появлялась ошибка не из-за изменения цены, а из-за неправильных данных Финама. Можно пользователю предоставить выбор, что делать в данной ситуации. При появлении ошибки вылезает окошко с выбором и пояснениями. Округлить, на случай если пользователь уверен что данные источника неверны, например сбер по цене 99,5631985679 округлит до 99,56. Уменьшить шаг, на случай если шаг цены изменялся официально. Может еще какой вариант. Ну и галочку, "выполнять это действие при появлении ошибки в дальнейшем". Либо добавить такие опции в настройках инструмента.
Гидра умеет сохранять цены, если они не кратны шагу. Получается избыточность, но иногда это необходимо. Я подчеркиваю, иногда, потому что зачастую это означает неправильный поток данных. Особенно, если это касается Финама. Их сервис часто выдает неправильные цены.
Ошибка в этом топике совсем другая. Связана с распарсиванием (а не сохранением) данных о РТС стандарте. Нужно конечно переделать тот код, но РТС стандарт скорее мерт, чем жив. Плюс ко всему, новый формат T+n скорее всего будет иметь отдельное хранилище, так как требует расширенные метаданные.