Для изменения размера нажмите или перетащите

Получение исторических данных

S#.API предоставляет возможность получать исторические свечи, которые можно использовать как для тестирования, так и для построения индикаторов.

Работа с историческими свечами через Connector

  1. Для получения свечей через Connector необходимо создать Connector и добавить в него соответствующий MessageAdapter. Как это сделать с помощью специального контрола описано в пункте Окно настройки подключений.

    Также добавить соответствующий MessageAdapter в Connector можно через код. Например, инициализация адаптера для Interactive Brokers описана в пункте Инициализация адаптера Interactive Brokers и выглядит следующим образом:

    C#
    Connector Connector = new Connector();                
    ...                
    var messageAdapter = new InteractiveBrokersMessageAdapter(Connector.TransactionIdGenerator)
    {
        Address = "<Your Address>".To<EndPoint>(),
    };
    
    Connector.Adapter.InnerAdapters.Add(messageAdapter);
    ...    
    
    Connector.Connect();
    
    ...
  2. Для того, чтобы получить исторические свечи, необходимо вызвать метод SubscribeCandles:

    C#
    ...
    var tf = (TimeSpan)CandlesPeriods.SelectedItem;
    var series = new CandleSeries(typeof(TimeFrameCandle), SelectedSecurity, tf);
    Connector.SubscribeCandles(SelectedSecurity, DateTime.Now.Subtract(TimeSpan.FromTicks(tf.Ticks * 100)), DateTime.Now);
    ...
  3. Исторические свечи передаются через событие CandleSeriesProcessing:

    C#
    ...
    Connector.CandleSeriesProcessing += ProcessCandle;
    ...
  4. Появившиеся свечи можно отрисовывать через графический контрол.

  1. Для получения свечей через MessageAdapter необходимо созлать соответствующий MessageAdapter.

    Например, инициализация адаптера для Interactive Brokers описана в пункте Инициализация адаптера Interactive Brokers и выглядит следующим образом:

    C#
    ...         
    var messageAdapter = new InteractiveBrokersMessageAdapter(Connector.TransactionIdGenerator)
    {
        Address = "<Your Address>".To<EndPoint>(),
    };
    ...
  2. Оборачиваем адаптер Interactive Brokers в адаптер системных идентификатор инструментов SecurityNativeIdMessageAdapter. Это необходимо в том случае, если торговая система работает с числовыми или любыми другими идентификаторами инструментов, отличных от обычного строкового представления.

    C#
    ...
    SecurityNativeIdMessageAdapter _securityAdapter;
    
    if (adapter.IsNativeIdentifiers)
        _securityAdapter = new SecurityNativeIdMessageAdapter(adapter, new InMemoryNativeIdStorage());
    
    var securities = _securityAdapter.GetSecurities(new SecurityLookupMessage
    {
        SecurityId = new SecurityId
        {
            SecurityCode = "EUR"
        }
    });
    
    SecurityMessage eurUsd = null;
    
    foreach (var security in securities)
    {
        if (security.SecurityId.SecurityCode.CompareIgnoreCase("EURUSD"))
            eurUsd = security;
    }
    ...
  3. Теперь по полученному идентификатору инструмента получаем свечи из адаптера:

    C#
    ...
    var candles = adapter.GetCandles(eurUsd.SecurityId, TimeSpan.FromDays(1), DateTimeOffset.Now.AddDays(-100), DateTimeOffset.Now);
    
    foreach (var candle in candles)
    {
        Console.WriteLine(candle);
    }
    ...
См. также

Другие ресурсы