﻿<?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">Перфоманс тестинга на истории</title>
  <id>~/topic/1837/perfomans-testinga-na-istorii/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-17T07:22:03Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=1837" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/12363/</id>
    <title type="text"> Мы, кажется, друг друга не понимаем.))) У меня последняя версия, код, который я привёл, в ней дейст...</title>
    <published>2011-10-15T15:45:00Z</published>
    <updated>2016-08-16T00:02:03Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;bender &lt;a href="https://stocksharp.com/posts/m/12360/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Мы, кажется, друг друга не понимаем.)))&lt;br /&gt;У меня последняя версия, код, который я привёл, в ней действительно не существует. Но я про то, что этот код в последней версии не работает, хотя судя по докам &lt;a href="http://stocksharp.com/doc/ " title="http://stocksharp.com/doc/ "&gt;http://stocksharp.com/doc/ &lt;/a&gt;должен работать, отсюда и возник &lt;a href="http://stocksharp.com/posts/m/12336/" title="http://stocksharp.com/posts/m/12336/"&gt;этот&lt;/a&gt; вопрос. А где нибудь можно почитать про новый CandleManager?&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Доки пока нет. Изменения вкратце. CandleManager теперь не строит свечки. Он лишь получает их от ICandleSource и передает дальше + сохраняет в контейер. Свечки строит CandleBuilder. Он принимает сделки от свои ITradeSource и через ICandleFactory превращается их в Candle.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/12360/</id>
    <title type="text"> Дифф показывает, что код, который вы привели выше, уже не существует. Поэтому я и говорю, что верси...</title>
    <published>2011-10-15T13:08:43Z</published>
    <updated>2016-08-16T00:02:03Z</updated>
    <author>
      <name>bender</name>
      <uri>https://stocksharp.com/users/28723/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/12359/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Дифф показывает, что код, который вы привели выше, уже не существует. Поэтому я и говорю, что версия не последняя Гидры, нужно обновиться.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Мы, кажется, друг друга не понимаем.)))&lt;br /&gt;У меня последняя версия, код, который я привёл, в ней действительно не существует. Но я про то, что этот код в последней версии не работает, хотя судя по докам &lt;a href="http://stocksharp.com/doc/ " title="http://stocksharp.com/doc/ "&gt;http://stocksharp.com/doc/ &lt;/a&gt;должен работать, отсюда и возник &lt;a href="http://stocksharp.com/posts/m/12336/" title="http://stocksharp.com/posts/m/12336/"&gt;этот&lt;/a&gt; вопрос. А где нибудь можно почитать про новый CandleManager?&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/12173/</id>
    <title type="text"> Да, это было бы здорово. Но перед тем как делать советую ознакомится с этим и этим. Я уже сделал, п...</title>
    <published>2011-10-11T00:57:00Z</published>
    <updated>2016-08-16T00:01:58Z</updated>
    <author>
      <name>bender</name>
      <uri>https://stocksharp.com/users/28723/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/12171/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Да, это было бы здорово. Но перед тем как делать советую ознакомится с &lt;a href="http://stocksharp.com/doc/html/621927b7-839f-4492-8dbb-162e63d57769.htm" title="http://stocksharp.com/doc/html/621927b7-839f-4492-8dbb-162e63d57769.htm"&gt;этим&lt;/a&gt; и &lt;a href="http://stocksharp.com/posts/m/10581/" title="http://stocksharp.com/posts/m/10581/"&gt;этим&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я уже сделал, правда пока редко использовал, в прикреплённом архиве классы , которые надо добавить-заменить в Гидре, делал в 3.2.5, в следующих не пробовал.&lt;br /&gt;Посмотрел вторую ссылку, метод CandlesGenerate.Generate разве должен работать? Вот такой код у меня не работает:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
	
