﻿<?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">Сообщество. StockSharp</title>
  <id>https://stocksharp.ru/handlers/atom.ashx?category=community&amp;page=185</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-17T15:47:15Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=community&amp;page=185" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/3080/</id>
    <title type="text">Ошибка при котировании в SampleHistoryTesting</title>
    <published>2012-10-12T17:40:03Z</published>
    <updated>2012-10-12T17:40:03Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">В примере SampleHistoryTesting вываливаются ошибки при запуске каждой дочерней стратегии на котирование, которых при работе Quik SampleSMA нет:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

2009.05.31 20:00:00.000|       |SS_RIU9@RTS_test account|Стратегия запущена.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Стратегия запущена.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Котирование на Sell объема 1.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Приостановка правил. _rulesSuspendCount 1.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Возобновление правил. _rulesSuspendCount 0.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Цена текущей NULL и лучшей 116155.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Лучший бид NULL и лучший аск NULL.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Регистрация новой заявки на Sell с ценой 116155 и объемом 1.
2009.06.02 06:40:00.970|       |MQS_RIU9@RTS_test account|Заявка 80254917 на Sell отправлена с ценой 116155 объемом 1.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Заявка 80254917 принята биржей.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Сброс счетчика ошибок регистрации с 0 до нуля.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Цена текущей 116155 и лучшей 116000.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Лучший бид NULL и лучший аск NULL.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Котирование заявки 80254917 на Sell с ценой 116155 объемом 1.
2009.06.02 06:40:01.737|Error  |MQS_RIU9@RTS_test account|Заявка 0 не была принята по причине System.ArgumentException: Заявка уже имеет номер &amp;#39;1&amp;#39;. Возможно, она уже была зарегистрирована.
Имя параметра: order
   в StockSharp.Algo.Testing.MarketEmulator.ReRegisterOrder(Order order, Order newOrder)
   в StockSharp.Algo.Testing.EmulationTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder).
2009.06.02 06:40:01.737|Error  |MQS_RIU9@RTS_test account|System.ArgumentException: Заявка уже имеет номер &amp;#39;1&amp;#39;. Возможно, она уже была зарегистрирована.
Имя параметра: order
   в StockSharp.Algo.Testing.MarketEmulator.ReRegisterOrder(Order order, Order newOrder)
   в StockSharp.Algo.Testing.EmulationTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.QuotingStrategy.ProcessQuoting()
   в StockSharp.Algo.Strategies.QuotingStrategy.#=ql8FZcZl1VhoSfxj6bxBSmoDgJ6B2gT6ImGejxU1jvuQ=(Order #=qP5IG1jy682SV9oLq5xh5xw==)
   в StockSharp.Algo.MarketRule`2.#=qD2pySzb7SwcKqbf509xbCf4ETRnYzZpS8F4NvKjD1Cg=()
   в StockSharp.Algo.MarketRuleHelper.#=qQ813stF5rdU7vR12V$ax_w==(IMarketRuleContainer #=qrcq1peQJX8wVd5bucjdK5Q==, IMarketRule #=qhASjoS2d0T$yCziW8qaZow==, Func`1 #=qarKRLFkIjTz$sLdPcQaF4w==)
   в StockSharp.Algo.Strategies.Strategy.#=qcUFLS8UKZFDgbx2X3BZSfEUGq5pxvIDpIdlvrsG_Q6JT74bgQBqKgNKlz2z_$METWffqXRfxwWIOkgvRG3QAtg==(IMarketRule #=qB7ROmUjGdaG1jUWU0vPRbA==, Func`1 #=qVPSEf_woMd2b0g2sKq7R1w==)
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Стратегия останавливается.
2009.06.02 06:40:01.737|Warning|MQS_RIU9@RTS_test account|Заканчиваем котирование с неисполненным объемом равный 1.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Ожидание снятия всех активных заявок.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Отмена заявки 80254917.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Заявка 80254917 больше не активна.
2009.06.02 06:40:01.737|       |MQS_RIU9@RTS_test account|Стратегия остановлена.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Стратегия запущена.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Котирование на Buy объема 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Приостановка правил. _rulesSuspendCount 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Возобновление правил. _rulesSuspendCount 0.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Цена текущей NULL и лучшей 119500.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Лучший бид NULL и лучший аск NULL.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Регистрация новой заявки на Buy с ценой 119500 и объемом 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Заявка 80254918 на Buy отправлена с ценой 119500 объемом 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Заявка 80254918 принята биржей.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Сброс счетчика ошибок регистрации с 0 до нуля.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Цена текущей 119500 и лучшей 119800.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Лучший бид NULL и лучший аск NULL.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Котирование заявки 80254918 на Buy с ценой 119500 объемом 1.
2009.06.02 10:26:03.077|Error  |MQS_RIU9@RTS_test account|Заявка 0 не была принята по причине System.ArgumentException: Заявка уже имеет номер &amp;#39;2&amp;#39;. Возможно, она уже была зарегистрирована.
Имя параметра: order
   в StockSharp.Algo.Testing.MarketEmulator.ReRegisterOrder(Order order, Order newOrder)
   в StockSharp.Algo.Testing.EmulationTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder).
