← Atrás

Не понимаю работу метода FinamHistorySource.Refresh

C#

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

Его описание: http://doc.stocksharp.ru/html/M_StockSharp_Algo_History_Russian_Finam_FinamHistorySource_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 ; и FinamHistorySource.Refresh(securityStorage, security, s => { isCanceled = UpdateLoadingProgressBar(s, security, ++step); }, () => isCanceled); то перебор (поиск) инструментов будет только среди бумаг, где ExchangeBoard = Spb? На практике, всё равно грузит все 14787 инструментов.

Comentarios (8)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Support
Support
  1. В любом случае будут загружены все инструменты, т.к. criteria - это фильтр..
  2. Работает как поиск подстроки, т.е. можно использовать "@TQBS"
  3. Что бы прервать загрузку в момент получения нужного инструмента используйте делегат isCanceled
Дмитрий_
Дмитрий_ Autor
  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);?
Дмитрий_
Дмитрий_ Autor
  1. "2) Работает как поиск подстроки, т.е. можно использовать "@TQBS" " - покажите пожалуйста на примере
Support
Support
  1. фильтр только по типу инструмента
  2. вопрос не понятен
  3. securityStorage
  4. см. п1.
  5. Security security = new Security ;
Дмитрий_
Дмитрий_ Autor
  1. Имел ввиду, что используя фильтр Security security = new Security { Id = "SBER@TQBR", Board = ExchangeBoard.Micex }; в securityStorage сохранятся все 14787 инструментов, корме SBER@TQBR. Поэтому "Зачем отфильтровывать 1 инструмент? " Сейчас прояснилось, что в securityStorage сохранится только SBER@TQBR
  2. Security security = new Security ; - данный фильтр не оставляет в securityStorage инструменты с Id = "@TQBR".
Support
Support

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

Дмитрий_
Дмитрий_ Autor

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

Support
Support

Security security = new Security ;

Дмитрий_