← Zurück

Гидра (4.1.13.1) не обновляет инструменты из Финама.

Собственно сабж.

Вот такое сообщение:

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.

War dieses Thema hilfreich?

Thema teilen

Kommentare (10)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

VoDA
VoDA Autor

Вчера функция не сработала, зато сегодня загрузка инструментов произошла. Хотя настройки не менялись.

Наткнулся на другой баг:

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==(Dictionary2 #=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.

Что может быть за проблема и как ее лечить?

VassilSanych
VassilSanych

VoDA: Наткнулся на другой баг: Инструмент VTBR-09.10.09@FORTS имеет недопустимый шаг цены 0.00001. Шаг цены базового актива VTBR@FORTS равен 0.0001. Что может быть за проблема и как ее лечить? Это не "другой баг". Это - постоянный баг. Его постоянно лечат, а он постоянно появляется. Может решить проблему как-нибудь более системно?

esper
esper

VoDA: Инструмент VTBR-09.10.09@FORTS имеет недопустимый шаг цены 0.00001. Шаг цены базового актива VTBR@FORTS равен 0.0001.

Что может быть за проблема и как ее лечить?

Если в настройках источника установлена галочка "Скачивать данные для инструментов РТС Стандарт", то ее надо снять.

Проблема действительно появляется довольно часто, особенно на инструментах РТС Стандарт, где шаг постоянно скачет и сильно отличается от шага базового инструмента. Если у вас есть какие-то идеи как решить проблему более системно, то предлагайте.

VoDA
VoDA Autor

esper: Если у вас есть какие-то идеи как решить проблему более системно, то предлагайте.Лить в историю ВСЕ то, что дает сервер. double все стерпит. 😀

ЗЫ еще выдать ворнинг если цена не кратна шагу.

esper
esper

Иван З.: А вообще, где может понадобится шаг цены, для чего он в Гидре? Его же потом в инструменте настраиваешь. Шаг цены используется для сжатия данных.

VoDA: Лить в историю ВСЕ то, что дает сервер. double все стерпит. 😀 Как сказал выше, данные хранятся не в формате double, а в специальном сжатом виде, сохранять и считывать с некорректным шагом цены их не получится.

VoDA
VoDA Autor

esper: Как сказал выше, данные хранятся не в формате double, а в специальном сжатом виде, сохранять и считывать с некорректным шагом цены их не получится.а сжатие настолько эффективно, что эти затраты людей на программирование и CPU на сжатие/дешифровку окупаются? Прикинул, что int занимает 4 байта, double - 8. Итого сжатие от такой "упаковки" может быть максимум в 2 раза. Если хранится лонгом, то снижения нет вообще.

Правда формат может статься совсем заумным и цена хранится дельтой между ценой начала дня и текущей, деленной на шаг. Тогда и short может хватить... если колебания не слишком высоки.

PS Шаг может быть банально уменьшен в 100 раз. По идее должно хватить на косяки данных.

Иван З.
Иван З.

У меня как то давным давно, вылезла подобная ошибка. Качал с Финама, Сбербанк. Я изменил шаг цены в настройках инструмента, уменьшил в 10 раз. И история закачалась полностью, без ошибок. Может это слишком простой способ, но мне помогло 😀 . Может ошибка другая была. А вообще, где может понадобится шаг цены, для чего он в Гидре? Его же потом в инструменте настраиваешь.

VoDA
VoDA Autor

Иван З.: А вообще, где может понадобится шаг цены, для чего он в Гидре?Хороший вопрос. Присоединяюсь =)

Проверка правильности входящей цены (цена должна быть кратна шагу) это единственная цель наличия шага цены в Гидре?

Иван З.
Иван З.

Может просто округлять до шага цены. У меня появлялась ошибка не из-за изменения цены, а из-за неправильных данных Финама. Можно пользователю предоставить выбор, что делать в данной ситуации. При появлении ошибки вылезает окошко с выбором и пояснениями. Округлить, на случай если пользователь уверен что данные источника неверны, например сбер по цене 99,5631985679 округлит до 99,56. Уменьшить шаг, на случай если шаг цены изменялся официально. Может еще какой вариант. Ну и галочку, "выполнять это действие при появлении ошибки в дальнейшем". Либо добавить такие опции в настройках инструмента.

Mikhail Sukhov
Mikhail Sukhov

Гидра умеет сохранять цены, если они не кратны шагу. Получается избыточность, но иногда это необходимо. Я подчеркиваю, иногда, потому что зачастую это означает неправильный поток данных. Особенно, если это касается Финама. Их сервис часто выдает неправильные цены.

Ошибка в этом топике совсем другая. Связана с распарсиванием (а не сохранением) данных о РТС стандарте. Нужно конечно переделать тот код, но РТС стандарт скорее мерт, чем жив. Плюс ко всему, новый формат T+n скорее всего будет иметь отдельное хранилище, так как требует расширенные метаданные.