﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Дефект в пользователе кастомного строителя свечей(думаю, в CandleManager)</title>
  <id>~/topic/3129/defekt-v-polzovatele-kastomnogo-stroitelya-svechei(dumayu-v-candlemanager)/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-11T07:37:24Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3129" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/22493/</id>
    <title type="text">Наверно уже не смогу проверить - я долго химичил со своей реализацией CandleBuilder (был ряд других ...</title>
    <published>2012-11-13T19:54:41Z</published>
    <updated>2012-11-13T19:55:49Z</updated>
    <author>
      <name>Tauler</name>
      <uri>https://stocksharp.ru/users/26822/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Наверно уже не смогу проверить - я долго химичил со своей реализацией CandleBuilder (был ряд других проблем), так реализация, которая есть сейчас не страдает такими проблемами и на 4.1.4 :) попробую найти старую ревизию, воспроизвести на 4.1.4, потом на 4.1.6&lt;/p&gt;
&lt;p&gt;Я смотрю, на 4.1.6 устранился еще один дефект (я о нем не писал):
если в создании новой свечи я полю OpenTime присваивал значение из сделки, но в один прекрасный момент серия ранее сформированных свечей очищалась&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;protected override RangeHLCandle CreateCandle(StockSharp.Algo.Candles.CandleSeries series, ICandleBuilderSourceValue value)
        {
            RangeHLCandle candle = new RangeHLCandle
                                       {
                                           Range = (decimal) series.Arg
                                       };
            FirstInitCandle(series, candle, value);
            

            candle.OpenTime = value.Time;
            candle.CloseTime = value.Time;
            candle.LowTime = value.Time;

            if (prevClose == 0)
                return candle;

            candle.OpenPrice = prevClose;

            this.AddInfoLog(String.Format(&amp;quot;Created, Open = {0}&amp;quot;, candle.OpenPrice));
            return candle;
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Мне приходилось комментировать candle.OpenTime = value.Time;. Сейчас вроде все работает, завтра тоже перепроверю на 4.1.4
Я так понял, починили работу CandleBuilder с  RawConvertableCandleBuilderSource&lt;Trade&gt; ?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22489/</id>
    <title type="text">Проверьте на 4.1.6 </title>
    <published>2012-11-13T18:56:01Z</published>
    <updated>2012-11-13T18:56:01Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.ru/users/2826/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Проверьте на 4.1.6&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22200/</id>
    <title type="text">Коллеги, проблему то я обошел. Но ведь бага есть это факт. Надо в коде закладываться фикс в дальнейш...</title>
    <published>2012-11-01T19:03:32Z</published>
    <updated>2012-11-01T19:03:32Z</updated>
    <author>
      <name>Tauler</name>
      <uri>https://stocksharp.ru/users/26822/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Коллеги,
проблему то я обошел. Но ведь бага есть это факт. Надо в коде закладываться фикс в дальнейших версиях?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22182/</id>
    <title type="text">Вкратце - если после CreateCandle IsCandleFinishedBeforeChange выдал true (то есть не дошло до Updat...</title>
    <published>2012-10-31T21:10:45Z</published>
    <updated>2012-10-31T21:10:45Z</updated>
    <author>
      <name>Tauler</name>
      <uri>https://stocksharp.ru/users/26822/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Вкратце - если после CreateCandle IsCandleFinishedBeforeChange выдал true (то есть не дошло до UpdateCande) в следующий CreateCandle придет ровно то же value, что и в предыдущий CreateCandle&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22181/</id>
    <title type="text">Так два раза подряд приходит значение v3 в CreateCandle :) Что же тут правильного? </title>
    <published>2012-10-31T21:08:20Z</published>
    <updated>2012-10-31T21:08:20Z</updated>
    <author>
      <name>Tauler</name>
      <uri>https://stocksharp.ru/users/26822/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Так два раза подряд приходит значение v3 в CreateCandle :) Что же тут правильного?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22180/</id>
    <title type="text">Tauler: так, вот , в ситуации, когда сразу после CreateCandle(value1) срабатывает IsCandleFinishedBe...</title>
    <published>2012-10-31T21:00:46Z</published>
    <updated>2012-10-31T21:00:46Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(22173)" rel="nofollow" target="_blank"&gt;Tauler&lt;/a&gt;:&lt;/strong&gt;
так, вот , в ситуации, когда сразу после CreateCandle(value1) срабатывает IsCandleFinishedBeforeChange(свеча, значение)= истина, в следующий вызов CreateCandle снова приходит value1 (то есть предыдущее значение)!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;И это правильное решение. Если свечка старая, и ее не надо обновлять. Range свечки кстати поддерживаются и так стандартно.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22177/</id>
    <title type="text">Вот лог 2012.10.31 23:07:45.499| |RangeHLCandleBuilder|Создана свеча(CreateCandle), value.ID = 1 201...</title>
    <published>2012-10-31T19:10:39Z</published>
    <updated>2012-10-31T19:10:39Z</updated>
    <author>
      <name>Tauler</name>
      <uri>https://stocksharp.ru/users/26822/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Вот лог&lt;/p&gt;
&lt;p&gt;2012.10.31 23:07:45.499|       |RangeHLCandleBuilder|Создана свеча(CreateCandle), value.ID = 1
2012.10.31 23:07:45.553|       |RangeHLCandleBuilder|Cвеча обновлена(UpdateCandle), value.ID = 1
2012.10.31 23:07:45.556|       |RangeHLCandleBuilder|Cвеча обновлена(UpdateCandle), value.ID = 2
&lt;mark&gt;2012.10.31 23:07:45.556|       |RangeHLCandleBuilder|Cвеча готова(IsCandleFinishedBeforeChange == true), value.ID = 3
2012.10.31 23:07:45.556|       |RangeHLCandleBuilder|Создана свеча(CreateCandle), value.ID = 3
2012.10.31 23:07:45.557|       |RangeHLCandleBuilder|Cвеча готова(IsCandleFinishedBeforeChange == true),, value.ID  = 3
2012.10.31 23:07:45.557|       |RangeHLCandleBuilder|Создана свеча(CreateCandle), value.ID = 3
2012.10.31 23:07:45.557|       |RangeHLCandleBuilder|Cвеча обновлена(UpdateCandle), value.ID = 3&lt;/mark&gt;
2012.10.31 23:07:45.558|       |RangeHLCandleBuilder|Cвеча готова(IsCandleFinishedBeforeChange == true),, value.ID  = 4
2012.10.31 23:07:45.558|       |RangeHLCandleBuilder|Создана свеча(CreateCandle), value.ID = 4
2012.10.31 23:07:45.558|       |RangeHLCandleBuilder|Cвеча готова(IsCandleFinishedBeforeChange == true),, value.ID  = 4
2012.10.31 23:07:45.558|       |RangeHLCandleBuilder|Создана свеча(CreateCandle), value.ID = 4
2012.10.31 23:07:45.558|       |RangeHLCandleBuilder|Cвеча обновлена(UpdateCandle), value.ID = 4
2012.10.31 23:07:45.558|       |RangeHLCandleBuilder|Cвеча готова(IsCandleFinishedBeforeChange == true),, value.ID  = 5&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22176/</id>
    <title type="text">на 4.1.5 то же самое </title>
    <published>2012-10-31T18:52:04Z</published>
    <updated>2012-10-31T18:52:04Z</updated>
    <author>
      <name>Tauler</name>
      <uri>https://stocksharp.ru/users/26822/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;на 4.1.5 то же самое&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22174/</id>
    <title type="text">Опишу последовательность вызова методов MyCandleBulder : CandleBuilder упростил вызовы. v3 - это пар...</title>
    <published>2012-10-31T18:38:12Z</published>
    <updated>2012-10-31T18:38:12Z</updated>
    <author>
      <name>Tauler</name>
      <uri>https://stocksharp.ru/users/26822/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Опишу последовательность вызова методов MyCandleBulder : CandleBuilder&lt;MyCandle&gt;&lt;/p&gt;
&lt;p&gt;упростил вызовы. v3 - это параметр ICandleBuilderSourceValue value&lt;/p&gt;
&lt;p&gt;CreateCandle(v1)
IsCandleFinishedBeforeChange(v1) = false
UpdateCandle(v1)
IsCandleFinishedBeforeChange(v2) = false
UpdateCandle(v2)
IsCandleFinishedBeforeChange(v3) = true
CreateCandle(v3)
IsCandleFinishedBeforeChange(v3) = true
&lt;mark&gt;CreateCandle(v3)  -- снова значение номер 3!&lt;/mark&gt;
IsCandleFinishedBeforeChange(v3) = false
UpdateCandle(v3)
ну и так далее&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22173/</id>
    <title type="text">Коллеги, по-моему нашел ошибку в использовании кастомного строителя свечей (наследника CandleBuilder...</title>
    <published>2012-10-31T18:09:26Z</published>
    <updated>2012-10-31T18:31:15Z</updated>
    <author>
      <name>Tauler</name>
      <uri>https://stocksharp.ru/users/26822/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Коллеги,
по-моему нашел ошибку в использовании кастомного строителя свечей (наследника CandleBuilder&lt;of Type&gt;)&lt;/p&gt;
&lt;p&gt;как я понял, алгоритм, который использования CandeBulder следующий:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CreateCandle (значение)&lt;/li&gt;
&lt;li&gt;IsCandleFinishedBeforeChange(свеча, значение)
если истина,то п.1 со следующим value
если ложь, то
3.UpdateCandle(candle, value)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;так, вот , в ситуации, когда сразу после CreateCandle(value1) срабатывает IsCandleFinishedBeforeChange(свеча, значение)= истина, в следующий вызов CreateCandle снова приходит value1 (то есть предыдущее значение)!&lt;/p&gt;
&lt;p&gt;Если же хотя бы раз отрабатывает UpdateCandle, то все работает правильно.&lt;/p&gt;
&lt;p&gt;Из-за этого получается лишняя свечка (в моем строителе), либо вообще возможен бесконечный цикл с одним и тем же value.&lt;/p&gt;
&lt;p&gt;Это так срабатывает на 4.1.4&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>