Вопрос по справочнику инструментов
Atom Ответить
28.01.2012


Доброго времени суток.

Возник такой вопрос по инструментам.
По подписке на событие NewSecurities, получаем весь справочник инструментов.

1. Можно ли как то фильтровать то, что мы хотим получить?
2. Можно ли как то закэшировать или сохранить на диск все иструменты, что бы потом не тянуть опять с сервера весь справочник.

В S# есть хранилеще, но там вроде можно хранить только исторические данные и сделки.

У кого есть соображения?
Спасибо.

Теги:


Спасибо:




22 Ответов
tmt

Фотография
Дата: 28.01.2012
Ответить


Код
// название инструмента
const string secCode = "RIH2";

trader.NewSecurities += securities =>
{
  _instrument = securities.FirstOrDefault(sec => sec.Code == secCode && sec.Type == SecurityTypes.Future); 
  // sec.Code - название инструмента, а sec.Type - тип (фьючерс, опцион, бумага, индекс)
};
Спасибо:

kydna

Фотография
Дата: 28.01.2012
Ответить


tmt Перейти
Код
// название инструмента
const string secCode = "RIH2";

trader.NewSecurities += securities =>
{
  _instrument = securities.FirstOrDefault(sec => sec.Code == secCode && sec.Type == SecurityTypes.Future); 
  // sec.Code - название инструмента, а sec.Type - тип (фьючерс, опцион, бумага, индекс)
};


Странно.
Вставил код в проект. При компиляции выдает ошибку:

'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?)

Я что то не подключил?
Автор топика
Спасибо:

tmt

Фотография
Дата: 28.01.2012
Ответить


да, чтот не подключил.. Скинь проект свой в личку или сюда, тогда может помогу, а то мне тяжело (я тоже новичек)

а вообще попробуй вот это
Код
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Linq;
    using System.Net;
    using System.Threading;
    using System.Windows;
    using Ecng.Collections;
    using Ecng.Common;
    using Ecng.Xaml;
    using StockSharp.Algo;
    using StockSharp.Algo.Strategies;
    using StockSharp.BusinessEntities;
    using StockSharp.Smart;


и ссылки вот эти (что не достает, попробуй вставить, как и с using)

Думаю поможет
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


>> 2. Можно ли как то закэшировать или сохранить на диск все иструменты, что бы потом не тянуть опять с сервера весь справочник.

Спрашивал об этом, наверное, ещё с год назад. По-прежнему, актуально.
Попытка запустить экспорт даже на 3 ГГц Pentium (Prescott) вешает приложение намертво на несколько минут. Чего уж говорить о попытке запуска на VDS (там вообще нереально получить справочник, по-моему).
С этим надо что-то делать. Было бы хорошо иметь локальную базу (справочник) с возможностью переносить между компами.


У меня большая просьба к разработчикам - по возможности заняться этой проблемой Unsure
Спасибо:

Alexander

Фотография
Дата: 13.02.2012
Ответить


Посмотрел у себя на Core2Duo 2.13 ГГц.
На боевом сервере через смартком всё загрузилось очень шустро.

На SampleSmart у вас проблема наблюдается?
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


Да, на любом примере под SmartTrader.
Сейчас заметил, на PIII 3 Ггц, 2Гб SampleSmart висел 3 минуты http://shot.qip.ru/004n3f-301rAPJ/

Саш, мы это обсуждали, давно ещё. Отсутствие такой простой и логически необходимой вещи, как локальная база справочников неоправданно сужает применение S# (когда нужно хоститься, например.. ну не заказывать же многоядерный ~3 Ггц сервер для простой задачи, молчу про VDS. Да, на i3 всё нормально, но тоже подвисает секунды 3. С базой этого можно было бы избежать). Самому реализовать сериализацию Securities у меня знаний не хватает, сорри :( Проблема со справочниками лично для меня - краеугольный камень.

Спасибо:

Alexander

Фотография
Дата: 13.02.2012
Ответить


1) Security - сериализуемый объект.
2) В S# реализовано API для сохранения любых данных.

Так что если действительно нужно - пользуйтесь.
Спасибо:

Alexander

Фотография
Дата: 13.02.2012
Ответить


И правда общались :)
То-то я думаю ник знакомый
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


