﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Использование готовой коллекции данных в HistoryEmulationConnector</title>
  <id>~/topic/8149/ispolzovanie-gotovoi-kollektsii-dannyh-v-historyemulationconnector/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-04T09:23:55Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=8149" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/39852/</id>
    <title type="text">ок. </title>
    <published>2017-04-26T13:55:56Z</published>
    <updated>2017-04-26T13:55:56Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;ок.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39851/</id>
    <title type="text">Спасибо, что подсказали про смещение на 1 день. Вроде разобрался. Если период в HistoryMessageAdapte...</title>
    <published>2017-04-26T02:58:00Z</published>
    <updated>2017-04-26T02:58:00Z</updated>
    <author>
      <name>Pelmen32</name>
      <uri>https://stocksharp.ru/users/95692/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Спасибо, что подсказали про смещение на 1 день. Вроде разобрался.
Если период в HistoryMessageAdapter задавать в формате UTC, то пропущенных дней нет.&lt;/p&gt;
&lt;p&gt;Период указываю следующим образом:
[code]_historyConnector.HistoryMessageAdapter.StartDate = d1.Date.ToUniversalTime();
_historyConnector.HistoryMessageAdapter.StopDate = d2.Date.ToUniversalTime().AddDays(1);[/code]&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39846/</id>
    <title type="text">Чисто логически можно предположить, что неделя на 1 день смещена... А как время в данных записано? К...</title>
    <published>2017-04-25T13:16:24Z</published>
    <updated>2017-04-25T13:16:51Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Чисто логически можно предположить, что неделя на 1 день смещена... А как время в данных записано? Какое там смещение...&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39839/</id>
    <title type="text">Я подгрузил с сайта Финам коллекцию тиковых сделок по акциям за период с 10.04.2017 по 21.04.2017 в ...</title>
    <published>2017-04-24T14:49:55Z</published>
    <updated>2017-04-24T14:49:55Z</updated>
    <author>
      <name>Pelmen32</name>
      <uri>https://stocksharp.ru/users/95692/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Я подгрузил с сайта Финам коллекцию тиковых сделок по акциям за период с 10.04.2017 по 21.04.2017 в переменную
_historyTicks, информация подгрузилась без ошибок за все даты (проверил).
Далее в HistoryEmuationConnector передаю готовую коллекцию _historyTicks, как указано в ранее приложенном рабочем примере. После запуска коннектра, в функцию GetTrades, при вызове, поступают поочередно даты. За две пятницы дата в функцию не приходит (14.04.17 и 21.04.17). Очень странно поступают даты при вызове GetTrades: с начальной датой (10.04.17) функция вызывается три раза, далее приходят даты 11.04, 12.04, 13.04, 16.04 (воскресенье!?), 17.04, 18.04, 19.04, 20.04, через 15-20 секунд, вызывается повторно 19.04 и все.
Акцию выбрал из топ списка - АЛРОСА (критерий ликвидность, и не очень много тиков).&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39836/</id>
    <title type="text">Загружена куда? </title>
    <published>2017-04-24T13:34:40Z</published>
    <updated>2017-04-24T13:34:40Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;ol&gt;
