Александр3012
|
Дата: 24.04.2017
|
|
|
|
Благодарствую, все работает. Выкладываю, может кому пригодится.
namespace свечи_с_финама_4._3._23 {
class Program {
/// <summary> /// Хранилище инструментов Финама /// </summary> 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(); }
}
private class ExchangeInfoProvider : IExchangeInfoProvider { public IEnumerable<ExchangeBoard> Boards { get { throw new NotImplementedException(); } }
public IEnumerable<Exchange> Exchanges { get { throw new NotImplementedException(); } }
public event Action<ExchangeBoard> BoardAdded; public event Action<Exchange> ExchangeAdded;
public Exchange GetExchange(string code) { throw new NotImplementedException(); }
public ExchangeBoard GetExchangeBoard(string code) { switch (code) { case "TQBR": return ExchangeBoard.MicexTqbr; case "TQBS": return ExchangeBoard.MicexTqbs; case "FORTS": return ExchangeBoard.Forts; default: break; }
return ExchangeBoard.Micex; }
public void Save(ExchangeBoard board) { throw new NotImplementedException(); }
public void Save(Exchange exchange) { throw new NotImplementedException(); }
public event Action<Exchange> ExchangeRemoved; public event Action<ExchangeBoard> BoardRemoved; public void Delete(ExchangeBoard board) { throw new NotImplementedException(); }
public void Delete(Exchange exchange) { throw new NotImplementedException(); }
}
static void Main(string[] args) {
//Security security = new Security //{ // Id = "SBER@TQBR", // Board = ExchangeBoard.Micex //};
//var security = new Security //{ // Id = "SPFB.Si@FORTS", // Board = ExchangeBoard.Forts //};
var security = new Security { Id = "SPFB.RTS@FORTS", Board = ExchangeBoard.Forts };
// Создаем жранилище для нативных идентификаторов (родные идентификаторы инструментов Финама) var nativeIdStorage = new InMemoryNativeIdStorage();
bool isCanceled = false; IExchangeInfoProvider exchangeInfoProvider = new ExchangeInfoProvider(); System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;
// Создаем экземпляр класса FinamHistorySource. Этот объект управляет получением данных с Финама. FinamHistorySource _finamHistorySource = new FinamHistorySource(nativeIdStorage, exchangeInfoProvider);
// Задаем папку, где будут сохранены запрошенные данные.. Если папку не задавать, то // на диске данные сохранены не будут //_finamHistorySource.DumpFolder = @"D:/трейдинг роботы/DataHist"; _finamHistorySource.DumpFolder = "DataHist";
// Выполняем обновление хранилища инструментов Финама // Перед добавлением каждого инструмента в хранилище вызывается функция (делегат) isCanceled, если функция возвращает false, то обновление // хранилища продолжается, если true, то прерывается. // При добавлении нового инструмента в хранилище вызывается функция (делегат) newSecurity. _finamHistorySource.Refresh(new FinamSecurityStorage(security), 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, timeFrame, start, end);
Console.Read();
}
} }
|