Отрисовка индикаторов на истории и онлайн.~/topic/8999/otrisovka-indikatorov-na-istorii-i-onlain_/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T07:38:58Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/42281/Спасибо информация передана.2018-01-14T16:01:27Z2018-01-14T16:01:27ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ruСпасибо информация передана.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/42252/Здравствуйте. История приходит из Quik'а. Если исторические свечи имеют статус Finished то smaValue....2018-01-11T18:35:05Z2018-01-11T18:35:05ZКонстантинhttps://stocksharp.ru/users/98279/info@stocksharp.ruЗдравствуйте. История приходит из Quik'а. Если исторические свечи имеют статус Finished то smaValue.IsFinal будет всегда true так как:<br /><div class="code"><strong>Код</strong><div class="innercode">smaValue.IsFinal = candle.State == CandleStates.Finished;</div></div><br />Соответственно если мы явно указываем какое значение брать за расчет то все должно рисоваться нормально, но рисуется вот так:<br /><a href='https://pp.userapi.com/c840239/v840239699/5d727/BlRpH7ztt-Y.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="https://pp.userapi.com/c840239/v840239699/5d727/BlRpH7ztt-Y.jpg" style='max-width: 600px;' alt=""/></a><br />Если значение IsFinal не работает в этом случае то для чего оно? <br />Вот код отрисовки:<br /><div class="code"><strong>Код</strong><div class="innercode"> _candleManager.Processing += (series, candle) =><br /> {<br /> if (series != _series)<br /> return;<br /><br /> // Рассчитываем значение индикатора<br /> var smaValue = _sma.Process(candle);<br /> //Если свеча закончена то берем текущее значение за расчет и фиксируем по оси X<br /> smaValue.IsFinal = candle.State == CandleStates.Active;<br /><br /> // Создаем экземпляр класса ChartDrawData - класс, где группируются данные для отрисовки <br /> var data = new ChartDrawData();<br /><br /> // chartItem - набор элементов, привязанных к одной точке на шкале X<br /> var chartItem = data.Group(candle.OpenTime).Add(_candleElement, candle);<br /> chartItem.Add(_indicatorElement, smaValue);<br /><br /> // Безопасно отрисовываем элементы на графике<br /> this.GuiSync(() => Chart.Draw(data));<br /><br /> };<br /></div></div>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/42248/В хранилище хранятся только сформированные свечи.2018-01-11T17:16:26Z2018-01-11T17:16:26ZSupporthttps://stocksharp.ru/users/97869/info@stocksharp.ruВ хранилище хранятся только сформированные свечи.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/42241/Добрый день! Возмем индикатор SMA _sma = new SimpleMovingAverage() { Length = 10 }; .... var smaValu...2018-01-10T23:05:50Z2018-01-10T23:05:50ZКонстантинhttps://stocksharp.ru/users/98279/info@stocksharp.ruДобрый день! Возмем индикатор SMA <br /><div class="code"><strong>Код</strong><div class="innercode"> _sma = new SimpleMovingAverage() { Length = 10 };<br />....<br />var smaValue = _sma.Process(candle);</div></div><br />Далее если указать для smaValue.IsFinal = true то текущее значение будет браться за расчет и фиксироваться по оси x. То есть можно указать вот так:<br /><div class="code"><strong>Код</strong><div class="innercode">smaValue.IsFinal = candle.State == CandleStates.Finished;</div></div><br />Это будет логично. Если свеча закрыта то рассчитываем индикатор и фиксируем на оси x.<br /><br />От сюда вопрос: Почему это не работает при загрузке истории? <br />Ведь у исторических свечей так же есть состояние Finished и Active.<br />Если не отфильтровывать историю от реалтайма то индикатор убегает вперед свечек.Copyright @ StockSharp Platform LLC 2010 - 2024