﻿<?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">Как добавить новый тип свечей?</title>
  <id>~/topic/1562/kak-dobavit-novyi-tip-svechei/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-22T09:13:57Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=1562" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/7902/</id>
    <title type="text">Спасибо, заработало! RangeDelayCandleFactory candleFactory = new RangeDelayCandleFactory(); candleMa...</title>
    <published>2011-05-05T09:20:17Z</published>
    <updated>2011-05-05T09:20:17Z</updated>
    <author>
      <name>Garic</name>
      <uri>https://stocksharp.ru/users/809/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Спасибо, заработало!&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
RangeDelayCandleFactory candleFactory = new RangeDelayCandleFactory();                
candleManager.UnRegisterCandleFactory&amp;lt;RangeCandle&amp;gt;();                
candleManager.RegisterCandleFactory(candleFactory);
candleManager.RegisterCandles&amp;lt;RangeCandle, Unit&amp;gt;(Security, priceRange);

&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7881/</id>
    <title type="text">Garic: При попытке candleManager.RegisterCandleFactory(candleFactory) - ругается что для RangeCandle...</title>
    <published>2011-05-04T15:10:40Z</published>
    <updated>2011-05-04T15:10:40Z</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(7873)" rel="nofollow" target="_blank"&gt;Garic&lt;/a&gt;:&lt;/strong&gt;
При попытке candleManager.RegisterCandleFactory(candleFactory) - ругается что для RangeCandles фабрика уже зарегистрирована.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Нужно сделать UnRegisterCandleFactory для старой фабрики.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(7873)" rel="nofollow" target="_blank"&gt;Garic&lt;/a&gt;:&lt;/strong&gt;
Но свечи так и не появились. Если делать candleManager.RegisterRangeCandles(Security, priceRange) - свечки строятся
Что я ещё упустил?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Упустили тот момент, что есть регистрация фабрики свечек и самих свечек. Последние зависят от параметра (priceRange может быть бесконечно много, а фабрика одна). И да, нужно тогда не RegisterRangeCandles, а RegisterCandles&amp;lt;TCandle, TArg&amp;gt;(Security security, TArg arg), раз у вас свой наследний от RangeCandle.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7873/</id>
    <title type="text">Не получается у меня методом тыка это сделать ( Задача такая, использую RangeCandle 100 на пунктов: ...</title>
    <published>2011-05-04T09:30:19Z</published>
    <updated>2011-05-04T09:30:19Z</updated>
    <author>
      <name>Garic</name>
      <uri>https://stocksharp.ru/users/809/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Не получается у меня методом тыка это сделать (&lt;/p&gt;
&lt;p&gt;Задача такая, использую RangeCandle 100 на пунктов:
Хочу к примеру изменить RangeCandle - сделать чтобы максимальная дискретность свечи была секунда - т.е. если кто-то ударит по рынку на 500п, то я хочу увидеть одну свечу на 500пп вместо пяти свечей по 100п - всё равно в промежутке между ними войти в маркет невозможно.&lt;/p&gt;
&lt;p&gt;Попытка 1.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
  class RangeDelayCandleFactory : RangeCandleFactory
    {
        public override bool IsCandleFinished(CandleToken&amp;lt;RangeCandle, Unit&amp;gt; token, RangeCandle currentCandle, Trade trade)
        {
            return base.IsCandleFinished(token, currentCandle, trade) &amp;amp;&amp;amp; 
                (currentCandle.Time.Minute != trade.Time.Minute || currentCandle.Time.Second != trade.Time.Second);
        }
    }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;При попытке candleManager.RegisterCandleFactory(candleFactory) - ругается что для RangeCandles фабрика уже зарегистрирована.&lt;/p&gt;
&lt;p&gt;Попытка 2.
Делаю class RangeDelayCandle : RangeCandle.
Наследуюсь от CandleFactory, дублирую один в один код из RangeCandleFactory заменяя RangeCandle на RangeDelayCandle&lt;/p&gt;
&lt;p&gt;Теперь не ругается.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
RangeDelayCandleFactory candleFactory = new RangeDelayCandleFactory();
candleFactory.CreateToken(Security, priceRange);                
candleManager.RegisterCandleFactory(candleFactory);                

...

_manager.StateChanged += () =&amp;gt; this.GuiSync(() =&amp;gt; 
	{
            if (_manager.State != StrategyManagerStates.Runned)
            {
                        this.FindedTrades.ItemsSource = candleManager.GetCandles&amp;lt;RangeDelayCandle, Unit&amp;gt;(Security, priceRange, new Range&amp;lt;DateTime&amp;gt;(this.FromDate, this.ToDate));                        
            }
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Но свечи так и не появились. Если делать candleManager.RegisterRangeCandles(Security, priceRange) - свечки строятся
Что я ещё упустил?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>