using StockSharp.Algo; using StockSharp.Algo.Candles.Compression; using StockSharp.Algo.History.Russian.Finam; using StockSharp.Algo.Storages; using StockSharp.BusinessEntities; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace FinamLoader { class Program { /// /// Хранилище инструментов Финама /// private class FinamSecurityStorage : CollectionSecurityProvider, ISecurityStorage { public FinamSecurityStorage(Security security) : base(new[] { security }) { } void ISecurityStorage.Save(Security security) { } void ISecurityStorage.Delete(Security security) { throw new NotSupportedException(); } void ISecurityStorage.DeleteBy(Security criteria) { throw new NotSupportedException(); } IEnumerable ISecurityStorage.GetSecurityIds() { return Enumerable.Empty(); } } static void Main(string[] args) { Security security = new Security { Id = "SBER@TQBR", Board = ExchangeBoard.Micex }; // Создаем экземпляр класса FinamHistorySource. Этот объект управляет получением данных с Финама. FinamHistorySource _finamHistorySource = new FinamHistorySource(); // Создаем жранилище для нативных идентификаторов (родные идентификаторы инструментов Финама) var nativeIdStorage = new InMemoryNativeIdStorage(); bool isCanceled = false; // Обновляет // _finamHistorySource.Refresh(new FinamSecurityStorage(security), nativeIdStorage, security, newsec, canceled); // Выполняем обновление хранилища инструментов Финама // Перед добавлением каждого инструмента в хранилище вызывается функция (делегат) isCanceled, если функция возвращает false, то обновление // хранилища продолжается, если true, то прерывается. // При добавлении нового инструмента в хранилище вызывается функция (делегат) newSecurity. _finamHistorySource.Refresh(new FinamSecurityStorage(security), nativeIdStorage, security, s => isCanceled = s.Id == security.Id, () => isCanceled); var timeFrame = TimeSpan.FromMinutes(1); var now = DateTime.Now; var end = new DateTime(now.Year, now.Month, now.Day, 0, 0, 0); var start = end.AddDays(-1); // Запрашиваем свечи с Финама var candles = _finamHistorySource.GetCandles(security, nativeIdStorage, timeFrame, start, end); Console.Read(); } } }