var candleManager = new CandleManager(trades) { IsSyncRegister = true }; 
CandleToken token = candleManager.RegisterCandles(candleType, security, args); 
IMarketDataStorage&amp;lt;Candle&amp;gt; candleStorage = null;
candleStorage = storage.GetCandleStorage&amp;lt;TimeFrameCandle, TimeSpan&amp;gt;(security, args.To&amp;lt;TimeSpan&amp;gt;()) as IMarketDataStorage&amp;lt;Candle&amp;gt;;
var candles = candleManager.GetCandles(token);
candleStorage.Save(candles);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;	&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/12171/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Автоматику планируете сделать? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Это как? Чтобы при закачке сделок автоматически создавались и сохранялись свечки? Пока нет.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/12171/</id>
    <title type="text">Если действительно никто не делает(вроде брался человек) и первый пост ещё актуален, я могу сделать,...</title>
    <published>2011-10-10T23:21:09Z</published>
    <updated>2016-08-16T00:01:58Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;bender &lt;a href="https://stocksharp.com/posts/m/12167/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Если действительно никто не делает(вроде брался человек) и первый пост ещё актуален, я могу сделать, вернее уже сделал - отдельное окно в гидре, которое формирует свечки разных типов по заданному интервалу времени и сохраняет их по указанному пути, свечки не скачиваются,а формируются из закачанных сделок.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Да, это было бы здорово. Но перед тем как делать советую ознакомится с &lt;a href="http://stocksharp.com/doc/html/621927b7-839f-4492-8dbb-162e63d57769.htm" title="http://stocksharp.com/doc/html/621927b7-839f-4492-8dbb-162e63d57769.htm"&gt;этим&lt;/a&gt; и &lt;a href="http://stocksharp.com/posts/m/10581/" title="http://stocksharp.com/posts/m/10581/"&gt;этим&lt;/a&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/10893/</id>
    <title type="text"> Я думаю, что подобное можно было бы решить через собственную реализацию ICandleManager, которая бы ...</title>
    <published>2011-09-07T17:43:09Z</published>
    <updated>2016-08-16T00:01:13Z</updated>
    <author>
      <name>bender</name>
      <uri>https://stocksharp.com/users/28723/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/10836/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Я думаю, что подобное можно было бы решить через &lt;a href="http://stocksharp.com/posts/m/10506/" title="http://stocksharp.com/posts/m/10506/"&gt;собственную реализацию ICandleManager&lt;/a&gt;, которая бы не строила свечки каждый раз из тиков, а просто из бы подгружала. Сама загрузка тиков и стаканов происходит несколькими потоками, которые отличны от потока эмуляции (теоретически, они не должны влиять на скорость обработки данных - тестирования). В потоке эмуляции как раз и происходит построение свечек, что сильно тормозит общий процесс тестирования.&lt;br /&gt;&lt;br /&gt;Если убрать загрузки тиков, то тогда перестанут строится и стаканы. Как же у вас происходит матчинг заявок?&lt;/div&gt;&lt;/div&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/10836/</id>
    <title type="text">Здравствуйте, напишу, как я решил проблему медленного тестирования по тикам. Изначально из тиковых д...</title>
    <published>2011-09-05T15:56:56Z</published>
    <updated>2016-08-16T00:01:10Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;bender &lt;a href="https://stocksharp.com/posts/m/10817/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Здравствуйте, напишу, как я решил проблему медленного тестирования по тикам. Изначально из тиковых данных гидры строятся минутные свечки(я использую только свечки по времени) и сохраняются в отдельный каталог. Это всё делается стандартными средствами S#. Затем начинается собственно тестирование, и вот как тестировать стратегии по коллекции свечек, а не тиков, в S# я не нашёл( может, чего пропустил?). Поэтому я сделал свою реализацию ITrader, в которую добавил событие NewCandle. Этот новый класс получает коллекцию минутных свечек за тестируемый период и нужный таймфрейм, по которым формирует новую коллекцию свечек нужного таймфрейма, затем идёт перебор этих свечек и с каждой новой свечёй вызывается событие NewCandle, на которое подписаны тестируемые стратегии. Кодом могу поделится, если кому надо.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я думаю, что подобное можно было бы решить через &lt;a href="http://stocksharp.com/posts/m/10506/" title="http://stocksharp.com/posts/m/10506/"&gt;собственную реализацию ICandleManager&lt;/a&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/18567/</id>
    <title type="text">Помогите. Программирую я плохо, как мифический индус. Пишу оптимизатор, хочу сделать тестирование на...</title>
    <published>2012-04-24T17:31:28Z</published>
    <updated>2012-04-24T17:31:28Z</updated>
    <author>
      <name>Spiritschaser</name>
      <uri>https://stocksharp.com/users/1927/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Помогите. Программирую я плохо, как мифический индус. Пишу оптимизатор, хочу сделать тестирование на готовых свечках из текстовых таблиц. С чего нужно начать? Сделать свой источник или Builder?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/16006/</id>
    <title type="text">Дошли наконец-то руки :) В ПО очень важно быть на онлайне постоянно. С тех пор и стратегия стала соб...</title>
    <published>2012-01-28T13:54:55Z</published>
    <updated>2012-01-28T13:54:55Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Garic &lt;a href="https://stocksharp.com/posts/m/16003/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Дошли наконец-то руки :)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В ПО очень важно быть на онлайне постоянно. С тех пор и стратегия стала событийной, и S# 4.1 (что в dev ветке) поддерживает закачку свечек из хранилища.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/16003/</id>
    <title type="text">Дошли наконец-то руки :) Сделал пример для TimeFrameCandles Скорость примерно в 5.5 раза выше чем с ...</title>
    <published>2012-01-28T09:09:04Z</published>
    <updated>2012-01-28T12:29:26Z</updated>
    <author>
      <name>Garic</name>
      <uri>https://stocksharp.com/users/809/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Дошли наконец-то руки :)&lt;br /&gt;&lt;br /&gt;Сделал пример для TimeFrameCandles&lt;br /&gt;Скорость примерно в 5.5 раза выше чем с CandleBuilder  (в примере можно переключать)&lt;br /&gt;&lt;br /&gt;Данные совпадают, за исключением свечей NonTradingDealType которые почему-то стандартный CandleBuilder выдаёт. Пример 06.10.2011 - свеча 14.00 - её быть не должно. Параметр CandleManager.NonTradingDealType не влияет.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15214/</id>
    <title type="text">Спасибо, заработало Правда пока криво и результаты немного расходятся с обычным тестом на истории - ...</title>
    <published>2011-12-27T20:47:12Z</published>
    <updated>2011-12-27T20:47:12Z</updated>
    <author>
      <name>Garic</name>
      <uri>https://stocksharp.com/users/809/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Спасибо, заработало [rolleyes] &lt;br /&gt;&lt;br /&gt;Правда пока криво и результаты немного расходятся с обычным тестом на истории - как доковыряю - выложу.&lt;br /&gt;&lt;br /&gt;Нужно синхронизировать поток свечей и поток NewTrade чтобы сделки проходили одинаково при обоих тестах (тест по расчитанным свечам и тест по сделкам).&lt;br /&gt;Т.е. нужно выдавать свечи по какому-то событию. Логично чтобы это был Trader.NewTrade. Но как определить по tradе нужно ли выплёвывать candleFinished для свечки? Для timeFrame свечей понятно, а для остальных - такой информации нет.&lt;br /&gt;&lt;br /&gt;Похоже облом - нужно чтобы у сохранённой свечи в хранилище был код первой и последней сделки (или есть другой вариант? )&lt;br /&gt;&lt;br /&gt;В моих кастомных range-барах это есть (для отладки сделал), но что делать со стандартными?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;По скорости - тест недели RIZ1 стратегия на минутках - Покупка на 00 минуте, продажа на 30 минуте по candleFinished&lt;br /&gt; - по сделкам    02:07.10&lt;br /&gt; - по сохранённым свечам, синхронизация по Trader.MarketTimeChanged раз в минуту  00:21.96&lt;br /&gt; - по сохранённым свечам, синхронизация по Trader.MarketTimeChanged раз в секунду 00:22.77&lt;br /&gt; - по сохранённым свечам, синхронизация по Trader.NewTrade   00:24.15&lt;br /&gt;&lt;br /&gt;примерно в 7 раз быстрее</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15194/</id>
    <title type="text">ICandleSource Т.е. нужно сделать по типу своего CandleBuilder? Он должен генерить события CandlesSta...</title>
    <published>2011-12-27T10:54:54Z</published>
    <updated>2011-12-27T10:54:54Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Garic &lt;a href="https://stocksharp.com/posts/m/15192/" 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;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/15175/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;ICandleSource&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Т.е. нужно сделать по типу своего CandleBuilder?&lt;br /&gt;Он должен генерить события CandlesStarted, CandlesChanged, CandlesFinished&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я бы сказал по аналогии с SmartCandleSource&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
