Доброго времени суток.
Возник такой вопрос по инструментам. По подписке на событие NewSecurities, получаем весь справочник инструментов.
- Можно ли как то фильтровать то, что мы хотим получить?
- Можно ли как то закэшировать или сохранить на диск все иструменты, что бы потом не тянуть опять с сервера весь справочник.
В S# есть хранилеще, но там вроде можно хранить только исторические данные и сделки.
У кого есть соображения? Спасибо.
Комментарии (22)
Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий
Странно. Вставил код в проект. При компиляции выдает ошибку:
'System.Collections.Generic.IEnumerable<StockSharp.BusinessEntities.Security>' does not contain a definition for 'FirstOrDefault' and no extension method 'FirstOrDefault' accepting a first argument of type 'System.Collections.Generic.IEnumerable<StockSharp.BusinessEntities.Security>' could be found (are you missing a using directive or an assembly reference?)
Я что то не подключил?
да, чтот не подключил.. Скинь проект свой в личку или сюда, тогда может помогу, а то мне тяжело (я тоже новичек)
а вообще попробуй вот это
и ссылки вот эти (что не достает, попробуй вставить, как и с using)
Думаю поможет
Спрашивал об этом, наверное, ещё с год назад. По-прежнему, актуально. Попытка запустить экспорт даже на 3 ГГц Pentium (Prescott) вешает приложение намертво на несколько минут. Чего уж говорить о попытке запуска на VDS (там вообще нереально получить справочник, по-моему). С этим надо что-то делать. Было бы хорошо иметь локальную базу (справочник) с возможностью переносить между компами.
У меня большая просьба к разработчикам - по возможности заняться этой проблемой 😟
Посмотрел у себя на Core2Duo 2.13 ГГц. На боевом сервере через смартком всё загрузилось очень шустро.
На SampleSmart у вас проблема наблюдается?
Да, на любом примере под SmartTrader. Сейчас заметил, на PIII 3 Ггц, 2Гб SampleSmart висел 3 минуты http://shot.qip.ru/004n3f-301rAPJ/
Саш, мы это обсуждали, давно ещё. Отсутствие такой простой и логически необходимой вещи, как локальная база справочников неоправданно сужает применение S# (когда нужно хоститься, например.. ну не заказывать же многоядерный ~3 Ггц сервер для простой задачи, молчу про VDS. Да, на i3 всё нормально, но тоже подвисает секунды 3. С базой этого можно было бы избежать). Самому реализовать сериализацию Securities у меня знаний не хватает, сорри :( Проблема со справочниками лично для меня - краеугольный камень.
Ты предлагаешь оптимизировать эти 3 секунды?😳 С учетом того, что справочник загружается один раз при старте робота?
Так что если действительно нужно - пользуйтесь.
И правда общались :) То-то я думаю ник знакомый
Если бы мог, давно бы сделал. TradingStorage посмотрю. Может поможете с примером? ) А мысль о необходимости встроить кэширование Securities в S# не разделяете?
Не разделяю. SampleStorage совсем не помог разобраться?
Не помог. Сам пример понятен. TradingStorage реализует хранение свечек, стаканов, тиков. Как запихнуть туда инструменты? Как-то использовать SecurityList? Как сохранять на диск..
.. для начала его надо хотя бы загрузить :) На i3 терпимо, но задача запускать приложения на хостингах и VDS, которые вообще не переваривают получение справочника. Да даже PIII 3 Ггц вешает.. я считаю, что не должно быть такого поведения с дефолтными примерами (см.скрин выше). Имхо - с точки зрения здравого смысла нет необходимости каждый раз дергать такой объем данных и конструировать десятки тысяч securities (больша'я часть из которых вообще истекшие). Михаил, хоть ты подскажи, плз, я уже мозг сломал 🤔
Надо внутрях СмартКом коннектора менять. Да и в BaseTrader. А сейчас времени нет, Плазой занимаюсь. Можно обменяться тасками.🙄
0:10:21 Всего инструментов: 21793 0:10:21 Истекших инструментов:16299
😡
В сматркоме тоже, конечно, недостаток, что он только целиком вываливает инструменты. Кстати, а как получают справочник в Плазе?
Может попробовать переопределить методы в SmartTrade, которые отвечают за добавление новых securities при соответствующем событии от смарткома? Фильтровать по дате экпирации и не добавлять истекших (там, например, опционные серии с 2010 года тянутся..) Уже уменьшим на 75% справочник и работу по созданию securities.
И ещё, может кто-нибудь намекнет, как сделать сериализацию Security ?
Протухшие инструменты можно как то через СмартТрейд удалить.
что-то беда у меня с англ.раскладкой.. речь про SmartTrader, конечно 😀
Ура 😎 Подозреваю, что решение кривое, но оно работает.
Т.к. сериализовать Security у меня так и не получилось, ввёл класс SerializableSecurity. Сохраняю в файл бинарную сериализацию Hashtable из SerializableSecurity-c. Можно сделать полную, либо маленькую базу только из актуальных неистекших инструментов.
Загрузка инструментов в Trader.Securities, насколько понимаю, невозможна снаружи, поэтому унаследовал от SmartTrader свой MySmartTrader, в котором добавил метод AddSecurity(Security s). В методе вызывается BaseTrader.GetSecurity метод, который добавляет инструмент в Securities. Если я неправ, и можно добавить инструменты в Securities более правильно, то прошу поправить.
Я бы начал со SmartTrade
Не понял, что мне там надо найти? Настройки->Справочники чисто информативные таблички показывает.
http://stocksharp.com/posts/m/16398/