﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Невозможно изменить значение для свечи</title>
  <id>~/topic/9050/nevozmozhno-izmenit-znachenie-dlya-svechi/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-10T12:14:13Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=9050" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/42401/</id>
    <title type="text">Добрый день! Вот такой код: using System; using System.Net; using System.Security; using System.Wind...</title>
    <published>2018-01-28T01:06:08Z</published>
    <updated>2018-01-28T01:06:08Z</updated>
    <author>
      <name>Константин</name>
      <uri>https://stocksharp.com/users/98279/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день! Вот такой код:&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code&gt;using System;
using System.Net;
using System.Security;
using System.Windows;
using System.Windows.Media;
using Ecng.Common;
using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.BusinessEntities;
using StockSharp.Xaml.Charting;
using StockSharp.Quik;
using Ecng.Xaml;
using StockSharp.Messages;
using System.Linq;

namespace ShowChart
{
    /// &amp;lt;summary&amp;gt;
    /// Логика взаимодействия для MainWindow.xaml
    /// &amp;lt;/summary&amp;gt;
    public partial class MainWindow : Window
    {
        private QuikTrader _trader;
        public static CandleManager CandleManager { get; private set; }
        public static CandleSeries Series { get; private set; }
        public CandleSeries CandleSeries { get; private set; }
        public ChartArea Area { get; set; }
        public bool IsRealtiem { get; set; }
        public ChartCandleElement ChartCandleElement { get; private set; }


        public MainWindow()
        {
            InitializeComponent();
            Loaded += MainWindow_Loaded;
        }

        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            _trader = new QuikTrader()
            {
                LuaLogin = &amp;quot;Quik&amp;quot;,
                LuaPassword = &amp;quot;Quik&amp;quot;.To&amp;lt;SecureString&amp;gt;(),
                LuaFixServerAddress = &amp;quot;127.0.0.1:5001&amp;quot;.To&amp;lt;EndPoint&amp;gt;(),
            };
            CandleManager = new CandleManager(_trader);

            _trader.NewSecurity += security =&amp;gt;
            {
                if (security.Id == &amp;quot;SBER@QJSIM&amp;quot;)
                {
                    CandleSeries = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromMinutes(1));
                    this.GuiAsync(InitCart);

                }
            };
            _trader.Connect();
        }

        public void InitCart()
        {
            Chart.ClearAreas();

            Area = new ChartArea();
            var yAxis = Area.YAxises.First();
            yAxis.AutoRange = true;
            Chart.IsAutoScroll = true;
            Chart.ShowOverview = true;
            Chart.AddArea(Area);

            ChartCandleElement = new ChartCandleElement()
            {
                DownFillColor = Brushes.DarkRed.Color,
                UpFillColor = Brushes.DarkGreen.Color,
                DownBorderColor = Brushes.Red.Color,
                UpBorderColor = Brushes.Green.Color,
            };
            Chart.AddElement(Area, ChartCandleElement, CandleSeries);
        }

        public void DisplayNewMarketData(CandleSeries candleSeries, Candle candle)
        {
            IsRealtiem = candle.CloseTime + TimeSpan.FromSeconds(5) &amp;gt; DateTimeOffset.Now || IsRealtiem;

            var chartDrawData = new ChartDrawData();
            var group = chartDrawData.Group(candle.OpenTime);
            group.Add(ChartCandleElement, candle);
            if (IsRealtiem || candle.State == CandleStates.Finished)
                Chart.Draw(chartDrawData);
        }


        private void StartButton_Click(object sender, RoutedEventArgs e)
        {
            
            CandleManager.Processing += DisplayNewMarketData;
            CandleManager.Start(CandleSeries);
        }

        private void StopButton_Click(object sender, RoutedEventArgs e)
        {
            CandleManager.Processing -= DisplayNewMarketData;
            CandleManager.Stop(CandleSeries);
            InitCart();
        }
    }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Данный код рисует свечи при клике по кнопке Start и очищает чарт при клике по кнопке Stop. Если запустить отрисовку свечей кликом по кнопке Start, за тем остановить кнопкой Stop и снова запустить Start то выскакивает исключение:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;System.InvalidOperationException: &amp;quot;Невозможно изменить значение для свечи для даты 01/27/2018 04:05:00 +03:00 последнее добавленное значение для даты 01/27/2018 22:58:00.&amp;quot;
В обработчике события (StopButton_Click) по кнопке Stop происходит инициализация чарта заново. Весь день ломаю голову. Почему так происходит? Подскажите пожалуйста.
Во вложении проект.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>