Проблема:
Переход от CandleManager к Connector для работы со свечами. После подписки на новые свечи Trader.CandleSeriesProcessing += Connector_CandleSeriesProcessing ничего не происходит. После подключения логирования выловилась ошибка:
"System.NotImplementedException: Метод или операция не реализована.
в Ecng.Serialization.InMemoryStorage.GetBy[TEntity](SerializationItemCollection by)
в Ecng.Serialization.RelationManyList1.OnGet(SerializationItemCollection by) в Ecng.Serialization.RelationManyList1.Read(SerializationItem by)
в Ecng.Serialization.RelationManyList1.ReadById(Object id) в StockSharp.Algo.Storages.StorageHelper.ReadBySecurityId(IStorageEntityList1 securities, SecurityId securityId)
в StockSharp.Algo.Storages.StorageMessageAdapter.GetSecurity(SecurityId securityId)
в StockSharp.Algo.Storages.StorageMessageAdapter.GetTimeFrameCandleMessageStorage(SecurityId securityId, TimeSpan timeFrame, Boolean allowBuildFromSmallerTimeFrame)
в StockSharp.Algo.Storages.StorageMessageAdapter.LoadMessages(MarketDataMessage msg, Nullable1 from, Nullable1 to, Int64 transactionId)
в StockSharp.Algo.Storages.StorageMessageAdapter.ProcessMarketDataRequest(MarketDataMessage msg)
в StockSharp.Algo.Storages.StorageMessageAdapter.SendInMessage(Message message)
в StockSharp.Messages.MessageAdapterWrapper.SendInMessage(Message message)
в StockSharp.Algo.FilteredMarketDepthAdapter.SendInMessage(Message message)
в StockSharp.Algo.Connector.InMessageChannelOnNewOutMessage(Message message)
в StockSharp.Messages.InMemoryMessageChannel.OnNewOut(KeyValuePair2 item) в Ecng.Collections.BaseInMemoryChannel1.<Open>b__16_1()"
Пробовалось:
Передать в CandleManager экземпляр коннектора, чтобы получать свечи по-старому. Результат тот же. Создать реальный коннектор QuikTrader, с подключением. Безрезультатно.
API 4.14.15, с форматом свечей и инструментов проблем нет(перечисляются, считаются и тп). Мини-пример в приложении.
Комментарии (6)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Добрый день
У вас отсуствует файл с мета-информацией по инструментам. Приложен к данному сообщению. Его необходимо записать в директорию, где присутсвует файл instruments.csv
У вас неправильно написано обработчик свечей. Поле CloseVolume опциональное, и заполняется в редких случаях.
После исправлений ваша программа начала показывать счетчик.
Спасибо! Дайте, пожалуйста, еще пару пояснений по пунктам:
А Connector не примет хранилище на базе CSV, как раньше принимал CandleManager?
По второму, да у меня файл с инструментами instruments.csv (он есть в мини-примере в папке Hystory). Но там формат другой: RIZ8@FORTS;Future;0;10;;1;RIZ8;;RTS@FORTS;;RUB;; (получается вызовом метода _storage.GetSecurityStorage().Save(security, true)) А в файле, который вы прислали формат: RIZ8@FORTS;RIZ8;RIZ8;;;FORTS;;10;;;0;;;;;;;;;;;;;;;;;;;;; (вроде, в таком формате Hydra сохраняет инструменты) Объясните, пожалуйста, разницу.
Ваш вопрос был передан разработчикам. Предварительный ответ - данное хранилище инструментов устаревшее.
Добрый день
Хранилище StorageRegistry.GetSecurityStorage является устаревшим.