Использование готовой коллекции данных в HistoryEmulationConnector~/topic/8149/ispolzovanie-gotovoi-kollektsii-dannyh-v-historyemulationconnector/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T11:12:15Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/39852/ок.2017-04-26T13:55:56Z2017-04-26T13:55:56ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ruок.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39851/Спасибо, что подсказали про смещение на 1 день. Вроде разобрался. Если период в HistoryMessageAdapte...2017-04-26T02:58:00Z2017-04-26T02:58:00ZPelmen32https://stocksharp.ru/users/95692/info@stocksharp.ruСпасибо, что подсказали про смещение на 1 день. Вроде разобрался.<br />Если период в HistoryMessageAdapter задавать в формате UTC, то пропущенных дней нет.<br /><br />Период указываю следующим образом:<br /><div class="code"><strong>Код</strong><div class="innercode">_historyConnector.HistoryMessageAdapter.StartDate = d1.Date.ToUniversalTime();<br /> _historyConnector.HistoryMessageAdapter.StopDate = d2.Date.ToUniversalTime().AddDays(1);</div></div><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39846/Чисто логически можно предположить, что неделя на 1 день смещена... А как время в данных записано? К...2017-04-25T13:16:24Z2017-04-25T13:16:51ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ruЧисто логически можно предположить, что неделя на 1 день смещена... А как время в данных записано? Какое там смещение...<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39839/Я подгрузил с сайта Финам коллекцию тиковых сделок по акциям за период с 10.04.2017 по 21.04.2017 в ...2017-04-24T14:49:55Z2017-04-24T14:49:55ZPelmen32https://stocksharp.ru/users/95692/info@stocksharp.ruЯ подгрузил с сайта Финам коллекцию тиковых сделок по акциям за период с 10.04.2017 по 21.04.2017 в переменную<br />_historyTicks, информация подгрузилась без ошибок за все даты (проверил).<br />Далее в 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 и все.<br />Акцию выбрал из топ списка - АЛРОСА (критерий ликвидность, и не очень много тиков).Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39836/1. Загружена куда?2017-04-24T13:34:40Z2017-04-24T13:34:40ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ru1. Загружена куда?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39835/Спасибо. Все получилось, только не загружается информация за пятницы. Пробовал загружать историю (ти...2017-04-24T02:57:42Z2017-04-24T02:57:42ZPelmen32https://stocksharp.ru/users/95692/info@stocksharp.ruСпасибо.<br />Все получилось, только не загружается информация за пятницы.<br />Пробовал загружать историю (тики) с Финама по акциям и передавать в HistoryEmulationConnector за период с 10.04.2017 по 21.04.2017<br />В метод GetTrades не приходят даты за пятницу 14.04.2017 и 21.04.2017.<br />Проверил, история за эти даты с Финама была загружена.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39750/Регистрацию источника нужно выполнять в событии NewSecurities.. Рабочий пример во вложении... 2017-04-17T12:48:00Z2017-04-17T12:48:00ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ruРегистрацию источника нужно выполнять в событии NewSecurities.. Рабочий пример во вложении...<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39593/Нет еще..2017-03-30T12:55:19Z2017-03-30T12:55:19ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ruНет еще..Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39587/Добрый день, прошло уже 2 недели, удалось ли проверить данную проблему?2017-03-29T23:51:12Z2017-03-29T23:51:12ZPelmen32https://stocksharp.ru/users/95692/info@stocksharp.ruДобрый день, <br />прошло уже 2 недели, удалось ли проверить данную проблему?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39475/Хорошо, будем проверять..2017-03-15T12:46:29Z2017-03-15T12:46:29ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ruХорошо, будем проверять..Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39474/Сделал все по Вашей рекомендации. Создал отдельный метод: public IEnumerable GetTrades(DateTimeOffse...2017-03-15T02:04:33Z2017-03-15T02:04:33ZPelmen32https://stocksharp.ru/users/95692/info@stocksharp.ruСделал все по Вашей рекомендации.<br />Создал отдельный метод:<br />public IEnumerable<Message> GetTrades(DateTimeOffset d)<br /> {<br /> var trades = _historyTicks.Where(ht => ((ht.ServerTime.Date == d.Date) &&<br /> (ht.ServerTime.TimeOfDay == d.TimeOfDay)));<br /> return trades;<br /> } <br /><br />Изменил:<br />_historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, null, GetTrades);<br /><br />Поставил внутри метода GetTrades точку останова, но программа в него не заходит<br /><br />Сделал дополнительную подписку на событие коннектора появления "нового сообщения" и вывод всех приходящих сообщений в окно Debug<br />historyConnector.NewMessage += (m) =><br /> {<br /> var m1 = m;<br /> Debug.Print(m.ToString());<br /> };<br /><br />После вызова _historyConnector.Connect();<br />в переменную m приходит первое сообщение:<br />Error,T(L)=0001/01/01 00:00:00.000,Error=Не найден подходящий адаптер для -8.<br /><br />затем последовательно приходят следующие сообщения:<br />Connect,T(L)=0001/01/01 00:00:00.000<br />Connect,T(L)=2017/03/13 09:59:42.000<br />PortfolioLookupResult,T(L)=2017/03/13 09:59:42.000,Orig=1<br />OrderStatus,T(L)=2017/03/13 09:59:42.000,Sec=S#:@, Native:,Type:,OriginTransId=0,TransId=2,OrderId=,TransId=2<br />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]<br />Board,T(L)=2017/03/13 09:59:42.000,Code=TQBR,Ex=MOEX<br />Security,T(L)=2017/03/13 09:59:42.000,Sec=S#:SBER@TQBR, Native:,Type:<br />SecurityLookupResult,T(L)=2017/03/13 09:59:42.000,Orig=3<br />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<br />Time,T(L)=2017/03/13 07:00:00.000,ID=0,Response=<br />SecurityLookupResult,T(L)=2017/03/13 15:45:00.000,Orig=3<br />Time,T(L)=2017/03/13 15:45:00.000,ID=0,Response=<br />Time,T(L)=2017/03/13 15:45:01.000,ID=0,Response=<br />Time,T(L)=2017/03/13 15:45:02.000,ID=0,Response=<br />Time,T(L)=2017/03/14 07:00:00.000,ID=0,Response=<br />Time,T(L)=2017/03/14 15:45:00.000,ID=0,Response=<br />Time,T(L)=2017/03/14 15:45:01.000,ID=0,Response=<br />Time,T(L)=2017/03/14 15:45:02.000,ID=0,Response=<br />PortfolioLookupResult,T(L)=2017/03/14 15:45:02.000,Orig=1<br />Disconnect,T(L)=2017/03/14 15:45:02.000<br />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<br />Disconnect,T(L)=2017/03/14 18:49:49.000<br /><br />Прилагаю файл сообщений Debug.<br /><br />тики загружены в переменную _historyTicks по акциям SBER за период с 13.03.17 по 14.03.17, общее кол-во 105943 шт. <br />дата первого тика d1= {13.03.2017 9:59:42 +03:00}, дата последнего тика d2={14.03.2017 18:49:49 +03:00}<br /><br />Текст кода следующий: <br /><br /> public IEnumerable<Message> GetTrades(DateTimeOffset d)<br /> {<br /> var trades = _historyTicks.Where(ht => ((ht.ServerTime.Date == d.Date) &&<br /> (ht.ServerTime.TimeOfDay == d.TimeOfDay)));<br /> return trades;<br /> } <br /><br />. . .<br /><br />if (_historyTicks != null)<br /> { <br /> d1 = _historyTicks.ElementAt(0).ServerTime;<br /> d2 = _historyTicks.ElementAt(_historyTicks.Count() - 1).ServerTime;<br /> }<br /> <br /> _selSecurity = SecFinamBuilder.SelectedSecurityModyf;<br /> <br /> _selPortfolio = new Portfolio<br /> {<br /> Name = "test account",<br /> BeginValue = 1000000,<br /> };<br /> <br /> _historyConnector = new HistoryEmulationConnector(new[] {_selSecurity}, new[] {_selPortfolio})<br /> {<br /> EmulationAdapter =<br /> {<br /> Emulator = { Settings = { MatchOnTouch = false, } }<br /> },<br /><br /> UseExternalCandleSource = false,<br /> CreateDepthFromOrdersLog = false,<br /> CreateTradesFromOrdersLog = false,<br /> };<br /><br /> _historyConnector.HistoryMessageAdapter.StartDate = d1;<br /> _historyConnector.HistoryMessageAdapter.StopDate = d2;<br /> <br /> _historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, null, GetTrades);<br /> <br /> _historyConnector.NewMessage += (m) =><br /> {<br /> var m1 = m;<br /> Debug.Print(m.ToString());<br /> };<br /><br /> _historyConnector.Connect();<br /> <br /> var candleManager = new CandleManager(_historyConnector);<br /><br /> LoadSettingsDiagram();<br /><br /> _candleTimeFrame = TimeSpan.FromMinutes(5);<br /><br /> _connectorCandleSеries = new CandleSeries(typeof(TimeFrameCandle), _selSecurity, _candleTimeFrame);<br /><br /> candleManager.Processing += DrawElement;<br /><br /> candleManager.Start(_connectorCandleSеries);<br /><br /> _historyConnector.Start();<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39472/ private IEnumerable> GetTrades(DateTimeOffset d) { var trades = _historyTicks.Where(ht => ((ht.Serv...2017-03-14T13:00:22Z2017-03-14T13:01:20ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ru<br /><div class="code"><strong>Код</strong><div class="innercode">private IEnumerable<Message>> GetTrades(DateTimeOffset d)<br />{<br /> var trades = _historyTicks.Where(ht => ((ht.ServerTime.Date == d.Date) && (ht.ServerTime.TimeOfDay==d.TimeOfDay)));<br /> return trades;<br />}<br /><br />_historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, null, GetTrades);</div></div><br /><br />Вот так сделайте... Поставьте точку останова внутрь GetTrades и посмотрите какое время приходит в функцию, и что она возвращает...<br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/39471/Добрый день. Хочу передать коллекцию тиковых сделок IEnumerable в HistoryEmulationConnector. Есть ли...2017-03-14T01:41:52Z2017-03-14T01:41:52ZPelmen32https://stocksharp.ru/users/95692/info@stocksharp.ruДобрый день.<br />Хочу передать коллекцию тиковых сделок IEnumerable<ExecutionMessage> в HistoryEmulationConnector.<br /><br />Есть ли способ это сделать без использования механизма сохранения коллекции в файл через StorageRegistry?<br /><br />Пытаюсь делать на основе примера тестирование на исторических данных через Финам, <br />с использованием метода RegisterHistorySource, но никак не получается. <br />Данные не подгружаются, свечки не строятся. Подскажите, пожалуйста, мою ошибку, <br />может быть есть у кого рабочее решение.<br /><br />Пытаюсь сделать следующим образом:<br />_historyTicks - переменная содержащая коллекцию IEnumerable<ExecutionMessage> (тики загружены, проверил)<br /><br />d1 = _historyTicks.ElementAt(0).ServerTime;<br />d2 = _historyTicks.ElementAt(_historyTicks.Count() - 1).ServerTime;<br /><br />_historyConnector = new HistoryEmulationConnector(new[] {_selSecurity}, new[] {_selPortfolio})<br /> {<br /> EmulationAdapter =<br /> {<br /> Emulator = { Settings = { MatchOnTouch = false, } }<br /> },<br /><br /> UseExternalCandleSource = false,<br /> CreateDepthFromOrdersLog = false,<br /> CreateTradesFromOrdersLog = false,<br /> };<br /><br />_historyConnector.HistoryMessageAdapter.StartDate = d1;<br />_historyConnector.HistoryMessageAdapter.StopDate = d2;<br /><br />Func<DateTimeOffset, IEnumerable<Message>> selectionData = d =><br /> _historyTicks.Where(ht => ((ht.ServerTime.Date == d.Date) && (ht.ServerTime.TimeOfDay==d.TimeOfDay)));<br /> <br />_historyConnector.RegisterHistorySource(_selSecurity, MarketDataTypes.Trades, typeof (Trade), selectionData);<br /><br />var candleManager = new CandleManager(_historyConnector);<br /><br />_candleTimeFrame = TimeSpan.FromMinutes(5);<br /><br /> _connectorCandleSеries = new CandleSeries(typeof(TimeFrameCandle), _selSecurity, _candleTimeFrame);<br /><br />candleManager.Processing += DrawElement;<br /><br />candleManager.Start(_connectorCandleSеries);<br /><br />_historyConnector.Start();<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024