Отрисовка стопов без вертикальных линий~/topic/10763/otrisovka-stopov-bez-vertikalnyh-linii/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T08:17:18Zhttps://stocksharp.com/images/logo.pnghttps://stocksharp.com/posts/m/51379/Вы пользуетесь сигнатурой этого метода? Быть может я что то делаю не так, но я не могу запихать doub...2020-09-10T22:31:43Z2020-09-10T22:31:43ZКонстантинhttps://stocksharp.com/users/98279/info@stocksharp.com<div class="quote"><span class="quotetitle">sprite <a href="https://stocksharp.com/posts/m/51366/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote"><div class="quote"><span class="quotetitle">Константин <a href="https://stocksharp.com/posts/m/51365/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Вы пользуетесь сигнатурой этого метода? Быть может я что то делаю не так, но я не могу запихать double в метод так как его невозможно привести к типу IIndicatorValue.</div></div><br />Да, но у этого метода есть куча перегрузок. Если ваш _indicatorElement будет типом ChartLineElement - то всё должно получиться.<br />UPDATE По сути если вам не надо делать разрывы больше чем соседние свечки вы можете просто поменяете тип линии (DrawStyle) на Dots и получите вместо линии, как на картинке в первом посте, серии горизонтальных точек с разрывами. Или, если точки не подходят и хочется именно линии, то нужно для какой-то свечки организовать разрыв, вставляя double.NaN или сделать два элемента и рисовать их поочередно заполняя то один то другой значениями double.NaN. Ну или как писал support - используйте аннотации, но там есть свои баги.<br /><br /></div></div><br /><br />Одним double.nan не получилось обойтись. Сделал на основе индикатора и рендера отрисовки. Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/51366/Вы пользуетесь сигнатурой этого метода? Быть может я что то делаю не так, но я не могу запихать doub...2020-09-07T20:18:26Z2020-09-07T23:12:07ZSpritehttps://stocksharp.com/users/104190/info@stocksharp.com<div class="quote"><span class="quotetitle">Константин <a href="https://stocksharp.com/posts/m/51365/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">Вы пользуетесь сигнатурой этого метода? Быть может я что то делаю не так, но я не могу запихать double в метод так как его невозможно привести к типу IIndicatorValue.</div></div><br />Да, но у этого метода есть куча перегрузок. Если ваш _indicatorElement будет типом ChartLineElement - то всё должно получиться.<br />UPDATE По сути если вам не надо делать разрывы больше чем соседние свечки вы можете просто поменяете тип линии (DrawStyle) на Dots и получите вместо линии, как на картинке в первом посте, серии горизонтальных точек с разрывами. Или, если точки не подходят и хочется именно линии, то нужно для какой-то свечки организовать разрыв, вставляя double.NaN или сделать два элемента и рисовать их поочередно заполняя то один то другой значениями double.NaN. Ну или как писал support - используйте аннотации, но там есть свои баги.<br /><br />Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/51365/if (drawLine) gr.Add(_indicatorElement, double.NaN); Вы пользуетесь сигнатурой этого метода? Быть мо...2020-09-07T20:05:51Z2020-09-07T20:05:51ZКонстантинhttps://stocksharp.com/users/98279/info@stocksharp.com<div class="quote"><span class="quotetitle">sprite <a href="https://stocksharp.com/posts/m/51364/"><img src="https://stocksharp.com/images/icon_latest_reply.gif" title="Go to" alt="Go to" /></a></span><div class="innerquote">if (drawLine)<br />gr.Add(_indicatorElement, double.NaN);<br /></div></div><br />Вы пользуетесь сигнатурой этого метода? Быть может я что то делаю не так, но я не могу запихать double в метод так как его невозможно привести к типу IIndicatorValue.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/51364/if (drawLine) gr.Add(_indicatorElement, (double)longValue); else gr.Add(_indicatorElement, double.Na...2020-09-07T19:24:23Z2020-09-07T19:24:23ZSpritehttps://stocksharp.com/users/104190/info@stocksharp.comif (drawLine)<br />gr.Add(_indicatorElement, (double)longValue);<br />else<br />gr.Add(_indicatorElement, double.NaN);<br /><br />Идея в том, что нужно хоть что-то рисовать, чтобы значения индикатора не пропускались и из-за этого следующие значения не съезжали влево по горизонтальной оси.<br />Еще момент - если вы так нарисуете линию только в одной свечке, а слева и справа значения будут double.NaN - то вы не увидите линию. Для этого можно использовать стиль линии Dots.<br />Собственно так в StockSharp рисуются фракталы.<br /><br />К сожалению так нельзя делать со свечками, т.е. нельзя просто так взять и нарисовать индикатором одну свечку в нужном месте. Поясню: допустим у вас рисуются свечки на оси + рисуются другие свечки индикатором на этой же оси, но другим элементом ChartCandleElement. Так вот, пропуск вторых свечек приведет к тому, что как ни группируй свечки будут рисоваться одна за другой, без пропусков. И по сути вы правы - группировка по времени при таком использовании не работает. И еще момент - свечки нельзя рисовать в кастомном рендерере (унаследовав от BaseChartIndicatorPainter), почему так сделано - для меня загадка.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/51363/Судя по всему вопрос был отклонен. В связи с этим вопрос: Как рисовать стопы на истории? Если группи...2020-09-07T16:55:56Z2020-09-07T17:08:44ZКонстантинhttps://stocksharp.com/users/98279/info@stocksharp.comСудя по всему вопрос был отклонен. В связи с этим вопрос: Как рисовать стопы на истории?<br />Если группировка данных происходит по времени<br /><div class="code"><strong>Code</strong><div class="innercode"><br />var chartData = new ChartDrawData();<br />var gr = chartData.Group(candle.OpenTime);<br /></div></div><br />то следуя логике если я буду рисовать линию по 10 свечей так<br /><div class="code"><strong>Code</strong><div class="innercode"><br />if (_count < 10)<br /> gr.Add(_indicatorElement, longValue);<br />else if (_count > 20) _count = 0;<br /></div></div><br />то линия должна прерываться каждые 10 свечей. <br />Вместо этого линия рисуется без разрывов, но пропуск 10 свечей учтен. Линия получается в два раза короче. Какой смысл в группировке по времени, если индикатор никаким образом не реагирует на это?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/49103/На самом деле это очень нужная опция. Так как без нее очень сложно разбираться где был выставлен и к...2019-12-02T14:08:18Z2019-12-02T14:08:18ZKochttps://stocksharp.com/users/103764/info@stocksharp.comНа самом деле это очень нужная опция. Так как без нее очень сложно разбираться где был выставлен и как подтягивался трейл стоп. Рисовать индикатором слегка деревянный способ.[suspicious]Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/48315/Здравствуйте. Пока на стадии рассмотрения. Как будут новости мы оповестим в данном топике.2019-09-01T12:17:12Z2019-09-01T12:17:12ZSupporthttps://stocksharp.com/users/97869/info@stocksharp.comЗдравствуйте. Пока на стадии рассмотрения. Как будут новости мы оповестим в данном топике.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/48285/Добрый день. Не было ли принято решение по данному вопросу?2019-08-28T16:28:31Z2019-08-28T16:28:31ZКонстантинhttps://stocksharp.com/users/98279/info@stocksharp.comДобрый день. Не было ли принято решение по данному вопросу?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/47820/Добрый день Да, пока только через создание новых элементов. Мы обсудим возможность введение единично...2019-06-16T20:54:39Z2019-06-16T20:54:39ZSupporthttps://stocksharp.com/users/97869/info@stocksharp.comДобрый день <br /><br />Да, пока только через создание новых элементов. Мы обсудим возможность введение единичного элемента графика.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/47818/Если я правильно понимаю решения в настоящее время нет. Если да то у меня сопутствующий вопрос - Пла...2019-06-16T20:26:28Z2019-06-16T20:26:28ZКонстантинhttps://stocksharp.com/users/98279/info@stocksharp.comЕсли я правильно понимаю решения в настоящее время нет. Если да то у меня сопутствующий вопрос - Планируется ли реализация данного решения в будущем?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/47743/Если _annotation объявить как поле типа ChartAnnotation один раз, добавить его на график Chart.AddEl...2019-06-10T20:19:01Z2019-06-10T20:19:01ZКонстантинhttps://stocksharp.com/users/98279/info@stocksharp.comЕсли _annotation объявить как поле типа ChartAnnotation один раз, добавить его на график Chart.AddElement(_areaComb, _annotation) и добавлять на него новые данные ChartDrawData.AnnotationData, то предыдущая линия стирается и начитает прорисовываться новая.<br />Можно ли как то рисовать не одну линию, а несколько?<br />Неужели для каждого стопа нужно добавлять новый элемент ChartAnnotation на график? Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/47712/Добрый день Вы можете использовать аннотации для этого: var annotation = new ChartAnnotation { Type ...2019-06-08T15:27:01Z2019-06-08T15:27:01ZSupporthttps://stocksharp.com/users/97869/info@stocksharp.comДобрый день <br /><br />Вы можете использовать аннотации для этого:<br /><br /><div class="code"><strong>Code</strong><div class="innercode">var annotation = new ChartAnnotation { Type = ChartAnnotationTypes.LineAnnotation };<br /> Chart.AddElement(_areaComb, annotation);<br /><br /> var data = new ChartDrawData.AnnotationData<br /> {<br /> X1 = new DateTimeOffset(2015, 8, 03, 5, 0, 0, TimeSpan.FromHours(3)),<br /> X2 = new DateTimeOffset(2015, 8, 03, 5, 30, 0, TimeSpan.FromHours(3)),<br /> Y1 = 2098.5m,<br /> Y2 = 2098.5m,<br /> IsVisible = true,<br /> IsEditable = false,<br /> Stroke = Brushes.Red,<br /> CoordinateMode = AnnotationCoordinateMode.Absolute,<br /> };<br /><br /> var dd = new ChartDrawData();<br /> dd.Add(annotation, data);<br /><br /> Chart.Draw(dd);</div></div><br /><br />На примере SampleChart это выглядит так:<br /><br /><a href='https://stocksharp.com/file/109242/37b04f5a757a10692c5d86dce3070d09_png/' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="https://stocksharp.com/file/109242/37b04f5a757a10692c5d86dce3070d09_png/?size=500x500" alt="37b04f5a757a10692c5d86dce3070d09.png" title="37b04f5a757a10692c5d86dce3070d09.png" /></a>Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.com/posts/m/47666/Добрый день! Скажите пожалуйста как можно отрисовать стопы без вертикальных линий? Дело в том что ко...2019-06-03T20:41:31Z2019-06-03T20:58:02ZКонстантинhttps://stocksharp.com/users/98279/info@stocksharp.comДобрый день! Скажите пожалуйста как можно отрисовать стопы без вертикальных линий? Дело в том что когда позиция переворачивается то линия стопа переносится на противоположную сторону, и этот перенос соединяется неразрывной линией.<br /><a href='https://pp.userapi.com/c849124/v849124139/1a8174/gHWqfa5hyK8.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="https://pp.userapi.com/c849124/v849124139/1a8174/gHWqfa5hyK8.jpg" style='max-width: 600px;' alt=""/></a><br />Может в рендере нужно использовать какие то классы реализующие IChartElement или в свойство Style устанавливать какое значение?<br /><br />Индикатор такой:<br /><div class="code"><strong>Code</strong><div class="innercode"><br /> public class StopLossIndicator : BaseIndicator<br /> {<br /> protected override IIndicatorValue OnProcess(IIndicatorValue input)<br /> {<br /> var value = input.GetValue<decimal>();<br /> IsFormed = value != 0;<br /> return new DecimalIndicatorValue(this, value);<br /> }<br /> }<br /></div></div><br />Рендер такой:<br /><div class="code"><strong>Code</strong><div class="innercode">public class StopLossPainter : BaseChartIndicatorPainter<br /> {<br /> [Display(Name = "Стоп-Лосс", Description = "Область графика для отрисовки стопа")]<br /> public ChartLineElement StopLossLine { get; }<br /><br /><br /> public StopLossPainter()<br /> {<br /> StopLossLine = new ChartLineElement()<br /> {<br /> Style = ChartIndicatorDrawStyles.Line, StrokeThickness = 2, Color = Colors.Red<br /> };<br /> AddChildElement(StopLossLine);<br /> }<br /><br /><br /> protected override bool OnDraw()<br /> {<br /> var ind = (StopLossIndicator)Indicator;<br /> var result = false;<br /> result |= DrawValues(ind, StopLossLine);<br /><br /> return result;<br /> }<br /> }</div></div><br /><br />Отрисовка как:<br /><div class="code"><strong>Code</strong><div class="innercode"><br />.....<br />StopLoss = new StopLossIndicator();<br />.....<br />private void OnCandleSeriesProcessing(CandleSeries candleSeries, Candle candle)<br /> {<br /> var chartDrawData = new ChartDrawData();<br /> var chartDrawDataItem = chartDrawData.Group(candle.OpenTime);<br /> chartDrawDataItem.Add(ChartCandleElement, candle);<br /><br /> var dataStop = StopLoss.Process(StopPriсe, candle.State == CandleStates.Finished);<br /> chartDrawDataItem.Add(StopLossElement, dataStop);<br /><br /> Chart.Draw(chartDrawData);<br />}<br /></div></div>Copyright @ StockSharp Platform LLC 2010 - 2024