← Zurück

Плеяда вопросов по манипуляции с историческими данными

Добрый день

Прошерстил документацию и не нашёл ответы на следующие вопросы:

  1. Как сохранённые локально исторические сделки конвертировать в 1-,5- и т.д.-минутные свечи 1.1) Используя коннектор? 1.2) И не используя коннектор?

2.1) Как и откуда можно получить исторический стакан по инструменту? 2.2) Исторический стакан я могу получить только из ордер лога и больше никак?

  1. Как и откуда получить исторические новости по инструменту?

Kommentare (11)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

Support
Support

Добрый день

Вы можете использовать нашу программу Гидра. Она позволяет строить свечи единоразово, так и постоянно через задачу Конвертер.

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

Добрый день

Для саморазвития хотелось узнать внутреннюю реализацию. По вопросу 1.2) на форуме нашёл:

var manager = new CandleManager(new SomeBuilderSource(ticks)); CandleSeries series = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromMinutes(5)); manager.Start(series); var candles = manager.GetCandles(series);

Support
Support

Да вы можете использовать наследник CandleBuilder для генерации свечей из исходных данных.

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

Подскажите пожалуйста.

Как связать наследника CandleBuilder - TimeFrameCandleBuilder со скаченными сделками и CandleManager?

Нашёл только вариант для более ранних версий S#.

var trades = Core.Storage.GetTradeStorage(Security).Load(Core.Yesterday, Core.Yesterday + TimeSpan.FromTicks(TimeSpan.TicksPerDay - 1)); var bld = new CandleBuilder(new RawConvertableCandleBuilderSource<Trade>(trades)) ; bld.CandlesStarted += (t, c) => { var candles = c.Cast<TimeFrameCandle>(); Storage.Save(candles);

Core.LogMessage(candles.Count() + " свечек построено для " + this);

bld.Dispose();

}; bld.RegisterTimeFrameCandles(Security, TimeFrame);

Support
Support

Можете использовать одну из данных перегрузок http://doc.stocksharp.ru/html/Overload_StockSharp_Algo_Candles_CandleHelper_ToCandles.htm

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

Спасибо! Разобрался.

Следующий вопрос 1.1) Как сохранённые локально исторические сделки конвертировать в 1-,5- и т.д.-минутные свечи, используя коннектор?

Есть следующий код

var portfolio = new Portfolio { Name = "test account", BeginValue = 1000000, }; StorageRegistry storage = new StorageRegistry() { DefaultDrive = new LocalMarketDataDrive() }; HistoryEmulationConnector _connector = new HistoryEmulationConnector(new[] , new[] ); // Set history range _connector.HistoryMessageAdapter.StartDate = new DateTime(2018, 3, 26); _connector.HistoryMessageAdapter.StopDate = new DateTime(2018, 3, 27); // Set market time freq as time frame _connector.MarketTimeChangedInterval = TimeSpan.FromMinutes(1.0); _connector.InitializeStorage(new EntityRegistry(), storage);

        var candleManager = new CandleManager(_connector);

        candleManager.Start(series);
        _connector.Start();
        _connector.Connect();

        candleManager
            .WhenCandlesFinished(series)
            .Do(ProcessCandle)
            .Apply();

в котором в метод

private void ProcessCandle(Candle obj) { throw new NotImplementedException(); }

не приходит ни одной свечи. Почему так происходит?

Support
Support

Возможно у вас не запущено тестирование на истории. Вы можете посмотреть работу со свечами на истории в примере SampleHistoryTesting

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

Добрый день Верно, не было запущено. Спасибо!

Следующий вопрос: 2.1) Как получить исторический стакан по инструменту?

Если я правильно понял: 2.1.1) Российский рынок. Только через ордер лог, запросив его платно у Московской Биржи? 2.1.2) Американский рынок (NYSE, NASDAQ). Нет информации.

Support
Support

Добрый день

К сожалению мы не располагаем подобной информацией. Рекомендуем вам обратиться к вашему брокеру или на биржу.

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

Ок, крайний вопрос. 3) Как и откуда получить исторические новости по инструменту?

Support
Support

Добрый день

К сожалению мы не располагаем подобной информацией. Рекомендуем вам обратиться к вашему брокеру или на биржу.