Если бы мог, давно бы сделал.
TradingStorage посмотрю. Может поможете с примером? )
А мысль о необходимости встроить кэширование Securities в S# не разделяете?
Спасибо:

Alexander

Фотография
Дата: 13.02.2012
Ответить


dvoris Перейти
Если бы мог, давно бы сделал.
TradingStorage посмотрю. Может поможете с примером? )
А мысль о необходимости встроить кэширование Securities в S# не разделяете?


Не разделяю.
SampleStorage совсем не помог разобраться?
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


Не помог. Сам пример понятен. TradingStorage реализует хранение свечек, стаканов, тиков. Как запихнуть туда инструменты?
Как-то использовать SecurityList? Как сохранять на диск..
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.02.2012
Ответить


dvoris Перейти
Да, на i3 всё нормально, но тоже подвисает секунды 3. С базой этого можно было бы избежать


Ты предлагаешь оптимизировать эти 3 секунды?Blink С учетом того, что справочник загружается один раз при старте робота?
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


.. для начала его надо хотя бы загрузить :) На i3 терпимо, но задача запускать приложения на хостингах и VDS, которые вообще не переваривают получение справочника. Да даже PIII 3 Ггц вешает.. я считаю, что не должно быть такого поведения с дефолтными примерами (см.скрин выше). Имхо - с точки зрения здравого смысла нет необходимости каждый раз дергать такой объем данных и конструировать десятки тысяч securities (больша'я часть из которых вообще истекшие).
Михаил, хоть ты подскажи, плз, я уже мозг сломал Huh
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.02.2012
Ответить


dvoris Перейти
Михаил, хоть ты подскажи, плз, я уже мозг сломал Huh


Надо внутрях СмартКом коннектора менять. Да и в BaseTrader. А сейчас времени нет, Плазой занимаюсь. Можно обменяться тасками.RollEyes
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


0:10:21 Всего инструментов: 21793
0:10:21 Истекших инструментов:16299

Mad

В сматркоме тоже, конечно, недостаток, что он только целиком вываливает инструменты.
Кстати, а как получают справочник в Плазе?
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


Может попробовать переопределить методы в SmartTrade, которые отвечают за добавление новых securities при соответствующем событии от смарткома? Фильтровать по дате экпирации и не добавлять истекших (там, например, опционные серии с 2010 года тянутся..) Уже уменьшим на 75% справочник и работу по созданию securities.

И ещё, может кто-нибудь намекнет, как сделать сериализацию Security ?
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 13.02.2012
Ответить


Протухшие инструменты можно как то через СмартТрейд удалить.
Спасибо:

dvoris

Фотография
Дата: 13.02.2012
Ответить


что-то беда у меня с англ.раскладкой.. речь про SmartTrader, конечно BigGrin
Спасибо:

dvoris

Фотография
Дата: 14.02.2012
Ответить


Ура Cool Подозреваю, что решение кривое, но оно работает.

1. Т.к. сериализовать Security у меня так и не получилось, ввёл класс SerializableSecurity. Сохраняю в файл бинарную сериализацию Hashtable из SerializableSecurity-c.
Можно сделать полную, либо маленькую базу только из актуальных неистекших инструментов.

2. Загрузка инструментов в Trader.Securities, насколько понимаю, невозможна снаружи, поэтому унаследовал от SmartTrader свой MySmartTrader, в котором добавил метод AddSecurity(Security s).
В методе вызывается BaseTrader.GetSecurity метод, который добавляет инструмент в Securities. Если я неправ, и можно добавить инструменты в Securities более правильно, то прошу поправить.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.02.2012
Ответить


dvoris Перейти
Если я неправ, и можно добавить инструменты в Securities более правильно, то прошу поправить.


Я бы начал со SmartTrade
Спасибо:

dvoris

Фотография
Дата: 14.02.2012
Ответить


>>Я бы начал со SmartTrade

Не понял, что мне там надо найти? Настройки->Справочники чисто информативные таблички показывает.
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 14.02.2012
Ответить


dvoris Перейти
>>Я бы начал со SmartTrade

Не понял, что мне там надо найти? Настройки->Справочники чисто информативные таблички показывает.


https://stocksharp.ru/posts/m/16398/
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy