﻿<?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">Как зарегистрировать свой CandleBuilder?</title>
  <id>~/topic/15835/kak-zaregistrirovat-svoi-candlebuilder/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-05-02T12:50:44Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=15835" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/56148/</id>
    <title type="text">Документация давно не соответствует актуальному коду. Как это сделать можно понять только путем изуч...</title>
    <published>2021-05-07T17:08:43Z</published>
    <updated>2021-05-09T14:04:52Z</updated>
    <author>
      <name>Sprite</name>
      <uri>https://stocksharp.com/users/104190/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Документация давно не соответствует актуальному коду. Как это сделать  можно понять только путем изучения регистрации встроенных свечей в платформе.&lt;br /&gt;&lt;br /&gt;В общем мне пришлось долго возиться чтобы понять что там внутри к чему, но в итоге получил рабочий код.&lt;br /&gt;Извиняюсь что выдрал из кода приложения, со спецификой не относящейся к сути вопроса, но думаю понять что нужно сделать можно.&lt;br /&gt;Т.е. в сумме:&lt;br /&gt;1. Регистрируем в платформе свои типы сообщений и маркет даты.&lt;br /&gt;2. Регистрируем в системном конвертере сообщений (MessageConverterHelper) свои типы.&lt;br /&gt;3. Регистрируем свой тип свечей в системном классе StockSharp.Messages.Extensions&lt;br /&gt;4. Как правильно делать сообщения, аргументы свечей, билдер тоже нужно смотреть не в примерах, а в исходниках библиотеки.&lt;br /&gt;&lt;br /&gt;    public static class ExtendedDataTypes&lt;br /&gt;    {&lt;br /&gt;        public static MarketDataTypes CandleRangeXV =&amp;gt; (MarketDataTypes)1001;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static class ExtendedMessageTypes&lt;br /&gt;    {&lt;br /&gt;        public static MessageTypes CandleRangeXV =&amp;gt; (MessageTypes)1001;&lt;br /&gt;    }&lt;br /&gt;.......&lt;br /&gt;        private static void RegisterCandles(Connector connector)&lt;br /&gt;        {&lt;br /&gt;            RegisterCandle(&lt;br /&gt;                connector,&lt;br /&gt;                new RangeXVCandleBuilder(new InMemoryExchangeInfoProvider()),&lt;br /&gt;                () =&amp;gt; new RangeXVCandle(),&lt;br /&gt;                () =&amp;gt; new RangeXVCandleMessage(),&lt;br /&gt;                ExtendedMessageTypes.CandleRangeXV,&lt;br /&gt;                ExtendedDataTypes.CandleRangeXV,&lt;br /&gt;                str =&amp;gt; str.ToUnit(),&lt;br /&gt;                arg =&amp;gt; arg.ToString());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static void RegisterCandle&amp;lt;TCandle, TMessage, Arg&amp;gt;(Connector connector,&lt;br /&gt;                                                                   ICandleBuilder candleBuilder,&lt;br /&gt;                                                                   Func&amp;lt;TCandle&amp;gt; candleCreator,&lt;br /&gt;                                                                   Func&amp;lt;TMessage&amp;gt; candleMessageCreator,&lt;br /&gt;                                                                   MessageTypes messageType,&lt;br /&gt;                                                                   MarketDataTypes dataType,&lt;br /&gt;                                                                   Func&amp;lt;string, Arg&amp;gt; argParserTo,&lt;br /&gt;                                                                   Func&amp;lt;Arg, string&amp;gt; argParserFrom) where TCandle : Candle where TMessage : CandleMessage&lt;br /&gt;        {&lt;br /&gt;            var provider = connector.Adapter.StorageProcessor.CandleBuilderProvider;&lt;br /&gt;            var candleType = candleCreator().GetType();&lt;br /&gt;            var candleMessageType = candleMessageCreator().GetType();&lt;br /&gt;            var candleFileName = candleMessageType.Name.Remove(nameof(Message));&lt;br /&gt;&lt;br /&gt;            provider.Register(candleBuilder);&lt;br /&gt;&lt;br /&gt;            if (!MessageConverterHelper.AllCandleTypes.Contains(candleType))&lt;br /&gt;            {&lt;br /&gt;                MessageConverterHelper.RegisterCandle(candleCreator, candleMessageCreator);&lt;br /&gt;                StockSharp.Messages.Extensions.RegisterCandleType(candleMessageType, messageType, dataType, candleFileName, argParserTo, argParserFrom);&lt;br /&gt;            }&lt;br /&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/56150/</id>
    <title type="text">Благодарю за ответ) О не покажите реализацию классов: RangeXVCandleBuilder, RangeXVCandle, RangeXVCa...</title>
    <published>2021-05-07T17:53:04Z</published>
    <updated>2021-05-09T14:04:49Z</updated>
    <author>
      <name>Sprite</name>
      <uri>https://stocksharp.com/users/104190/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Greenn &lt;a href="https://stocksharp.com/posts/m/56149/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Благодарю за ответ) О не покажите реализацию классов: RangeXVCandleBuilder, RangeXVCandle, RangeXVCandleMessage?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/blob/master/Algo/Candles/Compression/CandleBuilder.cs#L607