&lt;li&gt;Загружена куда?&lt;/li&gt;
&lt;/ol&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39835/</id>
    <title type="text">Спасибо. Все получилось, только не загружается информация за пятницы. Пробовал загружать историю (ти...</title>
    <published>2017-04-24T02:57:42Z</published>
    <updated>2017-04-24T02:57:42Z</updated>
    <author>
      <name>Pelmen32</name>
      <uri>https://stocksharp.ru/users/95692/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Спасибо.
Все получилось, только не загружается информация за пятницы.
Пробовал загружать историю (тики) с Финама по акциям и передавать в HistoryEmulationConnector за период с 10.04.2017 по 21.04.2017
В метод GetTrades не приходят даты за пятницу 14.04.2017 и 21.04.2017.
Проверил, история за эти даты с Финама была загружена.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39750/</id>
    <title type="text">Регистрацию источника нужно выполнять в событии NewSecurities.. Рабочий пример во вложении... </title>
    <published>2017-04-17T12:48:00Z</published>
    <updated>2017-04-17T12:48:00Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Регистрацию источника нужно выполнять в событии NewSecurities.. Рабочий пример во вложении...&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39593/</id>
    <title type="text">Нет еще.. </title>
    <published>2017-03-30T12:55:19Z</published>
    <updated>2017-03-30T12:55:19Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Нет еще..&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39587/</id>
    <title type="text">Добрый день, прошло уже 2 недели, удалось ли проверить данную проблему? </title>
    <published>2017-03-29T23:51:12Z</published>
    <updated>2017-03-29T23:51:12Z</updated>
    <author>
      <name>Pelmen32</name>
      <uri>https://stocksharp.ru/users/95692/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день,
прошло уже 2 недели, удалось ли проверить данную проблему?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39475/</id>
    <title type="text">Хорошо, будем проверять.. </title>
    <published>2017-03-15T12:46:29Z</published>
    <updated>2017-03-15T12:46:29Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Хорошо, будем проверять..&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39474/</id>
    <title type="text">Сделал все по Вашей рекомендации. Создал отдельный метод: public IEnumerable GetTrades(DateTimeOffse...</title>
    <published>2017-03-15T02:04:33Z</published>
    <updated>2017-03-15T02:04:33Z</updated>
    <author>
      <name>Pelmen32</name>
      <uri>https://stocksharp.ru/users/95692/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Сделал все по Вашей рекомендации.
Создал отдельный метод:
public IEnumerable&lt;Message&gt; GetTrades(DateTimeOffset d)
{
var trades = _historyTicks.Where(ht =&amp;gt; ((ht.ServerTime.Date == d.Date) &amp;amp;&amp;amp;
(ht.ServerTime.TimeOfDay == d.TimeOfDay)));
return trades;
}&lt;/p&gt;
&lt;p&gt;Изменил:
_historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, null, GetTrades);&lt;/p&gt;
&lt;p&gt;Поставил внутри метода GetTrades точку останова, но программа в него не заходит&lt;/p&gt;
&lt;p&gt;Сделал дополнительную подписку на событие коннектора появления &amp;quot;нового сообщения&amp;quot; и вывод всех приходящих сообщений в окно Debug
historyConnector.NewMessage += (m) =&amp;gt;
{
var m1 = m;
Debug.Print(m.ToString());
};&lt;/p&gt;
&lt;p&gt;После  вызова _historyConnector.Connect();
в переменную m приходит первое сообщение:
Error,T(L)=0001/01/01 00:00:00.000,Error=Не найден подходящий адаптер для -8.&lt;/p&gt;
&lt;p&gt;затем последовательно приходят следующие сообщения:
Connect,T(L)=0001/01/01 00:00:00.000
Connect,T(L)=2017/03/13 09:59:42.000
PortfolioLookupResult,T(L)=2017/03/13 09:59:42.000,Orig=1
OrderStatus,T(L)=2017/03/13 09:59:42.000,Sec=S#:@, Native:,Type:,OriginTransId=0,TransId=2,OrderId=,TransId=2
PortfolioChange,T(L)=2017/03/13 09:59:42.000,T(S)=0001/01/01 00:00:00.000,P=test account,Changes=[RealizedPnL, 0],[VariationMargin, 0],[CurrentValue, 1000000],[BlockedValue, 0],[Commission, 0]
Board,T(L)=2017/03/13 09:59:42.000,Code=TQBR,Ex=MOEX
Security,T(L)=2017/03/13 09:59:42.000,Sec=S#:SBER@TQBR, Native:,Type:
SecurityLookupResult,T(L)=2017/03/13 09:59:42.000,Orig=3
MarketData,T(L)=2017/03/13 09:59:42.000,Sec=S#:@, Native:,Type:,Sec=S#:@, Native:,Type:,Types=Level1,IsSubscribe=True,TransId=0,OrigId=4
Time,T(L)=2017/03/13 07:00:00.000,ID=0,Response=
SecurityLookupResult,T(L)=2017/03/13 15:45:00.000,Orig=3
Time,T(L)=2017/03/13 15:45:00.000,ID=0,Response=
Time,T(L)=2017/03/13 15:45:01.000,ID=0,Response=
Time,T(L)=2017/03/13 15:45:02.000,ID=0,Response=
Time,T(L)=2017/03/14 07:00:00.000,ID=0,Response=
Time,T(L)=2017/03/14 15:45:00.000,ID=0,Response=
Time,T(L)=2017/03/14 15:45:01.000,ID=0,Response=
Time,T(L)=2017/03/14 15:45:02.000,ID=0,Response=
PortfolioLookupResult,T(L)=2017/03/14 15:45:02.000,Orig=1
Disconnect,T(L)=2017/03/14 15:45:02.000
MarketData,T(L)=2017/03/14 15:45:02.000,Sec=S#:@, Native:,Type:,Sec=S#:@, Native:,Type:,Types=Level1,IsSubscribe=False,TransId=0,OrigId=5
Disconnect,T(L)=2017/03/14 18:49:49.000&lt;/p&gt;
&lt;p&gt;Прилагаю файл сообщений Debug.&lt;/p&gt;
&lt;p&gt;тики загружены в переменную _historyTicks по акциям SBER за период с 13.03.17 по 14.03.17, общее кол-во 105943 шт.
дата первого тика d1= {13.03.2017 9:59:42 +03:00}, дата последнего тика d2={14.03.2017 18:49:49 +03:00}&lt;/p&gt;
&lt;p&gt;Текст кода следующий:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    public IEnumerable&amp;lt;Message&amp;gt; GetTrades(DateTimeOffset d)
    {
        var trades = _historyTicks.Where(ht =&amp;gt; ((ht.ServerTime.Date == d.Date) &amp;amp;&amp;amp;
                                                       (ht.ServerTime.TimeOfDay == d.TimeOfDay)));
        return trades;
    } 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;. . .&lt;/p&gt;
&lt;p&gt;if (_historyTicks != null)
{&lt;br /&gt;
d1 = _historyTicks.ElementAt(0).ServerTime;
d2 = _historyTicks.ElementAt(_historyTicks.Count() - 1).ServerTime;
}&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                        _selSecurity = SecFinamBuilder.SelectedSecurityModyf;
                                                 
                        _selPortfolio = new Portfolio
                        {
                            Name = &amp;quot;test account&amp;quot;,
                            BeginValue = 1000000,
                        };
                        
                        _historyConnector = new HistoryEmulationConnector(new[] {_selSecurity}, new[] {_selPortfolio})
                        {
                            EmulationAdapter =
                            {
                                Emulator = { Settings = { MatchOnTouch = false, } }
                            },

                            UseExternalCandleSource = false,
                            CreateDepthFromOrdersLog = false,
                            CreateTradesFromOrdersLog = false,
                        };

                        _historyConnector.HistoryMessageAdapter.StartDate = d1;
                        _historyConnector.HistoryMessageAdapter.StopDate = d2;
                                                   
                        _historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, null, GetTrades);
                                                  
                        _historyConnector.NewMessage += (m) =&amp;gt;
                        {
                            var m1 = m;
                            Debug.Print(m.ToString());
                        };

                        _historyConnector.Connect();
                                                    
                        var candleManager = new CandleManager(_historyConnector);

                        LoadSettingsDiagram();

                        _candleTimeFrame = TimeSpan.FromMinutes(5);

                        _connectorCandleSеries = new CandleSeries(typeof(TimeFrameCandle), _selSecurity, _candleTimeFrame);

                        candleManager.Processing += DrawElement;

                        candleManager.Start(_connectorCandleSеries);

                        _historyConnector.Start();
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39472/</id>
    <title type="text">[code]private IEnumerable&amp;gt; GetTrades(DateTimeOffset d) { var trades = _historyTicks.Where(ht =&amp;gt; ((ht...</title>
    <published>2017-03-14T13:00:22Z</published>
    <updated>2017-03-14T13:01:20Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.ru/users/97869/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;[code]private IEnumerable&lt;Message&gt;&amp;gt; GetTrades(DateTimeOffset d)
{
var trades = _historyTicks.Where(ht =&amp;gt; ((ht.ServerTime.Date == d.Date) &amp;amp;&amp;amp; (ht.ServerTime.TimeOfDay==d.TimeOfDay)));
return trades;
}&lt;/p&gt;
&lt;p&gt;_historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, null, GetTrades);[/code]&lt;/p&gt;
&lt;p&gt;Вот так сделайте... Поставьте точку останова внутрь GetTrades и посмотрите какое время приходит в функцию, и что она возвращает...&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/39471/</id>
    <title type="text">Добрый день. Хочу передать коллекцию тиковых сделок IEnumerable в HistoryEmulationConnector. Есть ли...</title>
    <published>2017-03-14T01:41:52Z</published>
    <updated>2017-03-14T01:41:52Z</updated>
    <author>
      <name>Pelmen32</name>
      <uri>https://stocksharp.ru/users/95692/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день.
Хочу передать коллекцию тиковых сделок IEnumerable&lt;ExecutionMessage&gt; в HistoryEmulationConnector.&lt;/p&gt;
&lt;p&gt;Есть ли способ это сделать без использования механизма сохранения коллекции в файл через StorageRegistry?&lt;/p&gt;
&lt;p&gt;Пытаюсь делать на основе примера тестирование на исторических данных через Финам,
с использованием метода RegisterHistorySource, но никак не получается.
Данные не подгружаются, свечки не строятся. Подскажите, пожалуйста, мою ошибку,
может быть есть у кого рабочее решение.&lt;/p&gt;
&lt;p&gt;Пытаюсь сделать  следующим образом:
_historyTicks - переменная содержащая коллекцию IEnumerable&lt;ExecutionMessage&gt; (тики загружены, проверил)&lt;/p&gt;
&lt;p&gt;d1 = _historyTicks.ElementAt(0).ServerTime;
d2 = _historyTicks.ElementAt(_historyTicks.Count() - 1).ServerTime;&lt;/p&gt;
&lt;p _selSecurity="" _selPortfolio=""&gt;_historyConnector = new HistoryEmulationConnector(new[] , new[] )
 }
},&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                            UseExternalCandleSource = false,
                            CreateDepthFromOrdersLog = false,
                            CreateTradesFromOrdersLog = false,
                        };
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;_historyConnector.HistoryMessageAdapter.StartDate = d1;
_historyConnector.HistoryMessageAdapter.StopDate = d2;&lt;/p&gt;
&lt;p&gt;Func&amp;lt;DateTimeOffset, IEnumerable&lt;Message&gt;&amp;gt; selectionData = d =&amp;gt;
_historyTicks.Where(ht =&amp;gt; ((ht.ServerTime.Date == d.Date) &amp;amp;&amp;amp; (ht.ServerTime.TimeOfDay==d.TimeOfDay)));&lt;/p&gt;
&lt;p&gt;_historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, typeof (Trade), selectionData);&lt;/p&gt;
&lt;p&gt;var candleManager = new CandleManager(_historyConnector);&lt;/p&gt;
&lt;p&gt;_candleTimeFrame = TimeSpan.FromMinutes(5);&lt;/p&gt;
&lt;p&gt;_connectorCandleSеries = new CandleSeries(typeof(TimeFrameCandle), _selSecurity, _candleTimeFrame);&lt;/p&gt;
&lt;p&gt;candleManager.Processing += DrawElement;&lt;/p&gt;
&lt;p&gt;candleManager.Start(_connectorCandleSеries);&lt;/p&gt;
&lt;p&gt;_historyConnector.Start();&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>