tmt
|
Дата: 28.01.2012
Code
// название инструмента
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  Code
// название инструмента
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
да, чтот не подключил.. Скинь проект свой в личку или сюда, тогда может помогу, а то мне тяжело (я тоже новичек) а вообще попробуй вот это Code
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 (там вообще нереально получить справочник, по-моему). С этим надо что-то делать. Было бы хорошо иметь локальную базу (справочник) с возможностью переносить между компами. У меня большая просьба к разработчикам - по возможности заняться этой проблемой
|
|
|
|
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 секунды?  С учетом того, что справочник загружается один раз при старте робота?
|
|
|
|
dvoris
|
Дата: 13.02.2012
.. для начала его надо хотя бы загрузить :) На i3 терпимо, но задача запускать приложения на хостингах и VDS, которые вообще не переваривают получение справочника. Да даже PIII 3 Ггц вешает.. я считаю, что не должно быть такого поведения с дефолтными примерами (см.скрин выше). Имхо - с точки зрения здравого смысла нет необходимости каждый раз дергать такой объем данных и конструировать десятки тысяч securities (больша'я часть из которых вообще истекшие). Михаил, хоть ты подскажи, плз, я уже мозг сломал
|
|
|
|
Mikhail Sukhov
|
Дата: 13.02.2012
dvoris  Михаил, хоть ты подскажи, плз, я уже мозг сломал  Надо внутрях СмартКом коннектора менять. Да и в BaseTrader. А сейчас времени нет, Плазой занимаюсь. Можно обменяться тасками.
|
|
|
|
dvoris
|
Дата: 13.02.2012
0:10:21 Всего инструментов: 21793 0:10:21 Истекших инструментов:16299 В сматркоме тоже, конечно, недостаток, что он только целиком вываливает инструменты. Кстати, а как получают справочник в Плазе?
|
|
|
|
dvoris
|
Дата: 13.02.2012
Может попробовать переопределить методы в SmartTrade, которые отвечают за добавление новых securities при соответствующем событии от смарткома? Фильтровать по дате экпирации и не добавлять истекших (там, например, опционные серии с 2010 года тянутся..) Уже уменьшим на 75% справочник и работу по созданию securities.
И ещё, может кто-нибудь намекнет, как сделать сериализацию Security ?
|
|
|
|
Mikhail Sukhov
|
Дата: 13.02.2012
Протухшие инструменты можно как то через СмартТрейд удалить.
|
|
|
|
dvoris
|
Дата: 13.02.2012
что-то беда у меня с англ.раскладкой.. речь про SmartTrade r, конечно
|
|
|
|
dvoris
|
Дата: 14.02.2012
Ура  Подозреваю, что решение кривое, но оно работает. 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
|
|
|