Загрузка исторических данных
Atom
16.01.2017
swnike


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

Мне для торговли необходимо получать исторические свечные данные и тут бы метод закачки свечей с сайта финама как раз бы помог. Но я не могу разобраться в методах, поскольку:

  1.  Видео-урок 4 устарел. Последняя версия  библиотеки (4.3.19.5) используют модифицированную функцию GetCandle , одним из параметров которой является интерфейс INativeIdStorage. Кроме того все последующие версии библиотек ( после с 4.2.10) не используют явно заданное хранилище, которое описывается в видео-уроке. (хотелось бы понять как это сейчас работает. Нужно создавать свой класс для реализации интерфейса?).
    
  2.  Попытка запустить проект загрузки исторических данных (CandleDownloadUsing) из разных решений StockSharp.Edu не увенчалась успехом – в большинстве случаях в предшествующих версиях библиотек при выполнении метода GetCandle  вызывается исключение – “не удалось соединиться с удаленным сервером”. Почему появляется такое исключение? Сменились адреса серверов?
    
  3.  Проект CandleDownloadUsing в последней версии вообще не модифицирован, что вызывает исключение при обращении к несуществующим полям. 
    

Есть возможность сделать рабочий пример CandleDownloadUsing с расширенными комментариями?




Спасибо:


1 2  >
Mikhail Sukhov

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


Чтобы ваши сообщения были видны технической поддержке, предлагаем вам пройти процедуру, описанную здесь http://stocksharp.ru/articles/7809/support-20/

Спасибо:

Support

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


Пример во вложении... Также можете посмотреть пример SampleHistoryTesting.

Program.cs 3 KB (694)
Спасибо: swnike

Александр3012

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


Благодарю, с nativeIdStorage, вроде, стало понятнее, но пример во вложении не работает, видимо он собран на устаревшей версии библиотеки. Теперь в FinamHistorySource метод Refresh требует ещё провайдер бирж, что это и зачем - опять не понятно. Большая просьба, сделайте на свежей библиотеке маленькую программку качающую исторические свечи с финама или любого ресурса, чтоб можно было разобраться и поправить в своих роботов, а то в курсах все устаревшее, а без информации не специалисту разобраться не просто.

Спасибо:

Support

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


Какую версию s# используете?

Спасибо:

Александр3012

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


4.3.21

Спасибо:

Александр3012

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


4.3.21

Спасибо:

Александр3012

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


Уважаемая техподдержка, ответьте что-нибудь. Разъясните на примере или просто словами. Не понятно как с новой библиотекой закачивать исторические данные.

Спасибо:

Support

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


Реализуйте IExchangeInfoProvider как показано в следующем примере или используйте предыдущую версию...

private class ExchangeInfoProvider : IExchangeInfoProvider { public IEnumerable Boards => throw new NotImplementedException();

        public IEnumerable<Exchange> Exchanges => 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;
                default:
                    break;
            }

            return ExchangeBoard.Micex;
        }

        public void Save(ExchangeBoard board)
        {
            throw new NotImplementedException();
        }

        public void Save(Exchange exchange)
        {
            throw new NotImplementedException();
        }
    }

IExchangeInfoProvider exchangeInfoProvider = new ExchangeInfoProvider(); bool isCanceled = false; _finamHistorySource.Refresh(finamSecurityStorage, nativeIdStorage, exchangeInfoProvider, new Security(), s => , () => isCanceled);

Спасибо:

Александр3012

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


Уважаемая техподдержка, добрый день. Собрал на новой библиотеке 4.3.23 пример для закачки свечей с финама, подправил его под нее, все заработало, но вот такая непонятная штука происходит: Закачиваю свечи для сбера - все работает, качаешь фьючерс - выдает ошибку. "Необработанное исключение типа "System.ArgumentException" в StockSharp.Algo.History.dll Дополнительные сведения: Инструмент RIM7@FORTS не содержит идентификатор Finam (market)." Подскажите как победить эту беду. Ошибка выпадает на предпоследней строчке "var candles = _finamHistorySource.GetCandles(security, timeFrame, start, end);"

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();
        }


        //IEnumerable<string> ISecurityStorage.GetSecurityIds()
        //{
        //    return Enumerable.Empty<string>();
        //}
    }



    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;
                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
        //};

        Security security = new Security
        {
            Id = "RIM7@FORTS",
            Board = ExchangeBoard.Forts
        };
      

        // Создаем жранилище для нативных идентификаторов (родные идентификаторы инструментов Финама)
        var nativeIdStorage = new InMemoryNativeIdStorage();

        bool isCanceled = false;
        // Обновляет 
        //  _finamHistorySource.Refresh(new FinamSecurityStorage(security), nativeIdStorage, security, newsec, canceled);

        

        IExchangeInfoProvider exchangeInfoProvider = new ExchangeInfoProvider();
        System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

        // Создаем экземпляр класса FinamHistorySource. Этот объект управляет получением данных с Финама.
        FinamHistorySource _finamHistorySource = new FinamHistorySource(nativeIdStorage, exchangeInfoProvider);

        // Задаем папку, где будут сохранены запрошенные данные.. Если папку не задавать, то
        // на диске данные сохранены не будут
        //_finamHistorySource.DumpFolder = @"D:/трейдинг роботы/4.3.19.5/Исторические Свечи/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();

    }

}

}

Спасибо:

Support

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


Проверим..

Спасибо:
1 2  >

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

loading
clippy