2009.06.02 10:26:03.077|Error  |MQS_RIU9@RTS_test account|System.ArgumentException: Заявка уже имеет номер &amp;#39;2&amp;#39;. Возможно, она уже была зарегистрирована.
Имя параметра: order
   в StockSharp.Algo.Testing.MarketEmulator.ReRegisterOrder(Order order, Order newOrder)
   в StockSharp.Algo.Testing.EmulationTrader.OnReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.BaseTrader.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.Strategy.ReRegisterOrder(Order oldOrder, Order newOrder)
   в StockSharp.Algo.Strategies.QuotingStrategy.ProcessQuoting()
   в StockSharp.Algo.Strategies.QuotingStrategy.#=ql8FZcZl1VhoSfxj6bxBSmoDgJ6B2gT6ImGejxU1jvuQ=(Order #=qP5IG1jy682SV9oLq5xh5xw==)
   в StockSharp.Algo.MarketRule`2.#=qD2pySzb7SwcKqbf509xbCf4ETRnYzZpS8F4NvKjD1Cg=()
   в StockSharp.Algo.MarketRuleHelper.#=qQ813stF5rdU7vR12V$ax_w==(IMarketRuleContainer #=qrcq1peQJX8wVd5bucjdK5Q==, IMarketRule #=qhASjoS2d0T$yCziW8qaZow==, Func`1 #=qarKRLFkIjTz$sLdPcQaF4w==)
   в StockSharp.Algo.Strategies.Strategy.#=qcUFLS8UKZFDgbx2X3BZSfEUGq5pxvIDpIdlvrsG_Q6JT74bgQBqKgNKlz2z_$METWffqXRfxwWIOkgvRG3QAtg==(IMarketRule #=qB7ROmUjGdaG1jUWU0vPRbA==, Func`1 #=qVPSEf_woMd2b0g2sKq7R1w==)
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Стратегия останавливается.
2009.06.02 10:26:03.077|Warning|MQS_RIU9@RTS_test account|Заканчиваем котирование с неисполненным объемом равный 1.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Ожидание снятия всех активных заявок.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Отмена заявки 80254918.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Заявка 80254918 больше не активна.
2009.06.02 10:26:03.077|       |MQS_RIU9@RTS_test account|Стратегия остановлена.

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;С чем это может быть связано?&lt;br /&gt;&lt;br /&gt;С Уважением,&lt;br /&gt;Роман</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3079/</id>
    <title type="text">Доступ к РТС класике и Стандарту</title>
    <published>2012-10-12T15:21:37Z</published>
    <updated>2012-10-12T15:21:37Z</updated>
    <author>
      <name>qpile</name>
      <uri>https://stocksharp.ru/users/6397/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">Реализована ли на текущий момент возможность подключения к этим рынкам по Plaza 2 ?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3078/</id>
    <title type="text">Не переворачивается позиция в примере SampleSMA</title>
    <published>2012-10-12T11:06:07Z</published>
    <updated>2012-10-12T11:06:07Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:plain"&gt;