" title="https://github.com/StockSharp/StockSharp/blob/master/Algo/Candles/Compression/CandleBuilder.cs#L607
"&gt;https://github.com/Stock...n/CandleBuilder.cs#L607
&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/blob/master/Messages/CandleMessage.cs#L495
" title="https://github.com/StockSharp/StockSharp/blob/master/Messages/CandleMessage.cs#L495
"&gt;https://github.com/Stock...s/CandleMessage.cs#L495
&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/blob/master/Algo/Candles/Candle.cs#L427
" title="https://github.com/StockSharp/StockSharp/blob/master/Algo/Candles/Candle.cs#L427
"&gt;https://github.com/Stock.../Candles/Candle.cs#L427
&lt;/a&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/56151/</id>
    <title type="text">Благодарю за ответ) О не покажите реализацию классов: RangeXVCandleBuilder, RangeXVCandle, RangeXVCa...</title>
    <published>2021-05-07T18:01:21Z</published>
    <updated>2021-05-07T18:01:21Z</updated>
    <author>
      <name>Greenn</name>
      <uri>https://stocksharp.com/users/99877/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;sprite &lt;a href="https://stocksharp.com/posts/m/56150/" 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;Greenn &lt;a href="https://stocksharp.com/posts/m/56149/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Благодарю за ответ) О не покажите реализацию классов: RangeXVCandleBuilder, RangeXVCandle, RangeXVCandleMessage?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/blob/master/Algo/Candles/Compression/CandleBuilder.cs#L607
