индикатор фракталы~/topic/4172/indikator-fraktaly/Copyright @ StockSharp Platform LLC 2010 - 20242024-03-28T13:10:41Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/posts/m/28686/Две недели прошло, удалось что-нибудь выяснить? Пока что не удалось. Работаем над этим.2013-12-19T15:34:37Z2013-12-19T15:34:37ZIvanBhttps://stocksharp.ru/users/26984/info@stocksharp.ru<div class="quote"><span class="quotetitle">pft_man <a href="https://stocksharp.ru/posts/m/28664/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Две недели прошло, удалось что-нибудь выяснить?</div></div><br /><br />Пока что не удалось. Работаем над этим.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28664/Две недели прошло, удалось что-нибудь выяснить?2013-12-16T08:02:16Z2013-12-16T08:02:16Zpft_manhttps://stocksharp.ru/users/28735/info@stocksharp.ruДве недели прошло, удалось что-нибудь выяснить?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28575/Иван, что с этим делать-то, возможно поправить? Очень хочется фракталы на графике нарисовать. Разбир...2013-12-01T05:49:29Z2013-12-01T05:49:29ZIvanBhttps://stocksharp.ru/users/26984/info@stocksharp.ru<div class="quote"><span class="quotetitle">pft_man <a href="https://stocksharp.ru/posts/m/28572/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Иван, что с этим делать-то, возможно поправить? Очень хочется фракталы на графике нарисовать.</div></div><br /><br />Разбираемся с вопросом...Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28572/Иван, что с этим делать-то, возможно поправить? Очень хочется фракталы на графике нарисовать.2013-11-30T22:04:05Z2013-11-30T22:04:05Zpft_manhttps://stocksharp.ru/users/28735/info@stocksharp.ruИван, что с этим делать-то, возможно поправить? Очень хочется фракталы на графике нарисовать.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28471/Ok, пытаюсь нарисовать эти фракталы на графике. Сначала попробовал нарисовать их стандартно: Fractal...2013-11-27T23:03:10Z2013-11-29T07:46:46Zpft_manhttps://stocksharp.ru/users/28735/info@stocksharp.ruOk, пытаюсь нарисовать эти фракталы на графике.<br /><br />Сначала попробовал нарисовать их стандартно:<br /><br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_b26ffe40cd094830b7461bf1b70dd376');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_b26ffe40cd094830b7461bf1b70dd376' style='display:none'><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
Fractals fractals = new Fractals();
chartFractalsElement = new ChartIndicatorElement() { Title = "Fractals", Color = Colors.Green, Indicator = fractals, DrawStyle = ChartIndicatorDrawStyles.Dot,
StrokeThickness = 5 };
riCandleChartArea.Elements.Add(chartFractalsElement);
bool final = candle.State == CandleStates.Finished;
IIndicatorValue fractalsValue = fractals.Process(new CandleIndicatorValue(candle) { IsFinal = final });
ChartIndicatorValue chartFractalsValue = new ChartIndicatorValue(fractals, fractalsValue);
if (candle.State == CandleStates.Finished || candle.OpenTime >= candleBounds.Min)
{
this.GuiAsync(() => riChartWindow.RiChart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
{
{ chartFractalsElement, chartFractalsValue }
}));
}
</pre>
</div></div><br /></div><br />Но тут метод ProcessValues вызывает Exception о том, что индикатор пустой (точнее не установлено значение индикатора). И правильно, ведь у нас в индикаторе fractals есть Up и Down и один из них (или оба) всегда будет пустым, потому что обычно на одной свечке не бывает сразу двух фракталов - и вверх и вниз. Поэтому и нарисовать мы это значение не можем, поскольку его просто не существует. Это отличает этот индикатор от, например, BollingerBands, у которого на всех свечках есть значение и верхней полосы и нижней.<br /><br />Поэтому я разделил отрисовку на две части - для фракталов вверх и для фракталов вниз, включив проверку на пустоту индикатора. Для краткости привожу только фрагмент кода для фракталов вверх.<br /><br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_8820f67eb4b4448989f04b337aadd51e');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_8820f67eb4b4448989f04b337aadd51e' style='display:none'><br /><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
Fractals fractals = new Fractals();
chartUpFractalsElement = new ChartIndicatorElement() { Title = "Fractals", Color = Colors.Green, Indicator = fractals.Up, DrawStyle =
ChartIndicatorDrawStyles.Dot, StrokeThickness = 5 };
riCandleChartArea.Elements.Add(chartUpFractalsElement);
bool final = candle.State == CandleStates.Finished;
fractals.Process(new CandleIndicatorValue(candle) { IsFinal = final });
if (fractals.IsFormed)
{
IIndicatorValue upFractalValue = fractals.Up.GetCurrentValue<ShiftedIndicatorValue>();
if (!upFractalValue.IsEmpty)
{
ChartIndicatorValue chartFractalsValue = new ChartIndicatorValue(fractals.Up, upFractalValue);
this.GuiAsync(() => riChartWindow.RiChart.ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>
{ { chartUpFractalsElement, chartFractalsValue } }));
}
}
</pre>
</div></div><br /></div><br />Но теперь почему-то все фракталы (точки на графике) рисуются в левой части графика (см. рисунок)! Горизонтальные линии я добавил сам, они указывают на центральный бар фрактала. Это ошибка в библиотеке или можно в моём коде что-то поправить?<br /><br />************************<br />Update. Кстати, заметил, что эти фракталы рисуются на каждом баре поочереди, начиная с нулевого. Как так, ведь в ProcessValues(candle.OpenTime, new Dictionary<IChartElement, object>) передаётся та свеча, на которой обнаружен фрактал?Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28440/Здравствуйте. Подскажите, пожалуйста, как пользоваться индикатором фракталы? У него (Fractals) есть ...2013-11-26T08:05:36Z2013-11-26T08:05:36ZIvanBhttps://stocksharp.ru/users/26984/info@stocksharp.ru<div class="quote"><span class="quotetitle">pft_man <a href="https://stocksharp.ru/posts/m/28436/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote">Здравствуйте. Подскажите, пожалуйста, как пользоваться индикатором фракталы? <br />У него (Fractals) есть FractalPart Up и Down. Что возвращает метод GetCurrentValue<>()? <br /></div></div><br />T GetCurrentValue<T>()<br />этот метод возвращает значение текущего состояния индикатора в виде типа T, т.е. текущее значение индикатора преобразовывается в тип T, который указан в угловых скобках.<br /><div class="quote"><span class="quotetitle">pft_man <a href="https://stocksharp.ru/posts/m/28436/"><img src="https://stocksharp.ru/images/icon_latest_reply.gif" title="Перейти" alt="Перейти" /></a></span><div class="innerquote"><br />Например, я создал такой индикатор, как проверить, что на данной свечке получен фрактал? Up или Down? Можно ли узнать значение high/low свечки, на которой получен фрактал?<br />Пытался сам разобраться с исходниками индикатора, но что-то не получается.</div></div><br />Примерно так Вы получаете значение фрактала на свечу:<br />fractal.Process(candle)<br />здесь метод Process вернет комплексное значение, состоящее из Up и Down, в виде коллекции.<br />Затем для каждого Up и Down Вы анализируете что вернет метод GetCurrentValue(), и на основе этого делаете вывод о том, что у Вас Up или Down.<br />И если хотите посмотреть свойства свечи, по которой сработал индикатор, то анализируете свечу candle.Copyright @ StockSharp Platform LLC 2010 - 2024https://stocksharp.ru/posts/m/28436/Здравствуйте. Подскажите, пожалуйста, как пользоваться индикатором фракталы? У него (Fractals) есть ...2013-11-25T19:08:17Z2013-11-25T19:08:17Zpft_manhttps://stocksharp.ru/users/28735/info@stocksharp.ruЗдравствуйте. Подскажите, пожалуйста, как пользоваться индикатором фракталы? <br />У него (Fractals) есть FractalPart Up и Down. Что возвращает метод GetCurrentValue<>()? Например, я создал такой индикатор, как проверить, что на данной свечке получен фрактал? Up или Down? Можно ли узнать значение high/low свечки, на которой получен фрактал?<br />Пытался сам разобраться с исходниками индикатора, но что-то не получается.Copyright @ StockSharp Platform LLC 2010 - 2024