/// &amp;lt;summary&amp;gt;
	/// SmartCOM источник свечек типа &amp;lt;see cref=&amp;quot;TimeFrameCandle&amp;quot;/&amp;gt;.
	/// &amp;lt;/summary&amp;gt;
	public class SmartCandleSource : ICandleSource
	{
		/// &amp;lt;summary&amp;gt;
		/// Создать &amp;lt;see cref=&amp;quot;SmartCandleSource&amp;quot;/&amp;gt;.
		/// &amp;lt;/summary&amp;gt;
		/// &amp;lt;param name=&amp;quot;trader&amp;quot;&amp;gt;Шлюз к SmartCOM, через событие &amp;lt;see cref=&amp;quot;SmartTrader.NewHistoryCandles&amp;quot;/&amp;gt; будут получаться свечки.&amp;lt;/param&amp;gt;
		public SmartCandleSource(SmartTrader trader)
		{
			if (trader == null)
				throw new ArgumentNullException(&amp;quot;trader&amp;quot;);

			Trader = trader;
			Trader.NewHistoryCandles += OnNewHistoryCandles;
			From = Trader.MarketTime.Date - TimeSpan.FromDays(5);
		}

		/// &amp;lt;summary&amp;gt;
		/// Начальная дата, с которой необходимо получать данные из SmartCOM. По-умолчанию равно -5 дней от начала текущей сессии.
		/// &amp;lt;/summary&amp;gt;
		public DateTime From { get; set; }

		/// &amp;lt;summary&amp;gt;
		/// Шлюз к SmartCOM, через событие &amp;lt;see cref=&amp;quot;SmartTrader.NewHistoryCandles&amp;quot;/&amp;gt; будут получаться свечки.
		/// &amp;lt;/summary&amp;gt;
		public SmartTrader Trader { get; private set; }

		IEnumerable&amp;lt;CandleToken&amp;gt; ICandleSource.Tokens
		{
			get { return Trader.HistoryCandleTokens; }
		}

		private Action&amp;lt;CandleToken, IEnumerable&amp;lt;Candle&amp;gt;&amp;gt; _candlesStarted;

		event Action&amp;lt;CandleToken, IEnumerable&amp;lt;Candle&amp;gt;&amp;gt; ICandleSource.CandlesStarted
		{
			add { _candlesStarted += value; }
			remove { _candlesStarted -= value; }
		}

		event Action&amp;lt;CandleToken, IEnumerable&amp;lt;Candle&amp;gt;&amp;gt; ICandleSource.CandlesChanged
		{
			add { }
			remove { }
		}

		private Action&amp;lt;CandleToken, IEnumerable&amp;lt;Candle&amp;gt;&amp;gt; _candlesFinished;

		event Action&amp;lt;CandleToken, IEnumerable&amp;lt;Candle&amp;gt;&amp;gt; ICandleSource.CandlesFinished
		{
			add { _candlesFinished += value; }
			remove { _candlesFinished -= value; }
		}

		event Action&amp;lt;Exception&amp;gt; ICandleSource.ProcessDataError
		{
			add { }
			remove { }
		}

		CandleToken ICandleSource.GetToken(Type candleType, Security security, object arg)
		{
			CheckTypes(candleType, arg);
			return Trader.HistoryCandleTokens.FirstOrDefault(c =&amp;gt; c.Security == security &amp;amp;&amp;amp; c.Arg == arg);
		}

		bool ICandleSource.IsSupport(Type candleType, Security security, object arg)
		{
			return candleType == typeof(TimeFrameCandle) &amp;amp;&amp;amp; security.Trader == Trader &amp;amp;&amp;amp; arg is TimeSpan &amp;amp;&amp;amp; SmartTimeFrames.CanConvert((TimeSpan)arg);
		}

		CandleToken ICandleSource.Register(Type candleType, Security security, object arg)
		{
			if (((ICandleSource)this).GetToken(candleType, security, arg) != null)
				throw new ArgumentException(&amp;quot;Группировка свечек уже зарегистрирована ранее с переданными параметрами.&amp;quot;);

			CheckTypes(candleType, arg);

			var token = Trader.RegisterHistoryRealTimeCandles(security, (TimeSpan)arg, From);
			token.Source = this;
			return token;
		}

		void ICandleSource.UnRegister(CandleToken token)
		{
			Trader.UnRegisterHistoryRealTimeCandles(token);
		}

		private static void CheckTypes(Type candleType, object arg)
		{
			if (candleType == null)
				throw new ArgumentNullException(&amp;quot;candleType&amp;quot;);

			if (candleType != typeof(TimeFrameCandle))
				throw new ArgumentException(&amp;quot;SmartCOM поддерживает свечки только типа {0}.&amp;quot;.Put(candleType), &amp;quot;candleType&amp;quot;);

			if (!(arg is TimeSpan))
				throw new ArgumentException(&amp;quot;Аргумент {0} должен быть типа {1}.&amp;quot;.Put(arg, typeof(TimeSpan)), &amp;quot;arg&amp;quot;);
		}

		private void OnNewHistoryCandles(CandleToken token, IEnumerable&amp;lt;TimeFrameCandle&amp;gt; candles)
		{
			_candlesStarted.SafeInvoke(token, candles);
			_candlesFinished.SafeInvoke(token, candles);
		}

		void IDisposable.Dispose()
		{
			Trader.NewHistoryCandles -= OnNewHistoryCandles;
		}
	}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15192/</id>
    <title type="text">ICandleSource Т.е. нужно сделать по типу своего CandleBuilder? Он должен генерить события CandlesSta...</title>
    <published>2011-12-27T10:06:05Z</published>
    <updated>2011-12-27T10:06:05Z</updated>
    <author>
      <name>Garic</name>
      <uri>https://stocksharp.com/users/809/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/15175/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;ICandleSource&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Т.е. нужно сделать по типу своего CandleBuilder?&lt;br /&gt;Он должен генерить события CandlesStarted, CandlesChanged, CandlesFinished&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/15175/</id>
    <title type="text">А как тестеру скормить предварительно расчитанные свечи? Ничего подходящего не нашёл, а без них он р...</title>
    <published>2011-12-26T20:15:33Z</published>
    <updated>2011-12-26T20:15:33Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Garic &lt;a href="https://stocksharp.com/posts/m/15171/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А как тестеру скормить предварительно расчитанные свечи?&lt;br /&gt;Ничего подходящего не нашёл, а без них он работает существенно медленней чем в старых версиях (сравниваю с 3.2.7)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;ICandleSource</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/15171/</id>
    <title type="text">А как тестеру скормить предварительно расчитанные свечи? Ничего подходящего не нашёл, а без них он р...</title>
    <published>2011-12-26T16:38:19Z</published>
    <updated>2011-12-26T16:38:19Z</updated>
    <author>
      <name>Garic</name>
      <uri>https://stocksharp.com/users/809/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">А как тестеру скормить предварительно расчитанные свечи?&lt;br /&gt;Ничего подходящего не нашёл, а без них он работает существенно медленней чем в старых версиях (сравниваю с 3.2.7)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/14800/</id>
    <title type="text">Сломалась генерация свечек (4.0.9) Я так понимаю в CandlesCompress вместо candleManager.Sources.Add(...</title>
    <published>2011-12-18T21:41:00Z</published>
    <updated>2011-12-18T21:41:00Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Garic &lt;a href="https://stocksharp.com/posts/m/14795/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Сломалась генерация свечек (4.0.9)&lt;br /&gt;&lt;br /&gt;Я так понимаю в CandlesCompress вместо&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
candleManager.Sources.Add(new CandleBuilder(new RawConvertableCandleBuilderSource&amp;lt;Trade&amp;gt;(trades)));&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;надо&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
candleManager.Sources.Add(new CandleBuilder(new RawConvertableCandleBuilderSource&amp;lt;Trade&amp;gt;(trades)) { IsSyncRegister = true }); &lt;/pre&gt;
&lt;/div&gt;&lt;/div&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/14795/</id>
    <title type="text">Сломалась генерация свечек (4.0.9) Я так понимаю в CandlesCompress вместо candleManager.Sources.Add(...</title>
    <published>2011-12-18T14:38:32Z</published>
    <updated>2011-12-18T14:38:32Z</updated>
    <author>
      <name>Garic</name>
      <uri>https://stocksharp.com/users/809/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Сломалась генерация свечек (4.0.9)&lt;br /&gt;&lt;br /&gt;Я так понимаю в CandlesCompress вместо&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
candleManager.Sources.Add(new CandleBuilder(new RawConvertableCandleBuilderSource&amp;lt;Trade&amp;gt;(trades)));&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;надо&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
candleManager.Sources.Add(new CandleBuilder(new RawConvertableCandleBuilderSource&amp;lt;Trade&amp;gt;(trades)) { IsSyncRegister = true }); &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/12533/</id>
    <title type="text">Поставил решарпер, в связи с этим несколько вопросов. Он в основном выдает три замечания - убрать th...</title>
    <published>2011-10-19T19:10:32Z</published>
    <updated>2011-10-19T19:10:32Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;bender &lt;a href="https://stocksharp.com/posts/m/12525/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Поставил решарпер, в связи с этим несколько вопросов. Он в основном выдает три замечания - убрать this, использовать var и переименовать обработчики событий. Я думал, что var нужен только для анонимных типов, но если надо поменяю.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Предупреждений по var не увидел. Возможно у нас разные настройки. Обычно я var использую, когда тип переменной слишком большой. Анонимный тип тут не при чем.&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;bender &lt;a href="https://stocksharp.com/posts/m/12525/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt; А обработчики событий из, например, StartStop_Click предлагает переименовать в StartStopClick, хотя везде они поименованы через подчёркивание. Может он у меня настроен не так?&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Да скорее всего.&lt;br /&gt;&lt;br /&gt;Мне больше сама структура кода смущает. Например, CandlesCompress уж слишком сложен в поминании. Там явно переизбыток лямбд.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/12525/</id>
    <title type="text"> Спасибо. Глянул мельком, замечаний море. Будем улучшать знания в C#. Скажите, когда будет финальный...</title>
    <published>2011-10-19T12:13:31Z</published>
    <updated>2011-10-19T12:13:31Z</updated>
    <author>
      <name>bender</name>
      <uri>https://stocksharp.com/users/28723/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.com/posts/m/12508/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Спасибо. Глянул мельком, замечаний море. Будем улучшать знания в C#. Скажите, когда будет финальный коммит, и можно будет пройтись по пунктам.&lt;br /&gt;&lt;br /&gt;Сделайте, пожалуйста, табуляцию табами, а не пробелами. Сейчас иначе весь файл переформатируется студией, если его другие начнут править. Советую поставить R#, он покажет так же часть ошибок в коде.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Поставил решарпер, в связи с этим несколько вопросов. Он в основном выдает три замечания - убрать this, использовать var и переименовать обработчики событий. Я думал, что var нужен только для анонимных типов, но если надо поменяю. А обработчики событий из, например, StartStop_Click предлагает переименовать в StartStopClick, хотя везде они поименованы через подчёркивание. Может он у меня настроен не так?&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/12508/</id>
    <title type="text">Добавил окно с возможностью формирования свечек по интервалу дат, пока только таймфрейм, тики и объё...</title>
    <published>2011-10-18T23:24:25Z</published>
    <updated>2011-10-18T23:24:25Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;bender &lt;a href="https://stocksharp.com/posts/m/12432/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Добавил окно с возможностью формирования свечек по интервалу дат, пока только таймфрейм, тики и объём, остальные пока не успел. Кнопка авто, автоматически выставляет интервал по всем загруженным сделкам, если свечки в указанный каталог уже сохранялись - то от последней свечи до последней сделки. Т.к. писал это для более ранней версии, сейчас там есть уже не нужные вещи вроде xml файла, постараюсь на неделе доработать. Залил на кодеплекс&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Спасибо. Глянул мельком, замечаний море. Будем улучшать знания в C#. Скажите, когда будет финальный коммит, и можно будет пройтись по пунктам.&lt;br /&gt;&lt;br /&gt;Сделайте, пожалуйста, табуляцию табами, а не пробелами. Сейчас иначе весь файл переформатируется студией, если его другие начнут править. Советую поставить R#, он покажет так же часть ошибок в коде.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/12432/</id>
    <title type="text">Добавил окно с возможностью формирования свечек по интервалу дат, пока только таймфрейм, тики и объё...</title>
    <published>2011-10-17T15:17:19Z</published>
    <updated>2011-10-17T15:18:16Z</updated>
    <author>
      <name>bender</name>
      <uri>https://stocksharp.com/users/28723/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Добавил окно с возможностью формирования свечек по интервалу дат, пока только таймфрейм, тики и объём, остальные пока не успел. Кнопка авто, автоматически выставляет интервал по всем загруженным сделкам, если свечки в указанный каталог уже сохранялись - то от последней свечи до последней сделки. Т.к. писал это для более ранней версии, сейчас там есть уже не нужные вещи вроде xml файла, постараюсь на неделе доработать. Залил на кодеплекс</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>