weightedindexsecurity. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=tag&id=weightedindexsecurity&type=communityCopyright @ StockSharp Platform LLC 2010 - 20242024-03-29T13:13:14Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/8952/Создание WeightedIndexSecurity из исторических данных (получить исторический спред 2-х инструментов)2017-12-21T20:39:37Z2018-01-09T20:04:19ZДмитрий_https://stocksharp.ru/users/62269/info@stocksharp.ruЗдравствуйте.<br /><br />Подскажите, как правильно создать WeightedIndexSecurity из исторических данных?<br /><br />Имею:<br />Security _leg1Security = new Security() { Id = "SBER@TQBR" };<br />Security _leg2Security = new Security() { Id = "SBERP@TQBR" };<br /><br />DateTime from = new DateTime(2017, 1, 3).ChangeKind(DateTimeKind.Utc);<br />DateTime to = new DateTime(2017, 1, 4).ChangeKind(DateTimeKind.Utc);<br /><br />private TimeSpan _timeFrame = TimeSpan.FromMinutes(1);<br /><br />В переменных _leg1TimeFrameCandles и _leg2TimeFrameCandles исторические 1-мин свечи, загруженные из локального хранилища.<br /><br />_portfolio = new Portfolio<br /> {<br /> Name = "Test Account",<br /> BeginValue = 1000000,<br /> };<br /><br />WeightedIndexSecurity _spreadSecurity = new WeightedIndexSecurity() { Id = "Index1", Board = ExchangeBoard.Forts };<br /> _spreadSecurity.Weights.Add(_leg1Security.Id.ToSecurityId(), Convert.ToDecimal(1));<br /> _spreadSecurity.Weights.Add(_leg2Security.Id.ToSecurityId(), Convert.ToDecimal(-1));<br /><br /> var securityList = new List<Security> { _spreadSecurity };<br /> var portfolioList = new List<Portfolio> { _portfolio };<br /><br />_historyEmulationConnector = new HistoryEmulationConnector(securityList, portfolioList);<br /> _spreadCandleSeries = new CandleSeries(typeof(TimeFrameCandle), _spreadSecurity, TimeSpan.FromMinutes(1)) { BuildCandlesMode = BuildCandlesModes.Build };<br /><br /> ConfigManager.RegisterService<ISecurityProvider>(_historyEmulationConnector);<br /><br /> CandleManager _spreadCandleManager = new CandleManager(_historyEmulationConnector);<br />_spreadCandleManager.Processing += DrawSpreadCandle;<br /><br /> _spreadCandleManager.Start(_spreadCandleSeries); (Исключение - System.InvalidOperationException: "Инструмент S#:SBER@TQBR, Native:,Type: не найден.")<br /><br /><br />private void DrawSpreadCandle(CandleSeries series, Candle candle)<br /> {<br /> Debug.WriteLine(string.Format("series= {0}, candle= {1}, candleseries= {2}", series.Security.Id, candle.Security.Id, _spreadCandleSeries.Security.Id));<br /><br /> var data = new ChartDrawData();<br /> data.Group(candle.OpenTime).Add(_spreadChartCandleElement, candle);<br /><br /> try<br /> {<br /> Chart.Draw(data);<br /> }<br /> catch (Exception ex)<br /> {<br /> }<br /> }<br /><br />Как получить исторический спред этих 2-х инструментов?https://stocksharp.ru/topic/8897/Эмуляция недостающих свечей2017-12-05T01:45:09Z2017-12-05T10:05:30ZДмитрий_https://stocksharp.ru/users/62269/info@stocksharp.ruЗдравствуйте.<br /><br />Качаю исторические данные для 2-х инструментов.<br />Используя два инструмента - хочу создать индекс.<br />Иногда, количество 1-мин свечей одного инструмента != количеству 1-мин свечей другого инструмента.<br /><br />И дабы не создавать кривой индекс<br />Вопросы:<br />1) Содержит S# API функционал для эмуляции недостающих свечей?<br />2) Как данную проблему решают профессиональные алготрейдеры?<br /><br />https://stocksharp.ru/topic/8700/WeightedIndexSecurity внутри другого WeightedIndexSecurity после обновления.2017-10-12T20:36:24Z2017-10-12T20:36:24ZJcJethttps://stocksharp.ru/users/94445/info@stocksharp.ruЗдравствуйте. В своей торговой стратегии я использовал несколько индексных инструментов, вложенных в корневой индексный инструмент. Однако после обновления S# API возникли сложности, т.к. теперь метод Weights.Add() требует SecurityId вместо Security.<br />На прошлой версии такой трюк работал нормально, однако не пойму, как нужно переделать вызов метода , чтобы снова все было ок.<br />Если вызывать метод ToSecurityId для индексного инструмента, то вылетает исключение, т.к. поля Code, Board, как и многие другие в нем являются null.<br />Каким образом формировать SecurityId, или, быть может, есть решение проще?<br />Корректно ли будет создать новый SecurityId и установить свойства, чтобы они соответствовали строковому представлению индексного инструмента вида "1 * SBER@TQBR"?