﻿<?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">Chart  - тоска, печаль...</title>
  <id>~/topic/4055/chart----toska-pechal___/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-19T18:07:32Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=4055" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/27840/</id>
    <title type="text">Есть решения. Попробую реализовать.</title>
    <published>2013-10-21T09:09:19Z</published>
    <updated>2013-10-21T09:09:19Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Есть &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAACFJz08t4t_RZiRmg4hhDkF4MCwjGzGBxcwAgAP9ynoZtD0bnjBnnYmUpoJ2fzLkGTujb-ackfY6YTXdP9_Kalxvic_LwtKJlapmtvcLPRIzeByrPJJyFnDIrijuccM2n4" title="http://www.msdn.microsoft.com/ru-ru/library/system.componentmodel.backgroundworker.aspx"&gt;решения.&lt;/a&gt; Попробую реализовать.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27838/</id>
    <title type="text">Мне тоже так кажется. Как можно это решить на практике? Или забить? Не хотелось бы... Тема перфоманс...</title>
    <published>2013-10-20T23:25:36Z</published>
    <updated>2013-10-20T23:26:48Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27837/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Мне тоже так кажется. Как можно это решить на практике? Или забить? Не хотелось бы...&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Тема перфоманса ГУИ не такая уж и простая. Я бы сказал, ее многие конторы в трейдинге до сих пор не очень успешно решают. Тут нет однозначного решения как лучше. Надо экспериментировать. Может обновление пачкой свечек ускорит, а может еще что. На худой конец, просто забить, ведь в рилтайме свечки пачками не приходят. Если мы про тест на истории говорим, то опять же, результат можно смотреть в конце. Ведь отображение в реальном времени параметров тестирования может ухудшить перформанс тестирования.&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27837/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;А с остальными моментами из первого сообщения?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я другие не особо понял о чем речь. Если про коммент насчет исправления ошибок, то все в процессе. Есть сейчас более актуальные задачи (к примеру, тестирование, о чем вы писали в плане утечки памяти). Как закончим, то вернемся к найденным недочетам с форума. Никто не забыт, ничто не забыто.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27837/</id>
    <title type="text">Отрисовывает по окончании foreach. А в процессе зависание. Потому что GUI маршалинг - это не мгновен...</title>
    <published>2013-10-20T21:37:55Z</published>
    <updated>2013-10-20T21:37:55Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Михаил Сухов &lt;a href="https://stocksharp.com/posts/m/27836/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27835/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Отрисовывает по окончании foreach. А в процессе зависание.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Потому что GUI маршалинг - это не мгновенная операция. Или передавайте свечки пачкой, или используйте очередь. Но сам метод не зависает, скорее всего. Зависает отрисовка. Потому что маршалинг асинхронный.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Мне тоже так кажется. Как можно это решить на практике? Или забить? Не хотелось бы...&lt;br /&gt;А с остальными моментами из первого сообщения?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27836/</id>
    <title type="text">Отрисовывает по окончании foreach. А в процессе зависание. Потому что GUI маршалинг - это не мгновен...</title>
    <published>2013-10-20T20:35:30Z</published>
    <updated>2013-10-20T20:35:30Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27835/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Отрисовывает по окончании foreach. А в процессе зависание.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Потому что GUI маршалинг - это не мгновенная операция. Или передавайте свечки пачкой, или используйте очередь. Но сам метод не зависает, скорее всего. Зависает отрисовка. Потому что маршалинг асинхронный.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27835/</id>
    <title type="text">Только отрисовывает после работы метода. Вот эта фраза не понятно. А когда должно отрисовывать? До р...</title>
    <published>2013-10-20T19:58:16Z</published>
    <updated>2013-10-20T19:58:16Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Михаил Сухов &lt;a href="https://stocksharp.com/posts/m/27834/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27833/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Только отрисовывает после работы метода.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вот эта фраза не понятно. А когда должно отрисовывать? До работы?[laugh] &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Отрисовывает по окончании foreach. А в процессе зависание. Кода добавлял вывод сообщения после окончания метода, то свечка отрисовывалась нормально. Как ему обозначить, что нужно показать график со свечей, а потом уже новую свечу выводить. Он либо не успевает, либо игнорирует. Хз.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27834/</id>
    <title type="text">Только отрисовывает после работы метода. Вот эта фраза не понятно. А когда должно отрисовывать? До р...</title>
    <published>2013-10-20T19:30:05Z</published>
    <updated>2013-10-20T19:30:05Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27833/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Только отрисовывает после работы метода.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вот эта фраза не понятно. А когда должно отрисовывать? До работы?[laugh] </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27833/</id>
    <title type="text">Код: Передаю свечи в метод Draw: candlesCountAll = candles.Count; foreach (var candle in candles) { ...</title>
    <published>2013-10-20T19:01:40Z</published>
    <updated>2013-10-20T19:02:55Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Код:&lt;br /&gt;&lt;br /&gt;Передаю свечи в метод Draw:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

 candlesCountAll = candles.Count;

			    foreach (var candle in candles)
                {
                    candlesCount = candlesCount + 2;
                    Draw(candle, _chartCandleElement);
                }

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Сам метод:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public void Draw(Candle candle, IChartElement chartElement)
        {
            ProcessDraw.Maximum = candlesCountAll;
            this.GuiAsync(() =&amp;gt; ProcessDraw.Value = candlesCount);
            
            if (candle.State == CandleStates.Finished || candle.State == CandleStates.Changed)
            {
                var final = candle.State == CandleStates.Finished;

                var valSMA = _SMA.Indicator.Process(new DecimalIndicatorValue(candle.ClosePrice) { IsFinal = final });
                var ValueSMA = new ChartIndicatorValue(_SMA.Indicator, valSMA);

                var valAO = _AO.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
                var ValueAO = new ChartIndicatorValue(_AO.Indicator, valAO);

                var valRSI = _RSI.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
                var ValueRSI = new ChartIndicatorValue(_RSI.Indicator, valRSI);

                var valATR = _ATR.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
                var ValueATR = new ChartIndicatorValue(_ATR.Indicator, valATR);

                var valVolume = _Volume.Indicator.Process(new CandleIndicatorValue(candle) { IsFinal = true });
                var ValueVolume = new ChartIndicatorValue(_Volume.Indicator, valVolume);

                this.GuiAsync(() =&amp;gt; candlesChart.ProcessValues(candle.OpenTime, new Dictionary&amp;lt;IChartElement, object&amp;gt;
                                                                                                                        {
                                                                                                                            { chartElement, candle },
                                                                                                                            { _SMA, ValueSMA },
                                                                                                                            { _AO, ValueAO },
                                                                                                                            { _RSI, ValueRSI },
                                                                                                                            { _ATR, ValueATR },
                                                                                                                            { _Volume, ValueVolume }
                                                                                                                        }));
            }
            
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Все работает. Только отрисовывает после работы метода.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27832/</id>
    <title type="text"> Если берете стандартные функции из C#, то зачем их урезать? Вообще то наш чарт построен на СкиЧарте...</title>
    <published>2013-10-20T18:57:22Z</published>
    <updated>2013-10-20T18:57:22Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Михаил Сухов &lt;a href="https://stocksharp.com/posts/m/27831/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27829/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Если берете стандартные функции из C#, то зачем их урезать?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вообще то наш чарт построен на СкиЧарте. Это не стандартный компонент, и стоит почти что 50к рубликов. Распространять по лиц. соглашению мы не имеем право лицензию СкиЧарт, как и сам компонент. И поэтому он обернут (=урезан) в наши методы, и распространяется дэ факто и дэ юрэ наша обертка, тоесть производное решение. Именно в таком виде график получает бесплатное распространение. Если хотите фул тротэл, то велкам на сайт производителя, и сможете заюзать компонент со всеми его фичами. Только придется уплатить 50к.&lt;br /&gt;&lt;br /&gt;Что касается замирания всех окон, то почти уверен, что это вовсе не из-за графика, а за частого маршалинга данных в ГУИ поток.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Очень хорошо, что платформа использует качественные профессиональные компоненты. Но я и не планирую с этими графиками строить траектории движения космических кораблей. Просто хочу, чтобы график отрисовывался во время получения данных и было понятно, что он делает. Стандартные функции C# это позволяют, а профессиональные значит нет)&lt;br /&gt;&lt;br /&gt;Я могу выложить код. И, надеюсь, мне подскажут как решить проблему с &amp;quot;маршалингом&amp;quot; или чем бы то ни было[biggrin]  </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27831/</id>
    <title type="text"> Если берете стандартные функции из C#, то зачем их урезать? Вообще то наш чарт построен на СкиЧарте...</title>
    <published>2013-10-20T18:03:03Z</published>
    <updated>2013-10-20T18:05:37Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Bond &lt;a href="https://stocksharp.com/posts/m/27829/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Если берете стандартные функции из C#, то зачем их урезать?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вообще то наш чарт построен на СкиЧарте. Это не стандартный компонент, и стоит почти что 50к рубликов. Распространять по лиц. соглашению мы не имеем право лицензию СкиЧарт, как и сам компонент. И поэтому он обернут (=урезан) в наши методы, и распространяется дэ факто и дэ юрэ наша обертка, тоесть производное решение. Именно в таком виде график получает бесплатное распространение. Если хотите фул тротэл, то велкам на сайт производителя, и сможете заюзать компонент со всеми его фичами. Только придется уплатить 50к.&lt;br /&gt;&lt;br /&gt;Что касается замирания всех окон, то почти уверен, что это вовсе не из-за графика, а за частого маршалинга данных в ГУИ поток.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/27829/</id>
    <title type="text">Одна тоска, печаль при работе с графиками... Те чарты, что в msdn имеют на много больше свойств и ме...</title>
    <published>2013-10-20T17:10:05Z</published>
    <updated>2013-10-20T17:12:19Z</updated>
    <author>
      <name>Bond</name>
      <uri>https://stocksharp.com/users/26882/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Одна тоска, печаль при работе с графиками... [cursing]&lt;br /&gt;Те чарты, что в &lt;a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.datavisualization.charting.chart.aspx" title="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.datavisualization.charting.chart.aspx"&gt;msdn&lt;/a&gt; имеют на много больше свойств и методов, и разнятся с теми, что в &lt;a href="http://stocksharp.com/doc/?topic=html/AllMembers_T_StockSharp_Xaml_Chart.htm" title="http://stocksharp.com/doc/?topic=html/AllMembers_T_StockSharp_Xaml_Chart.htm"&gt;доках S#&lt;/a&gt;&lt;br /&gt;Например, в проекте GetCandles можно проверить, что при отрисовке исторических свечек на нормальном периоде времени все окно зависает нафиг пока не обработает все свечи и только потом покажет готовый график. К каким свойствам и методам обращаться, чтобы он брал свечку, выводил ее на график и только потом делал это с другой свечкой? Ладно бы график, все окно зависает.&lt;br /&gt;&lt;br /&gt;ChartArea() - высота областей не настраивается. Где бы ты ее не задавал - в итоге стандартные 100 выводит и хоть ты тресни. Сказали, что передали разработчикам, те видимо забили.&lt;br /&gt;&lt;br /&gt;EquityCurveChart()- легенда на пол графика, доступа к ее настройкам никаких. В процессе построения свои значения не показывает и даже после построения график чиcтый... пока не подвигаешь мышкой окно [biggrin] . Доступ к методам и свойствам минимальный.&lt;br /&gt;&lt;br /&gt;Дока на графики вообще на половину не переведена.&lt;br /&gt;&lt;br /&gt;И так по мелочи: Chart.CrossHairAxisLabels - здорово, можно выводить. Вот только куча не нужных цифр после запятой, как округлять? Наверное, опять к разработчикам...&lt;br /&gt;&lt;br /&gt;Бонус: candles.Count выводит в два раза больше свечек, чем положено.&lt;br /&gt;&lt;br /&gt;Если берете стандартные функции из C#, то зачем их урезать?&lt;br /&gt;&lt;br /&gt;Очень вероятно, что я как начинающий, что-то проглядел, не внимательно читал документы, да, и, вообще, нажимал кнопки, какие попали на глаза без разбору. Буду рад, если профессионалы укажут на мои недостатки!&lt;br /&gt;&lt;br /&gt;Заранее спасибо.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>