Не понимаю работу метода FinamHistorySource.Refresh
Atom Ответить
24.05.2017


Здравствуйте.

Его описание:
https://doc.stocksharp.ru...istorySource_Refresh.htm

int step = 0;
Security security = new Security { Id = "SBER@TQBR", Board = ExchangeBoard.Micex };
При вызове метода FinamHistorySource.Refresh(securityStorage, security, s => { isCanceled = UpdateLoadingProgressBar(s, security, ++step); }, () => isCanceled); всегда загружается 14787 инструментов, что занимает приличное время.
1) Как правильно использовать параметр criteria
(Тип: StockSharp.BusinessEntities.Security Инструмент, поля которого будут использоваться в качестве фильтра.),
чтобы загружался только нужный security?
2) Какой параметр criteria использовать для групповой загрузки инструментов (например: GAZP@TQBS, SBER@TQBS и SBERP@TQBS)?

3) Если правильно понимаю логику метода:
Допустим
Security security = new Security { Board = ExchangeBoard.Spb};
и FinamHistorySource.Refresh(securityStorage, security, s => { isCanceled = UpdateLoadingProgressBar(s, security, ++step); }, () => isCanceled); то перебор (поиск) инструментов будет только среди бумаг, где ExchangeBoard = Spb? На практике, всё равно грузит все 14787 инструментов.

Теги:


Спасибо:




8 Ответов
Support

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


1) В любом случае будут загружены все инструменты, т.к. criteria - это фильтр..
2) Работает как поиск подстроки, т.е. можно использовать "@TQBS"
3) Что бы прервать загрузку в момент получения нужного инструмента используйте делегат isCanceled
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 25.05.2017
Ответить


1) Какая практическая ценность criteria (зачем он нужен), если в любом случае будут загружены все инструменты? (покажите на примере)
2) Зачем отфильтровывать 1 инструмент?
3) Куда сохраняются отфильтроавнные инструменты?
4) В чём разница между:
Security security = new Security { Id = "SBER@TQBR", Board = ExchangeBoard.Micex };
FinamHistorySource.Refresh(securityStorage, security, s => { isCanceled = UpdateLoadingProgressBar(s, security, ++step); }, () => isCanceled);
и
Security security = new Security ();
FinamHistorySource.Refresh(securityStorage, security, s => { isCanceled = UpdateLoadingProgressBar(s, security, ++step); }, () => isCanceled);
если потом, я всё равно могу получить данные
var dataSecurity = historySource.GetCandles(security, timeFrame, from, to);?


Автор топика
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 25.05.2017
Ответить


5) "2) Работает как поиск подстроки, т.е. можно использовать "@TQBS" " - покажите пожалуйста на примере
Автор топика
Спасибо:

Support

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


1) фильтр только по типу инструмента
2) вопрос не понятен
3) securityStorage
4) см. п1.
5) Security security = new Security { Id = "@TQBR"};
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 26.05.2017
Ответить


2) Имел ввиду, что используя фильтр
Security security = new Security { Id = "SBER@TQBR", Board = ExchangeBoard.Micex };
в securityStorage сохранятся все 14787 инструментов, корме SBER@TQBR. Поэтому "Зачем отфильтровывать 1 инструмент? "
Сейчас прояснилось, что в securityStorage сохранится только SBER@TQBR
5) Security security = new Security { Id = "@TQBR"}; - данный фильтр не оставляет в securityStorage инструменты с Id = "@TQBR".
Автор топика
Спасибо:

Support

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


Функция FinamHistorySource.Refresh неправильно работает или приводит к возникновению ошибки?
Спасибо:

Дмитрий_

Фотография
Курсы Благотворитель
Дата: 29.05.2017
Ответить


Всё работает, просто хочу увеличить эффективность загрузки. Думал, как фильтр (criteria) может помочь с этим?
Покажите пожалуйста на примере, как сделать так, чтобы в securityStorage сохранились, допустим, только фьючерсы FORTS.
Автор топика
Спасибо:

Support

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


Security security = new Security { Type = SecurityTypes.Future };
Спасибо: Дмитрий_


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

loading
clippy