2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия запущена.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Котирование на Sell объема 1.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Приостановка правил. _rulesSuspendCount 1.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Возобновление правил. _rulesSuspendCount 0.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Цена текущей NULL и лучшей 146900.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Лучший бид 146890 и лучший аск 146900.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Регистрация новой заявки на Sell с ценой 146900 и объемом 1.
2012.10.12 14:53:56.975|       |MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746365 на Sell отправлена с ценой 146900 объемом 1.
2012.10.12 14:53:57.730|       |MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746365 принята биржей.
2012.10.12 14:53:57.730|       |MQS_RIZ2@RTS_SPBFUT00627|Сброс счетчика ошибок регистрации с 0 до нуля.
2012.10.12 14:53:57.737|       |SS_RIZ2@RTS_SPBFUT00627|Новая позиция -1.
2012.10.12 14:53:57.737|       |MQS_RIZ2@RTS_SPBFUT00627|Новая позиция -1.
2012.10.12 14:53:57.737|       |MQS_RIZ2@RTS_SPBFUT00627|Позиция изменилась на -1. Оставшийся объем 0.
2012.10.12 14:53:57.737|       |MQS_RIZ2@RTS_SPBFUT00627|Заканчиваем котирование.
2012.10.12 14:53:57.738|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия останавливается.
2012.10.12 14:53:57.738|       |MQS_RIZ2@RTS_SPBFUT00627|Ожидание снятия всех активных заявок.
2012.10.12 14:53:57.738|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия остановлена.
2012.10.12 14:53:57.740|       |SS_RIZ2@RTS_SPBFUT00627|Новая Sell сделка 76452271 по цене 146900 на 1 заявки 63746365.
2012.10.12 14:53:57.756|       |MQS_RIZ2@RTS_SPBFUT00627|Новая Sell сделка 76452271 по цене 146900 на 1 заявки 63746365.
2012.10.12 14:59:52.857|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия запущена.
2012.10.12 14:59:52.857|       |MQS_RIZ2@RTS_SPBFUT00627|Котирование на Buy объема 1.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Приостановка правил. _rulesSuspendCount 1.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Возобновление правил. _rulesSuspendCount 0.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Цена текущей NULL и лучшей 147150.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Лучший бид 147150 и лучший аск 147200.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Регистрация новой заявки на Buy с ценой 147150 и объемом 1.
2012.10.12 14:59:52.858|       |MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746366 на Buy отправлена с ценой 147150 объемом 1.
2012.10.12 14:59:52.874|Warning|MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746366 в процессе регистрации.
2012.10.12 14:59:53.197|       |MQS_RIZ2@RTS_SPBFUT00627|Заявка 63746366 принята биржей.
2012.10.12 14:59:53.197|       |MQS_RIZ2@RTS_SPBFUT00627|Сброс счетчика ошибок регистрации с 0 до нуля.
2012.10.12 14:59:53.887|       |SS_RIZ2@RTS_SPBFUT00627|Новая Buy сделка 76452855 по цене 147150 на 1 заявки 63746366.
2012.10.12 14:59:53.887|       |SS_RIZ2@RTS_SPBFUT00627|Новая позиция 0.
2012.10.12 14:59:53.887|       |MQS_RIZ2@RTS_SPBFUT00627|Новая позиция 1.
2012.10.12 14:59:53.887|       |MQS_RIZ2@RTS_SPBFUT00627|Позиция изменилась на 1. Оставшийся объем 0.
2012.10.12 14:59:53.887|       |MQS_RIZ2@RTS_SPBFUT00627|Заканчиваем котирование.
2012.10.12 14:59:53.888|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия останавливается.
2012.10.12 14:59:53.888|       |MQS_RIZ2@RTS_SPBFUT00627|Ожидание снятия всех активных заявок.
2012.10.12 14:59:53.888|       |MQS_RIZ2@RTS_SPBFUT00627|Стратегия остановлена.
2012.10.12 14:59:53.888|       |MQS_RIZ2@RTS_SPBFUT00627|Новая Buy сделка 76452855 по цене 147150 на 1 заявки 63746366.
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Позиция закрывается в 0, но не переворачивается.&lt;br /&gt;Если первая сделка бай, то соответственно не открывается короткая позиция.&lt;br /&gt;Если селл, то длинная.&lt;br /&gt;&lt;br /&gt;В коде стратегии добавлена только проверка на риал-тайм, больше ничего не трогал.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3077/</id>
    <title type="text">Запаздывает вывод стакана</title>
    <published>2012-10-12T07:30:16Z</published>
    <updated>2012-10-12T07:30:16Z</updated>
    <author>
      <name>qpile</name>
      <uri>https://stocksharp.ru/users/6397/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Здравствуйте, уважаемые разработчики!&lt;br /&gt;Данные в стакан приходят с лагом 1-2 секунды. что нужно выставить в настройках, что бы все было ок?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3076/</id>
    <title type="text">Одновременный запуск двух одинаковых роботов и двух квиков</title>
    <published>2012-10-11T10:56:31Z</published>
    <updated>2012-10-11T10:56:31Z</updated>
    <author>
      <name>profts</name>
      <uri>https://stocksharp.ru/users/6174/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Есть работающий робот, работает около двух месяцев без единого глюка...  открыл еще один счет, продублировал робота и стал запускать одновременно двух, каждый торгует в своем квике.  &lt;br /&gt;Собственно появилась проблема - один из роботов перестает получать статус отправленной заявки из квика. &lt;br /&gt;Есть такой кусок кода: &lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;private void Wait_Order_State(Order order, OrderStates state)&lt;br /&gt;        {&lt;br /&gt;            int k = 1;&lt;br /&gt;        Wait_Order_State1:&lt;br /&gt;            if (order.State == state)&lt;br /&gt;            {&lt;br /&gt;                Wait_State = true;&lt;br /&gt;                this.AddInfoLog(&amp;quot;Статус заявки уже  {0}&amp;quot;, state);&lt;br /&gt;            }&lt;br /&gt;            else&lt;br /&gt;            {&lt;br /&gt;                if (k == 1)&lt;br /&gt;                {&lt;br /&gt;                    this.AddInfoLog(&amp;quot;Статус заявки еще не {0}&amp;quot;, state);&lt;br /&gt;                }&lt;br /&gt;                k = k + 1;&lt;br /&gt;                goto Wait_Order_State1;&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Метод запускается после отправки заявки и дожидается ее исполнения, т.е. когда state станет равным OrderStates.Done.  &lt;br /&gt;Так вот один из роботов постоянно зацикливается в этом методе. Делаю остановку, заявку отображает правильно, но в квике она уже давно исполнена, а в роботе так и остается Active.  &lt;br /&gt;В чем может быть проблема? Может какой-то конфликт DDE между двумя квиками?  </content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3075/</id>
    <title type="text">Как понять, что DDE передал всю историю, и теперь идет реал-тайм?</title>
    <published>2012-10-11T09:22:21Z</published>
    <updated>2012-10-11T09:22:21Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">Разбираюсь с примером Quik SampleSMA.&lt;br /&gt;В этом примере если запускать робота не с начала дня, то сыпятся сделки по приходу свечек из истории.&lt;br /&gt;Есть ли какой-либо метод, чтобы запретить выставлять ордера на биржу, пока не будет закачана вся история?&lt;br /&gt;&lt;br /&gt;Роман.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3074/</id>
    <title type="text">ошибка при запуске BasketStrategy</title>
    <published>2012-10-10T16:14:04Z</published>
    <updated>2012-10-10T16:14:04Z</updated>
    <author>
      <name>Ant.On.</name>
      <uri>https://stocksharp.ru/users/6276/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">код:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
            BasketStrategy quote = new BasketStrategy(BasketStrategyFinishModes.All);
            quote.ChildStrategies.Add(quoter_1);
            quote.ChildStrategies.Add(quoter_2);
            this.ChildStrategies.Add(quote);&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;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;2012/10/10 19:54:34.203|Error  |BS_SPBFUT006GJ|System.InvalidOperationException: Инструмент не инициализирован.&lt;br /&gt;   at StockSharp.Algo.Strategies.Strategy.OnStarted()&lt;br /&gt;   at StockSharp.Algo.Strategies.BasketStrategy.OnStarted()&lt;br /&gt;   at StockSharp.Algo.Strategies.Strategy.#=qPumxDV5SBHuCYTq_cqUWVTizHkIhg6MP_9mOGwi1SYU=(ProcessStates #=qeRNChQaniV4oK7zWNidypQ==)&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В чем может быть дело?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3073/</id>
    <title type="text">Не запускается Гидра из сборки S# 19868</title>
    <published>2012-10-10T09:35:08Z</published>
    <updated>2012-10-10T09:35:08Z</updated>
    <author>
      <name>greg_bond</name>
      <uri>https://stocksharp.ru/users/6381/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">Помогите Гуру.&lt;br /&gt;Что я делаю не так?&lt;br /&gt;&lt;br /&gt;1. Получил тестовый доступ на Украинскую биржу.&lt;br /&gt;2. Установил шлюз Плаза 2.&lt;br /&gt;3. Установил терминал.&lt;br /&gt;4. Открыл требуемые порты в Comodo.&lt;br /&gt;5. Запустил терминал и убедился в том что информация поступает.&lt;br /&gt;6. С codeplex скачал исходники S#.&lt;br /&gt;7. Из папки trunk gостроил решения Hydra.csproj, Core.csproj, а также все решения из папки Plugins.&lt;br /&gt;8. Перенес недостающие 2 ini файла из релиза Гидры на Box.&lt;br /&gt;&lt;br /&gt;В результате запуска в процессе создания последнего источник, а именно UX получил следующее сообщение об исключении:&lt;br /&gt;12:26:19.204|Error  |StockSharp|System.ArgumentException: Item with name &amp;#39;Id&amp;#39; doesn&amp;#39;t exists.&lt;br /&gt;Имя параметра: name&lt;br /&gt;   в Ecng.Serialization.SerializationItemCollection.get_Item(String name)&lt;br /&gt;   в Ecng.Data.Database.GetOrAddCacheTable[TEntity](SerializationItemCollection table)&lt;br /&gt;   в Ecng.Data.Database.ReadAll[TEntity](Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)&lt;br /&gt;   в Ecng.Data.HierarchicalPageLoadList`1.OnGetGroup(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)&lt;br /&gt;   в Ecng.Serialization.RelationManyList`1.ReadAll(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)&lt;br /&gt;   в Ecng.Serialization.RelationManyList`1.RelationManyListEnumerator.ProcessMove(Boolean&amp;amp; canProcess)&lt;br /&gt;   в Ecng.Collections.BaseEnumerator`2.MoveNext()&lt;br /&gt;   в StockSharp.Hydra.MainWindow.InitializeMarketSources()&lt;br /&gt;   в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)&lt;br /&gt;   в System.Threading.Tasks.Task.Execute()&lt;br /&gt;&lt;br /&gt;Дальнейшие действия:&lt;br /&gt;С Box скачал Hydra_4.1.5_19634, распаковал, запустил, получил:&lt;br /&gt;012.10.10 09:59:45.107|Error  |StockSharp|System.ArgumentException: Item with name &amp;#39;Id&amp;#39; doesn&amp;#39;t exists.&lt;br /&gt;Имя параметра: name&lt;br /&gt;   в Ecng.Serialization.SerializationItemCollection.get_Item(String name)&lt;br /&gt;   в Ecng.Data.Database.GetOrAddCacheTable[TEntity](SerializationItemCollection table)&lt;br /&gt;   в Ecng.Data.Database.ReadAll[TEntity](Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)&lt;br /&gt;   в Ecng.Data.HierarchicalPageLoadList`1.OnGetGroup(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)&lt;br /&gt;   в Ecng.Serialization.RelationManyList`1.ReadAll(Int64 startIndex, Int64 count, Field orderBy, SortDirection direction)&lt;br /&gt;   в Ecng.Serialization.RelationManyList`1.RelationManyListEnumerator.ProcessMove(Boolean&amp;amp; canProcess)&lt;br /&gt;   в Ecng.Collections.BaseEnumerator`2.MoveNext()&lt;br /&gt;   в StockSharp.Hydra.MainWindow.InitializeMarketSources()&lt;br /&gt;   &lt;span class="highlight"&gt;в StockSharp.Hydra.MainWindow.&amp;lt;MainWindowLoaded&amp;gt;b__26()&lt;/span&gt;&lt;br /&gt;   в System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)&lt;br /&gt;   в System.Threading.Tasks.Task.Execute()&lt;br /&gt;&lt;br /&gt;как видим отличия только в выделенной строке.&lt;br /&gt;Сразу хочу отметить до создания базы дело даже не доходит</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3072/</id>
    <title type="text">Лицензия для сторонних разработчиков</title>
    <published>2012-10-09T11:23:05Z</published>
    <updated>2012-10-09T11:23:05Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Добрый день,&lt;br /&gt;&lt;br /&gt;В библиотеке СтокШарп появилась новая возможность - отключение проверки лицензии на компьютерах пользователей. Если Вы заинтересованы в данной услуге, пожалуйста, напишите нам письмо на ящик info сбк стокшарп ком информацию о продукте и его сайт.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3071/</id>
    <title type="text">Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)</title>
    <published>2012-10-08T20:35:54Z</published>
    <updated>2012-10-08T20:35:54Z</updated>
    <author>
      <name>XMbIPb</name>
      <uri>https://stocksharp.ru/users/6200/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_bdbdde5b87674926b2ef6dbb4a1df7b9');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_bdbdde5b87674926b2ef6dbb4a1df7b9' style='display:none'&gt;System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).&lt;br /&gt;   at System.Guid.GuidResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument, String failureArgumentName, Exception innerException)&lt;br /&gt;   at System.Guid.TryParseGuidWithNoStyle(String guidString, GuidResult&amp;amp; result)&lt;br /&gt;   at System.Guid.TryParseGuid(String g, GuidStyles flags, GuidResult&amp;amp; result)&lt;br /&gt;   at System.Guid..ctor(String g)&lt;br /&gt;   at Ecng.Common.Converter.To(Object value, Type destinationType)&lt;br /&gt;   at Ecng.Common.Converter.To[T](Object value)&lt;br /&gt;   at StockSharp.Hydra.Core.Extensions.&amp;lt;GetList&amp;gt;b__0(String s) in c:\Hydra\Core\Extensions.cs:line 72&lt;br /&gt;   at System.Linq.Enumerable.WhereSelectArrayIterator`2.MoveNext()&lt;br /&gt;   at Ecng.Collections.CollectionHelper.AddRange[T](ICollection`1 source, IEnumerable`1 items)&lt;br /&gt;   at StockSharp.Hydra.Core.Extensions.GetList(Security security, String key) in c:\Hydra\Core\Extensions.cs:line 72&lt;br /&gt;   at StockSharp.Hydra.Core.Extensions.ContainsSource(Security security, String key, IMarketDataSource source) in c:\Hydra\Core\Extensions.cs:line 153&lt;br /&gt;   at StockSharp.Hydra.Core.Extensions.ContainsSource(Security security, Type dataType, IMarketDataSource source) in c:\Hydra\Core\Extensions.cs:line 137&lt;br /&gt;   at StockSharp.Hydra.Core.Extensions.ContainsSource[T](Security security, IMarketDataSource source) in c:\Hydra\Core\Extensions.cs:line 116&lt;br /&gt;   at StockSharp.Hydra.Core.TraderMarketDataSource.Start() in c:\Hydra\Core\TraderMarketDataSource.cs:line 74&lt;br /&gt;   at StockSharp.Hydra.Worker.Start(IEnumerable`1 securities) in c:\Hydra\Hydra\Worker.cs:line 257&lt;br /&gt;   at StockSharp.Hydra.MainWindow.Start(Boolean auto) in c:\Hydra\Hydra\MainWindow.xaml.cs:line 1012&lt;br /&gt;   at StockSharp.Hydra.MainWindow.StartStopClick(Object sender, RoutedEventArgs e) in c:\Hydra\Hydra\MainWindow.xaml.cs:line 735&lt;br /&gt;   at StockSharp.Hydra.MainWindow.OnUpdateUi(Object sender, EventArgs e) in c:\Hydra\Hydra\MainWindow.xaml.cs:line 676&lt;br /&gt;   at System.Windows.Threading.DispatcherTimer.FireTick(Object unused)&lt;br /&gt;   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)&lt;br /&gt;   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Вылетает при старте экспорта.. жалуется на вот эту строку: &lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
				retVal.AddRange(str.Split(new[] { &amp;#39;,&amp;#39; }, StringSplitOptions.RemoveEmptyEntries).Select(s =&amp;gt; s.To&amp;lt;Guid&amp;gt;()));
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3070/</id>
    <title type="text">Куда баги файлить?</title>
    <published>2012-10-08T19:39:32Z</published>
    <updated>2012-10-08T19:39:32Z</updated>
    <author>
      <name>kingdom2</name>
      <uri>https://stocksharp.ru/users/6375/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Всем привет,&lt;br /&gt;&lt;br /&gt;Подскажите плиз, как баги на stocksharp выставлять?&lt;br /&gt;&lt;br /&gt;Спасибо</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3069/</id>
    <title type="text">Задержка в событии матчинга ордеров в начале работы стратегии</title>
    <published>2012-10-08T18:19:03Z</published>
    <updated>2012-10-08T18:19:03Z</updated>
    <author>
      <name>Liberal</name>
      <uri>https://stocksharp.ru/users/6066/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">Непонятные задержки в событии матчинга ордеров в начале работы стратегии. Наблюдается на всех версиях (4.1.3 – 4.1.5), весия  шлюза: 1.14.8, тестовый контур. Формирую две заявки. Купить по цене намного хуже чем лучший ask и продать по цене намного хуже чем лучший bid. Т.е. эти две заявки должны исполниться мгновенно. Но между событиями об успешной регистрации этих заявок и событиями об их исполнении проходит около 30 секунд. В дальнейшем, при работе стратегии пары заявок исполняются нормально. Так происходит при каждом запуске программы. Хотелось бы понять, это особенности StockSharp или особенности тестового контура, а на боевом все будет нормально?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3067/</id>
    <title type="text">GetCandle</title>
    <published>2012-10-08T07:26:11Z</published>
    <updated>2012-10-08T07:26:11Z</updated>
    <author>
      <name>RomSunZ</name>
      <uri>https://stocksharp.ru/users/6384/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">В примере SampleHistoryTesting добавил такой код:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

            var cnd = _series.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(1);
            if (cnd != null)
                this.AddInfoLog(&amp;quot;Предыдущая свеча {0}: {1};{2};{3};{4}; объем {5}&amp;quot;.Put(cnd.OpenTime, cnd.OpenPrice, cnd.HighPrice, cnd.LowPrice, cnd.ClosePrice, cnd.TotalVolume));
            else this.AddInfoLog(&amp;quot;Нет Предыдущая свеча&amp;quot;);

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В итоге получаю такой лог:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:plain"&gt;

2007.05.31 20:00:00.000|       |SS_RIU7@RTS_test account|Стратегия запущена.
2007.06.01 06:45:40.790|       |SS_RIU7@RTS_test account|Новая свеча 01.06.2007 10:30:00: 179005;179790;179005;179700; объем 103
2007.06.01 06:45:40.790|       |SS_RIU7@RTS_test account|Нет Предыдущая свеча
2007.06.01 07:04:31.710|       |SS_RIU7@RTS_test account|Новая свеча 01.06.2007 10:45:00: 179575;179600;178775;178875; объем 136
2007.06.01 07:04:31.710|       |SS_RIU7@RTS_test account|Предыдущая свеча 01.06.2007 10:30:00: 179005;179790;179005;179700; объем 103
....
2007.06.01 13:49:08.113|       |SS_RIU7@RTS_test account|Предыдущая свеча 01.06.2007 17:15:00: 186000;186000;185480;185550; объем 17
2007.06.04 06:30:51.940|       |SS_RIU7@RTS_test account|Новая свеча 01.06.2007 17:45:00: 186000;186995;186000;186995; объем 21
2007.06.04 06:30:51.940|       |SS_RIU7@RTS_test account|Предыдущая свеча 01.06.2007 17:30:00: 185555;186125;185555;186030; объем 209
2007.06.04 06:48:17.983|       |SS_RIU7@RTS_test account|Новая свеча 04.06.2007 10:30:00: 186055;186055;185425;185500; объем 80

(!!!!) 2007.06.04 06:48:17.983|       |SS_RIU7@RTS_test account|Нет Предыдущая свеча

2007.06.04 07:00:14.400|       |SS_RIU7@RTS_test account|Новая свеча 04.06.2007 10:45:00: 185100;185100;184205;184470; объем 194
2007.06.04 07:00:14.400|       |SS_RIU7@RTS_test account|Предыдущая свеча 04.06.2007 10:30:00: 186055;186055;185425;185500; объем 80
2007.06.04 07:15:57.457|       |SS_RIU7@RTS_test account|Новая свеча 04.06.2007 11:00:00: 184675;185650;184355;185650; объем 319
2007.06.04 07:15:57.457|       |SS_RIU7@RTS_test account|Предыдущая свеча 04.06.2007 10:45:00: 185100;185100;184205;184470; объем 194
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;В случае, если были выходные, то возвращает, что предыдущей свечки нет, вместо того, чтобы вернуть последнюю свечку пятницы. Это я туплю или так задумано?&lt;br /&gt;&lt;br /&gt;С уважением, Роман.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3066/</id>
    <title type="text">Работа EmulationTrader</title>
    <published>2012-10-07T21:40:12Z</published>
    <updated>2012-10-07T21:40:12Z</updated>
    <author>
      <name>InsiderHSE</name>
      <uri>https://stocksharp.ru/users/6099/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Если в примере SampleHistoryTesting закомментировать одну строчку - candleManager.Start(series);, то трейдер перестает подгружать сделки и событие trader.NewTrades перестает вызываться. Баг? Получается, для того, чтобы протестировать стратегию, которая вообще не использует свечки, нужно все равно создать и запустить менеджер свечек.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3065/</id>
    <title type="text">Ускорение работы Гидры при большом количестве инструментов</title>
    <published>2012-10-07T19:36:40Z</published>
    <updated>2012-10-07T19:36:40Z</updated>
    <author>
      <name>Цифровой</name>
      <uri>https://stocksharp.ru/users/6267/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">Доброго времени суток!&lt;br /&gt;&lt;br /&gt;Недавно обнаружил, что Гидра начинает прилично подтормаживать при большом количестве инструментов.&lt;br /&gt;Получил такую ситуацию довольно просто: запустил импорт инструментов у источника Smart (из демо-сервера),&lt;br /&gt;в ходе которого мне прилетело около 30 000 инструментов.&lt;br /&gt;После этого запуск Гидры и переход между вкладками начали тормозить,&lt;br /&gt;а запуска импорта маркет-данных из Smart было не дождаться: он отваливался по таймауту.&lt;br /&gt;&lt;br /&gt;Начал копать и обнаружил, что долго выполняется чтение данных из хранилища:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

entityRegistry.Securities
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Сразу оговорюсь: в качестве хранилища я использую &lt;b&gt;SQLLite&lt;/b&gt;, и, возможно, MS SQL Server тормозит значительно меньше.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;0.&lt;/b&gt; Понятно, что хотя бы один раз данные об инструментах из базы данных зачитать надо.&lt;br /&gt;Это происходит в классе SecurityStorage:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public SecurityStorage(IEntityRegistry entityRegistry)
{
	if (entityRegistry == null)
		throw new ArgumentNullException(&amp;quot;entityRegistry&amp;quot;);
	foreach (var security in entityRegistry.Securities)
		AddToCache(security);
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Здесь все зачитанные данные мудро кладутся в кэш.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.&lt;/b&gt; Но вот если посмотреть на класс FinamSecurityStorage, то здесь все уже не так радужно:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public FinamSecurityStorage(ISecurityStorage underlyingStorage, HydraEntityRegistry entityRegistry)
{
	if (underlyingStorage == null)
		throw new ArgumentNullException(&amp;quot;underlyingStorage&amp;quot;);
	foreach (var security in entityRegistry.Securities)
		TryAddToCache(security);
		_underlyingStorage = underlyingStorage;
	}
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Т.к. интерфейс ISecurityStorage не позволяет читать данные из кэша underlyingStorage,&lt;br /&gt;для построения особого &amp;quot;финамовского&amp;quot; кэша снова зачитываются данные напрямую из хранилища,&lt;br /&gt;что не очень-то быстро.&lt;br /&gt;Стоит ли вносить методы работы с кэшами в ISecurityStorage или выделить особый интерфейс для этого,&lt;br /&gt;скажем &amp;quot;ICachedSecurityStorage&amp;quot;, я сказать не могу - это дело архитекторов StockSharp,&lt;br /&gt;но можно сделать вот такой &amp;quot;костыль&amp;quot;:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public FinamSecurityStorage(ISecurityStorage underlyingStorage, HydraEntityRegistry entityRegistry)
{
	if (underlyingStorage == null)
		throw new ArgumentNullException(&amp;quot;underlyingStorage&amp;quot;);
	_underlyingStorage = underlyingStorage;
	if (underlyingStorage is SecurityStorage)
	{
		foreach (var security in ((SecurityStorage)_underlyingStorage).CachedSecurities)
			TryAddToCache(security);
		((SecurityStorage)_underlyingStorage).Reloaded += OnReloaded;
	}
	else
	{
		foreach (var security in entityRegistry.Securities)
			TryAddToCache(security);
	}
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Т.к. в случае Гидры underlyingStorage относится к классу SecurityStorage, этот код быстро код данные из имеющегося кэша.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.&lt;/b&gt; Старт импорта маркет-данных происходит долго из-за следующиего кода в классе Worker:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public bool Start(IEnumerable&amp;lt;VisualSecurity&amp;gt; securities)
{
	...
	_securities.Clear();

	foreach (var group in securities.GroupBy(s =&amp;gt; s.TradeInfo.Source)
		.Concat(securities.GroupBy(s =&amp;gt; s.DepthInfo.Source))
		.Concat(securities.GroupBy(s =&amp;gt; s.OrderLogInfo.Source))
		.Concat(securities.GroupBy(s =&amp;gt; s.SecurityChangeInfo.Source))
		.Concat(securities.GroupBy(s =&amp;gt; s.CandleInfo.Source))
		.Where(g =&amp;gt; !g.Key.IsEmpty()))
		{
			_securities.SafeAdd(group.Key).AddRange(group);
		}
	...
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Здесь проблема заключается в том, что при каждом вызове securities.GroupBy происходит повторный перебор securities.&lt;br /&gt;За счет того, что построение securities заключается в чтении их напрямую из хранилища здесь мы получаем ударную дозу&lt;br /&gt;из 5 подряд чтений из хранилища, что и приводит к превышению довольно солидного тайм-аута при старте.&lt;br /&gt;&lt;br /&gt;Оптимизировать выполнение можно, построив один раз массив и использовав его для группировки:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public bool Start(IEnumerable&amp;lt;VisualSecurity&amp;gt; securities)
{
	...
	_securities.Clear();

	var securitiesArray = securities.ToArray();

	foreach (var group in securitiesArray.GroupBy(s =&amp;gt; s.TradeInfo.Source)
		.Concat(securitiesArray.GroupBy(s =&amp;gt; s.DepthInfo.Source))
		.Concat(securitiesArray.GroupBy(s =&amp;gt; s.OrderLogInfo.Source))
		.Concat(securitiesArray.GroupBy(s =&amp;gt; s.SecurityChangeInfo.Source))
		.Concat(securitiesArray.GroupBy(s =&amp;gt; s.CandleInfo.Source))
		.Where(g =&amp;gt; !g.Key.IsEmpty()))
		{
			_securities.SafeAdd(group.Key).AddRange(group);
		}
	...
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.&lt;/b&gt; Но, собственно, почему в метод Start передается IEnumerable&amp;lt;VisualSecurity&amp;gt;,&lt;br /&gt;который приводит к чтению из хранилища, а не из кэша?&lt;br /&gt;Собственно код в методе StartStopClick класса MainWindow такой (в методе AutoStart аналогичный):&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

var selectedSecurities = _entityRegistry.Securities.Select(s =&amp;gt; s.ToVisualSecurity()).Where(s =&amp;gt; s.IsSelected);

if (_worker.Start(selectedSecurities))
{
	...
}
else
{
	...
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Здесь тоже можно воспользоваться имеющимся кэшем и переписать построение выбранных интрументов таким образом:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

var selectedSecurities = _securityStorage.CachedSecurities
	.Where(s =&amp;gt; s.IsSelected())
	.Select(s =&amp;gt; s.ToVisualSecurity())
	.ToArray();
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;В принципе, если бы код был написан сразу так, то оптимизация номер 2 с GroupBy даже не нужна.&lt;br /&gt;Но, имхо, правильнее сделать и то, и другое.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.&lt;/b&gt; Еще невыносимо долго при большом числе инструментов переключаются вкладки.&lt;br /&gt;Код построения всех выбранных интрументов в классе MarketDataSourceControl такой:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

private void FillSecurities()
{
	var selectedSource = Source.Name;
	var storage = HydraEntityRegistry;

	SecuritiesCtrl.Securities.Clear();
	_selectedSecurities.Clear();

	System.Windows.Input.Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait;
	System.Threading.Tasks.Task.Factory.StartNew(
		() =&amp;gt; 
		{
			var securities = storage
				.Securities
				.Select(s =&amp;gt; s.ToVisualSecurity()).Where(s =&amp;gt; s.IsSelected &amp;amp;&amp;amp; (selectedSource == null || (s.TradeInfo.Source == selectedSource ||
					s.DepthInfo.Source == selectedSource || s.OrderLogInfo.Source == selectedSource || s.SecurityChangeInfo.Source == selectedSource || 
					s.Source == selectedSource || s.CandleInfo.Source == selectedSource)));

			_selectedSecurities.AddRange(securities);
		})
		.ContinueWith(sec =&amp;gt;
		{
			...
		}, System.Threading.Tasks.TaskScheduler.FromCurrentSynchronizationContext());
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Недостаток здесь такой же - чтение данных напрямую из хранилища.&lt;br /&gt;Видимо для того, чтобы при этом не тормозило само переключение вкладки, чтение вынесено в отдельный поток.&lt;br /&gt;&lt;br /&gt;Ускорить переключение вкладок можно опять же за счет использование кэша:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

private void FillSecurities()
{
	var selectedSource = Source.Name;

	SecuritiesCtrl.Securities.Clear();
	_selectedSecurities.Clear();

	var securities = SecurityStorage.CachedSecurities
			.Where(s =&amp;gt; s.IsSelected())
			.Select(s =&amp;gt; s.ToVisualSecurity()).Where(s =&amp;gt;selectedSource == null || (s.TradeInfo.Source == selectedSource ||
				s.DepthInfo.Source == selectedSource || s.OrderLogInfo.Source == selectedSource || s.SecurityChangeInfo.Source == selectedSource ||
				s.Source == selectedSource || s.CandleInfo.Source == selectedSource));

	_selectedSecurities.AddRange(securities);

	...
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Так как из кэша все берется быстро, да и чтобы не возиться с GUI-синхронизацией, я разобрал использование отдельного потока.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;5.&lt;/b&gt; Последний нюанс, который вызвал у меня сомнения: зачем при старте импорта маркет-данных обновляются инструменты?&lt;br /&gt;Необходимость этого я себе объяснить не смог, поэтому поменял этот код в классе MarketDataTrader:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public void Start()
{
	Trader = _createTrader();

	try
	{
		...
		
		Trader.SecuritiesChanged += OnSecuritiesChanged;

		using (var su = new SecurityUpdate(Trader))
		{
			Trader.Connect();

			lock (_connectedLock)
			{
				if (!Trader.IsConnected &amp;amp;&amp;amp; !Monitor.Wait(_connectedLock, TimeSpan.FromSeconds(20)))
					throw new TimeoutException(&amp;quot;Ожидание подключения превысило максимально допустимый интервал.&amp;quot;);
			}

			su.Wait();
		}
	}
	catch
	{
		...
	}
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;На следующий:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public void Start(bool updateSecurities = false)
{
	Trader = _createTrader();

	try
	{
		...
		
		Trader.SecuritiesChanged += OnSecuritiesChanged;

		if (updateSecurities)
		{
			using (var su = new SecurityUpdate(Trader))
			{
				Trader.Connect();

				lock (_connectedLock)
				{
					if (!Trader.IsConnected &amp;amp;&amp;amp; !Monitor.Wait(_connectedLock, TimeSpan.FromSeconds(20)))
						throw new TimeoutException(&amp;quot;Ожидание подключения превысило максимально допустимый интервал.&amp;quot;);
				}

				su.Wait();
			}
		}
		else
		{
			Trader.Connect();

			lock (_connectedLock)
			{
				if (!Trader.IsConnected &amp;amp;&amp;amp; !Monitor.Wait(_connectedLock, TimeSpan.FromSeconds(20)))
					throw new TimeoutException(&amp;quot;Ожидание подключения превысило максимально допустимый интервал.&amp;quot;);
			}
		}
	}
	catch
	{
		...
	}
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;При этом причем updateSecurities == true только при запуске из метода MarketDataTrader.GetNewSecurities.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Вот такие оптимизации я сделал в своей Гидре версии 4.1.3.&lt;br /&gt;Предлагаю разработчикам StockSharp высказать свое мнение по поводу предложенных изменений и внести удачные в Гидру.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3064/</id>
    <title type="text">TheorPriceQuotingStrategy, Range</title>
    <published>2012-10-06T09:44:53Z</published>
    <updated>2012-10-06T09:44:53Z</updated>
    <author>
      <name>Дюшес</name>
      <uri>https://stocksharp.ru/users/6407/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">Привет!&lt;br /&gt;А когда вы исправите проблему с Range&amp;lt;Unit&amp;gt;?&lt;br /&gt;Из-за нее не работает стратегия TheorPriceQuotingStrategy(OrderDirections, decimal, Range&amp;lt;Unit&amp;gt;)&lt;br /&gt;В классе Ecng.ComponentModel.OperatorRegistry в конструкторе, видимо, надо добавить строку:&lt;br /&gt;AddOperator&amp;lt;Unit&amp;gt;(new UnitOperator())?&lt;br /&gt;Выдается следующее исключение:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:plain"&gt;

System.TypeInitializationException: Инициализатор типа &amp;quot;Ecng.ComponentModel.Range`1&amp;quot; выдал исключение. ---&amp;gt; System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре.
в System.Collections.Generic.Dictionary`2.get_Item(TKey key)
в Ecng.ComponentModel.OperatorRegistry.GetOperator[T]()
в Ecng.ComponentModel.Range`1..cctor()
--- Конец трассировки внутреннего стека исключений ---
в Ecng.ComponentModel.Range`1..ctor(T min, T max)
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3063/</id>
    <title type="text">ExcelStrategyReport</title>
    <published>2012-10-06T08:30:11Z</published>
    <updated>2012-10-06T08:30:11Z</updated>
    <author>
      <name>Кот Матроскин</name>
      <uri>https://stocksharp.ru/users/808/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">ExcelStrategyReport выдает значение P&amp;amp;L равным 6615,000, в то время как пересчитав вручную, получаешь 66,15. Так и должно быть?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3062/</id>
    <title type="text">NullReferenceException</title>
    <published>2012-10-06T08:24:10Z</published>
    <updated>2012-10-06T08:24:10Z</updated>
    <author>
      <name>Кот Матроскин</name>
      <uri>https://stocksharp.ru/users/808/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">Вылезло исключение:&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;2008.09.19 10:40:00.000|       |MQS_SBER@EQBR_test account|Регистрация новой заявки на Buy с ценой 37,48 и объемом 1.&lt;br /&gt;2008.09.19 10:40:00.000|       |MQS_SBER@EQBR_test account|Заявка 37232836 на Buy отправлена с ценой 37,48 объемом 1.&lt;br /&gt;2008.09.19 10:40:00.000|Error  |FD 0      |System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.&lt;br /&gt;   в StockSharp.Algo.MarketRuleHelper.#=q$pO7S09G8HFp$8Kf2LH_tosf63uwHghU5q$l$B4n9Sk=.DisposeManaged()&lt;br /&gt;   в Ecng.Common.Disposable.Dispose()&lt;br /&gt;   в #=q4CODmjFoTswMjExFKW$9BYA_f7JSvXhbTIyHr$v3R$Y=.OnRemoved(IMarketRule #=q5VzQl3KX5ZFz$NKhNTEr7A==)&lt;br /&gt;   в Ecng.Collections.BaseCollection`2.Remove(TItem item)&lt;br /&gt;   в Ecng.Collections.SynchronizedCollection`2.Remove(TItem item)&lt;br /&gt;   в StockSharp.Algo.MarketRuleHelper.TryRemoveRule(IMarketRuleContainer container, IMarketRule rule)&lt;br /&gt;   в StockSharp.Algo.MarketRuleHelper.#=qdWQ7nBerbmGdP1Csnj9OzQ==(IMarketRuleContainer #=qm2caH9OipVg_XiK$9JwQmw==, IMarketRule #=qfFV06gm8_NMMzPMD2F6hzg==, Func`1 #=quVsHtBA7Bbb_feOWjZzing==)&lt;br /&gt;   в StockSharp.Algo.Strategies.Strategy.#=qzWxys21Bayb0j0gHD9ZPJ2oUuKnv1x_jnNXaNRyr6il55P9x13A0c_rUpDv_Z2t56et50nKUe8mVyNhfs78bHA==(IMarketRule #=qAhGKN8uVo_OSrIVPofUuRg==, Func`1 #=qQSqDGVOhuFvdEMXXtiOsKg==)&lt;br /&gt;2008.09.19 10:40:00.000|       |MQS_SBER@EQBR_test account|Стратегия останавливается. [0,1]&lt;br /&gt;2008.09.19 10:40:00.000|       |MQS_SBER@EQBR_test account|Правило &amp;#39;Изменение стакана инструмента SBER@EQBR (0x1C10069)&amp;#39;. Приостановлено.&lt;br /&gt;2&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Что бы это могло быть?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3061/</id>
    <title type="text">Логирование в 4.1.5</title>
    <published>2012-10-05T21:03:36Z</published>
    <updated>2012-10-05T21:03:36Z</updated>
    <author>
      <name>InsiderHSE</name>
      <uri>https://stocksharp.ru/users/6099/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">В версии 4.1.5 пропал StockSharp.Algo.Logging&lt;br /&gt;Можете хотя бы в двух словах объяснить как теперь осуществляется логирование?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3060/</id>
    <title type="text">System.Threading.LockRecursionException: A read lock may not be acquired with the write lock held in</title>
    <published>2012-10-05T12:48:10Z</published>
    <updated>2012-10-05T12:48:10Z</updated>
    <author>
      <name>Reef</name>
      <uri>https://stocksharp.ru/users/6366/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">System.Threading.LockRecursionException: A read lock may not be acquired with the write lock held in this mode.&lt;br /&gt;   at System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(TimeoutTracker timeout)&lt;br /&gt;   at System.Threading.ReaderWriterLockSlim.TryEnterReadLock(TimeoutTracker timeout)&lt;br /&gt;   at System.Threading.ReaderWriterLockSlim.EnterReadLock()&lt;br /&gt;   at StockSharp.BusinessEntities.TransactionManager.BeginRead(Boolean isUpgradable)&lt;br /&gt;   at StockSharp.BusinessEntities.Order.BeginRead(Boolean isUpgradable)&lt;br /&gt;   at StockSharp.Algo.TraderHelper.IsCanceled(Order order)&lt;br /&gt;   at #=qd51RpYzKvk8ZoX3tAE27PmbbgSOEgGembRYktmkRtEU=.#=qc2YLfE3qNxoKbmsPoAjrt3GYWUX7pCFZXqge_Wm2Ew4=(IEnumerable`1 #=q3G9L2rAf4jEoc5Ky5zhu7Q==)&lt;br /&gt;   at StockSharp.Algo.BaseTrader.RaiseOrdersChanged(IEnumerable`1 orders)&lt;br /&gt;   at StockSharp.Algo.BaseTrader.RaiseOrderChanged(Order order)&lt;br /&gt;   at StockSharp.Algo.BaseTrader.GetOrder(Security security, Int64 id, Func`2 createOrder, Func`2 changeOrder)&lt;br /&gt;   at StockSharp.Quik.QuikTrader.#=qfgs3t3F0QJo2uAeiNU2Tth4_a78V8UUqxF4smGPJZIw=.#=qoZH2YxIHtxSQ_uNSF$6oEA==(IList`1 #=q5KsejMUAjHj3h8NVmH4a2Q==, Func`2 #=q0Wb5KRoV3aR1oak$4aFg8w==)&lt;br /&gt;   at #=qLnhEF5Z48wRQ9u$AmcVUfI0sID3uoJe0m1JrX$APwo8Vj58jlFaNKHSm348fXvr0.#=qKBypk9leHimjXPlbfTueQQ==(DdeTable #=qLuoAhSbeEwLsEtGTnfPhNA==, IList`1 #=qxrmtSCJ8C_OwVhV0vMJvOw==, Action`2 #=qmvY6ytVJfAh2338pSmoPyQ==, Action`1 #=qD48VLzAAfqjlPSYfqfBeig==, Boolean #=qLKUY5J3VRmjdKuGFcPfQ7Q==)/r/nSystem.Threading.LockRecursionException: A read lock may not be acquired with the write lock held in this mode.&lt;br /&gt;   at System.Threading.ReaderWriterLockSlim.TryEnterReadLockCore(TimeoutTracker timeout)&lt;br /&gt;   at System.Threading.ReaderWriterLockSlim.TryEnterReadLock(TimeoutTracker timeout)&lt;br /&gt;   at System.Threading.ReaderWriterLockSlim.EnterReadLock()&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;версия 15 (с кодеплекса) </content>
  </entry>
</feed>