" title="https://github.com/StockSharp/StockSharp/blob/master/Algo/Candles/Compression/CandleBuilder.cs#L607
"&gt;https://github.com/Stock...n/CandleBuilder.cs#L607
&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/blob/master/Messages/CandleMessage.cs#L495
" title="https://github.com/StockSharp/StockSharp/blob/master/Messages/CandleMessage.cs#L495
"&gt;https://github.com/Stock...s/CandleMessage.cs#L495
&lt;/a&gt;&lt;br /&gt;&lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/blob/master/Algo/Candles/Candle.cs#L427
" title="https://github.com/StockSharp/StockSharp/blob/master/Algo/Candles/Candle.cs#L427
"&gt;https://github.com/Stock.../Candles/Candle.cs#L427
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&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/56149/</id>
    <title type="text">Документация давно не соответствует актуальному коду. Как это сделать можно понять только путем изуч...</title>
    <published>2021-05-07T17:27:24Z</published>
    <updated>2021-05-07T17:27:24Z</updated>
    <author>
      <name>Greenn</name>
      <uri>https://stocksharp.com/users/99877/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;sprite &lt;a href="https://stocksharp.com/posts/m/56148/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Документация давно не соответствует актуальному коду. Как это сделать  можно понять только путем изучения регистрации встроенных свечей в платформе.&lt;br /&gt;&lt;br /&gt;В общем мне пришлось долго возиться чтобы понять что там внутри к чему, но в итоге получил рабочий код.&lt;br /&gt;Извиняюсь что выдрал из кода приложения, со спецификой не относящейся к сути вопроса, но думаю понять что нужно сделать можно.&lt;br /&gt;Т.е. в сумме:&lt;br /&gt;1. Регистрируем в платформе свои типы сообщений и маркет даты.&lt;br /&gt;2. Регистрируем в системном конвертере сообщений (MessageConverterHelper) свои типы.&lt;br /&gt;3. Регистрируем свой тип свечей в системном классе StockSharp.Messages.Extensions&lt;br /&gt;4. Как правильно делать сообщения, аргументы свечей, билдер тоже нужно смотреть не в примерах, а в исходниках библиотеки.&lt;br /&gt;&lt;br /&gt;    public static class ExtendedDataTypes&lt;br /&gt;    {&lt;br /&gt;        public static MarketDataTypes CandleRangeXV =&amp;gt; (MarketDataTypes)1001;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public static class ExtendedMessageTypes&lt;br /&gt;    {&lt;br /&gt;        public static MessageTypes CandleRangeXV =&amp;gt; (MessageTypes)1001;&lt;br /&gt;    }&lt;br /&gt;.......&lt;br /&gt;        private static void RegisterCandles(Connector connector)&lt;br /&gt;        {&lt;br /&gt;            RegisterCandle(&lt;br /&gt;                connector,&lt;br /&gt;                new RangeXVCandleBuilder(new InMemoryExchangeInfoProvider()),&lt;br /&gt;                () =&amp;gt; new RangeXVCandle(),&lt;br /&gt;                () =&amp;gt; new RangeXVCandleMessage(),&lt;br /&gt;                ExtendedMessageTypes.CandleRangeXV,&lt;br /&gt;                ExtendedDataTypes.CandleRangeXV,&lt;br /&gt;                str =&amp;gt; str.ToUnit(),&lt;br /&gt;                arg =&amp;gt; arg.ToString());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private static void RegisterCandle&amp;lt;TCandle, TMessage, Arg&amp;gt;(Connector connector,&lt;br /&gt;                                                                   ICandleBuilder candleBuilder,&lt;br /&gt;                                                                   Func&amp;lt;TCandle&amp;gt; candleCreator,&lt;br /&gt;                                                                   Func&amp;lt;TMessage&amp;gt; candleMessageCreator,&lt;br /&gt;                                                                   MessageTypes messageType,&lt;br /&gt;                                                                   MarketDataTypes dataType,&lt;br /&gt;                                                                   Func&amp;lt;string, Arg&amp;gt; argParserTo,&lt;br /&gt;                                                                   Func&amp;lt;Arg, string&amp;gt; argParserFrom) where TCandle : Candle where TMessage : CandleMessage&lt;br /&gt;        {&lt;br /&gt;            var provider = connector.Adapter.StorageProcessor.CandleBuilderProvider;&lt;br /&gt;            var candleType = candleCreator().GetType();&lt;br /&gt;            var candleMessageType = candleMessageCreator().GetType();&lt;br /&gt;            var candleFileName = candleMessageType.Name.Remove(nameof(Message));&lt;br /&gt;&lt;br /&gt;            provider.Register(candleBuilder);&lt;br /&gt;&lt;br /&gt;            if (!MessageConverterHelper.AllCandleTypes.Contains(candleType))&lt;br /&gt;            {&lt;br /&gt;                MessageConverterHelper.RegisterCandle(candleCreator, candleMessageCreator);&lt;br /&gt;                StockSharp.Messages.Extensions.RegisterCandleType(candleMessageType, messageType, dataType, candleFileName, argParserTo, argParserFrom);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;Учитывая что это не задокументировано, то с каждым апдейтом надо проверять на работоспособность.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Благодарю за ответ) О не покажите реализацию классов: RangeXVCandleBuilder, RangeXVCandle, RangeXVCandleMessage?&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/56146/</id>
    <title type="text">Добрый день. Как зарегистрировать свой CandleBuilder? Следующий код _connector.Adapter.CandleBuilder...</title>
    <published>2021-05-07T16:19:35Z</published>
    <updated>2021-05-07T16:19:35Z</updated>
    <author>
      <name>Greenn</name>
      <uri>https://stocksharp.com/users/99877/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Добрый день. Как зарегистрировать свой CandleBuilder? Следующий код  _connector.Adapter.CandleBuilderProvider.Register(new TickCandleBuilder()); - НЕРАБОЧИЙ&lt;br /&gt;Спасибо.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>