﻿<?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=forum&amp;page=154</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-05-01T09:42:24Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=154" rel="self" type="application/rss+xml" />
  <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>
  <entry>
    <id>https://stocksharp.ru/topic/3057/</id>
    <title type="text">Как изменить путь к маркет-данным?</title>
    <published>2012-10-03T23:51:16Z</published>
    <updated>2012-10-03T23:51:16Z</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;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:jscript"&gt;
&amp;lt;property name=&amp;quot;BasePath&amp;quot; propertyType=&amp;quot;System.String&amp;quot; value=&amp;quot;&amp;quot; /&amp;gt;&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3056/</id>
    <title type="text">Ошибки при запуске Гидры версии 19634</title>
    <published>2012-10-03T11:17:11Z</published>
    <updated>2012-10-03T11:17:11Z</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">Скомпилированная Гидра из S# версии 19661 висит не подавая признаков жизни.&lt;br /&gt;&lt;br /&gt;В Log следующая ошибка:&lt;br /&gt;&lt;br /&gt;13:57:05.303 | Error      | UnhandleException | System.AggregateException: При ожидании задачи или доступе к ее свойству исключения не были замечены исключения задачи. В результате незамеченные исключения были созданы повторно потоком завершения. ---&amp;gt; System.AggregateException: Произошла одна или несколько ошибок. ---&amp;gt; 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;   в System.Threading.Tasks.Task`1.get_Result()&lt;br /&gt;   в StockSharp.Hydra.MainWindow.&amp;lt;.ctor&amp;gt;b__1(Task`1 task)&lt;br /&gt;   в System.Threading.Tasks.Task.Execute()&lt;br /&gt;   --- Конец трассировки внутреннего стека исключений ---&lt;br /&gt;   в System.Threading.Tasks.TaskExceptionHolder.Finalize()&lt;br /&gt;---&amp;gt; (Внутреннее исключение #0) System.AggregateException: Произошла одна или несколько ошибок. ---&amp;gt; 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;   в System.Threading.Tasks.Task`1.get_Result()&lt;br /&gt;   в StockSharp.Hydra.MainWindow.&amp;lt;.ctor&amp;gt;b__1(Task`1 task)&lt;br /&gt;   в System.Threading.Tasks.Task.Execute()&lt;br /&gt;---&amp;gt; (Внутреннее исключение #0) 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()&amp;lt;---&lt;br /&gt;&amp;lt;---</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3055/</id>
    <title type="text">Ошибка генерации свечек</title>
    <published>2012-10-03T06:30:51Z</published>
    <updated>2012-10-03T06:30:51Z</updated>
    <author>
      <name>seashaman</name>
      <uri>https://stocksharp.ru/users/772/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">При попытки генерировать свечки через интерфейс с картинки:&lt;br /&gt;&lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABH9JDbJP28xXOHsTedmEzm2hdaHX7r7qJH0u7FwH27j6kbGxRufkly3Fz8Oi425oTEs2Sv8nV5yOEb_mDAF2Rdq1Xz0IvTzz1yj1MLzNpcUMbQLc-W_U5v_66Pt2KrGNM" title="http://s2.hostingkartinok.com/uploads/images/2012/10/8dd8cbaac76bb290879b00e42886aba5.jpg
"&gt;http://s2.hostingkartino...290879b00e42886aba5.jpg
&lt;/a&gt;&lt;br /&gt;Ловлю код ошибки: &lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_984117e7236948ea9590e1de9ae5fd2d');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_984117e7236948ea9590e1de9ae5fd2d' style='display:none'&gt;10:19:46.548 | Error      | StockSharp      | System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.&lt;br /&gt;   в StockSharp.Hydra.CandlesWindow.GetCandles() в c:\stock\stocksharp\dev\Hydra\Hydra\CandlesWindow.xaml.cs:строка 151&lt;br /&gt;   в StockSharp.Hydra.CandlesWindow.FindClick(Object sender, RoutedEventArgs e) в c:\stock\stocksharp\dev\Hydra\Hydra\CandlesWindow.xaml.cs:строка 203&lt;br /&gt;   в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)&lt;br /&gt;   в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)&lt;br /&gt;   в System.Windows.Controls.Button.OnClick()&lt;br /&gt;   в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)&lt;br /&gt;   в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)&lt;br /&gt;   в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)&lt;br /&gt;   в System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)&lt;br /&gt;   в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)&lt;br /&gt;   в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)&lt;br /&gt;   в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)&lt;br /&gt;   в System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)&lt;br /&gt;   в System.Windows.Input.InputManager.ProcessStagingArea()&lt;br /&gt;   в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)&lt;br /&gt;   в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)&lt;br /&gt;   в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean&amp;amp; handled)&lt;br /&gt;   в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp;amp; handled)&lt;br /&gt;   в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp;amp; handled)&lt;br /&gt;   в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)&lt;br /&gt;   в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)&lt;br /&gt;   в 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;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAABH9JDbJP28xXOHsTedmEzm2hdaHX7r7qJH0u7FwH27j6kbGxRufkly3Fz8Oi425oRVGdx7YwUhlklnkYLIHJRuRzg5oBBBJY1WmnKMrRTc3YugTKJKWKBSoPv2F3IsB-0" title="http://s2.hostingkartinok.com/uploads/images/2012/10/c9cc20c7ea9f0190205ea208dbf5c618.jpg
"&gt;http://s2.hostingkartino...190205ea208dbf5c618.jpg
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Сейчас использую более раннюю версию гидры. Там все ок.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3054/</id>
    <title type="text">Сравнение багов при тестирования 4.1.4 vs. 4.1.5 (commit 19627)</title>
    <published>2012-10-02T13:36:25Z</published>
    <updated>2012-10-02T13:36:25Z</updated>
    <author>
      <name>Liberal</name>
      <uri>https://stocksharp.ru/users/6066/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">В тех поддержку баги уже отправил, но решил написать и здесь. Вдруг кому-нибудь будет полезно.&lt;br /&gt;&lt;br /&gt;Все ошибки относятся к тестированию (EmulationTrader)&lt;br /&gt;Сравнение ошибок версий 4.1.4 и 4.1.5 (commit 19627 trunk)&lt;br /&gt;&lt;br /&gt;1) ReRgisterOrder в атомарном режиме не работает. Исправлено в 4.1.5.&lt;br /&gt;&lt;br /&gt;2) При тестировании на OrderLog неправильно строятся стаканы из OrderLog. В версии 4.1.5 без изменений. (Описание неправильного построения с примерами смотреть ниже)&lt;br /&gt;&lt;br /&gt;3) При тестировании на OrderLog события NewOrderLogItems срабатывают нормально. В версии 4.1.5. события NewOrderLogItems перестают срабатывать, но стаканы строятся по OrderLog (хоть и с ошибками – см. пункт 2) ), события MarketDepthChange вызываются.&lt;br /&gt;&lt;br /&gt;4) Котирование (MarketQuotingStrategy, тестирование на стаканах, атомарный режим выключен) – непонятные задержки в логе. Например, есть задержка между отправкой заявки на регистрацию и получение сообщения о подтверждении регистрации на бирже (несмотря на то, что  EmulationTrader.MarketEmulator.Settings.Latency = = 0). Исправлено в 4.1.5&lt;br /&gt;&lt;br /&gt;5) Котирование (MarketQuotingStrategy, тестирование на стаканах, атомарный режим выключен) – в логе постоянно возникают двойные строки об отмене заявки. В версии 4.1.5 без изменений.&lt;br /&gt;&lt;br /&gt;6) Видно, что в логах котирования отличается последняя строка, при одной и той же истории стаканов&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Лог котирования для версии 4.1.4:&lt;br /&gt;&lt;br /&gt;2012.09.13 00:00:00.000|       |T_TEST@RTS_SuperProfit|Стратегия запущена.&lt;br /&gt;2012.09.14 00:00:01.000|       |MQS_TEST@RTS_SuperProfit|Стратегия запущена.&lt;br /&gt;2012.09.14 00:00:01.000|       |MQS_TEST@RTS_SuperProfit|Котирование на Buy объема 1.&lt;br /&gt;2012.09.14 00:00:01.000|       |MQS_TEST@RTS_SuperProfit|Приостановка правил. _rulesSuspendCount 1.&lt;br /&gt;2012.09.14 00:00:01.000|       |MQS_TEST@RTS_SuperProfit|Возобновление правил. _rulesSuspendCount 0.&lt;br /&gt;2012.09.14 00:00:01.000|       |MQS_TEST@RTS_SuperProfit|Цена текущей NULL и лучшей 100.&lt;br /&gt;2012.09.14 00:00:01.000|       |MQS_TEST@RTS_SuperProfit|Лучший бид NULL и лучший аск NULL.&lt;br /&gt;2012.09.14 00:00:01.000|       |MQS_TEST@RTS_SuperProfit|Регистрация новой заявки на Buy с ценой 100 и объемом 1.&lt;br /&gt;2012.09.14 00:00:01.000|       |MQS_TEST@RTS_SuperProfit|Заявка 14123657 на Buy отправлена с ценой 100 объемом 1.&lt;br /&gt;2012.09.14 00:00:02.000|       |MQS_TEST@RTS_SuperProfit|Заявка 14123657 принята биржей.&lt;br /&gt;2012.09.14 00:00:02.000|       |MQS_TEST@RTS_SuperProfit|Сброс счетчика ошибок регистрации с 0 до нуля.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Цена текущей 100 и лучшей 110.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Лучший бид 100 и лучший аск 120.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Котирование заявки 14123657 на Buy с ценой 100 объемом 1.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Отмена заявки 14123657.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Отмена заявки 14123657.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Заявка 14123657 больше не активна.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Заявка 14123657 была снята. Время снятия 14.09.2012 0:01:00.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Цена текущей NULL и лучшей 110.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Лучший бид 110 и лучший аск 130.&lt;br /&gt;&lt;br /&gt;Лог котирования для версии 4.1.5:&lt;br /&gt;&lt;br /&gt;2012.09.13 00:00:00.000|       |T_TEST@RTS_SuperProfit|Стратегия запущена. [0,-1]&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Стратегия запущена. [0,1]&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Котирование на Buy объема 1.&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Приостановка правил. _rulesSuspendCount 1.&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Возобновление правил. _rulesSuspendCount 0.&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Цена текущей NULL и лучшей 100.&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Лучший бид NULL и лучший аск NULL.&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Регистрация новой заявки на Buy с ценой 100 и объемом 1.&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Заявка 19145282 на Buy отправлена с ценой 100 объемом 1.&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Заявка 19145282 принята биржей.&lt;br /&gt;2012.09.14 00:00:00.000|       |MQS_TEST@RTS_SuperProfit|Сброс счетчика ошибок регистрации с 0 до нуля.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Цена текущей 100 и лучшей 110.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Лучший бид 100 и лучший аск 120.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Котирование заявки 19145282 на Buy с ценой 100 объемом 1.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Отмена заявки 19145282.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Отмена заявки 19145282.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Заявка 19145282 больше не активна.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Заявка 19145282 была снята. Время снятия 14.09.2012 0:01:00.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Цена текущей NULL и лучшей 110.&lt;br /&gt;2012.09.14 00:01:00.000|       |MQS_TEST@RTS_SuperProfit|Лучший бид 100 и лучший аск 120.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Пример неправильно построения стаканов из лога (EmulationTrader).&lt;br /&gt;&lt;br /&gt;1) По событиям NewOrderLogItems видно, что в любой момент времени в стакане должны присутствовать обе котировки, как bid, так и ask. В первом же  событие MarketDepthChange котировка ask отсутствует.&lt;br /&gt;&lt;br /&gt;2) По событиям NewOrderLogItems видно, что в любой момент времени в стакане объем по цене bid равен объему по цене ask. По событиям MarketDepthChange видно, что при построении стаканов по OrderLog это не соблюдается.&lt;br /&gt;&lt;br /&gt;Примечание. Файл истории OrderLog прилагается. OrderLog  создан специально для отладки и сохранен через StorageRegistry. Лог создан с тем расчетом, что бы формировать стакан глубиной 1 с неизменными ценами bid и ask, и периодическими сделками по этим ценам.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Логи:&lt;br /&gt;&lt;br /&gt;MarketDepthChange:&lt;br /&gt;&lt;br /&gt;1) Бид 100 10&lt;br /&gt;&lt;br /&gt;2) Бид 100 11\r\nОффер 130 10&lt;br /&gt;&lt;br /&gt;3) Бид 100 10\r\nОффер 130 11&lt;br /&gt;&lt;br /&gt;4) Бид 100 11\r\nОффер 130 10&lt;br /&gt;&lt;br /&gt;5) Бид 100 10\r\nОффер 130 11&lt;br /&gt;&lt;br /&gt;NewOrderLogItems:&lt;br /&gt;&lt;br /&gt;1)&lt;br /&gt;&lt;br /&gt;[0]: {Регистрация заявки 0/10000000 Покупка 100 10 Active 0}&lt;br /&gt;[1]: {Регистрация заявки 0/10000001 Продажа 130 10 Active 0}&lt;br /&gt;&lt;br /&gt;2)&lt;br /&gt;&lt;br /&gt;[0]: {Регистрация заявки 0/10000002 Покупка 100 1 Active 0}&lt;br /&gt;[1]: {Регистрация заявки 0/10000003 Продажа 130 1 Active 0}&lt;br /&gt;&lt;br /&gt;3)&lt;br /&gt;&lt;br /&gt;[0]: {Регистрация заявки 0/10000004 Продажа 100 1 Active 0}&lt;br /&gt;[1]: {Сведение заявки 0/10000004 Продажа 100 1 Done 0 на сделку 14.09.2012 0:01:01 1 100 1}&lt;br /&gt;[2]: {Сведение заявки 0/10000002 Покупка 100 1 Done 0 на сделку 14.09.2012 0:01:01 1 100 1}&lt;br /&gt;[3]: {Регистрация заявки 0/10000005 Покупка 130 1 Active 0}&lt;br /&gt;[4]: {Сведение заявки 0/10000005 Покупка 130 1 Done 0 на сделку 14.09.2012 0:01:01 2 130 1}&lt;br /&gt;[5]: {Сведение заявки 0/10000003 Продажа 130 1 Done 0 на сделку 14.09.2012 0:01:01 2 130 1}&lt;br /&gt;&lt;br /&gt;4)&lt;br /&gt;&lt;br /&gt;[0]: {Регистрация заявки 0/10000006 Покупка 100 1 Active 0}&lt;br /&gt;[1]: {Регистрация заявки 0/10000007 Продажа 130 1 Active 0}&lt;br /&gt;&lt;br /&gt;5)&lt;br /&gt;&lt;br /&gt;[0]: {Регистрация заявки 0/10000008 Продажа 100 1 Active 0}&lt;br /&gt;[1]: {Сведение заявки 0/10000008 Продажа 100 1 Done 0 на сделку 14.09.2012 0:02:01 3 100 1}&lt;br /&gt;[2]: {Сведение заявки 0/10000006 Покупка 100 1 Done 0 на сделку 14.09.2012 0:02:01 3 100 1}&lt;br /&gt;[3]: {Регистрация заявки 0/10000009 Покупка 130 1 Active 0}&lt;br /&gt;[4]: {Сведение заявки 0/10000009 Покупка 130 1 Done 0 на сделку 14.09.2012 0:02:01 4 130 1}&lt;br /&gt;[5]: {Сведение заявки 0/10000007 Продажа 130 1 Done 0 на сделку 14.09.2012 0:02:01 4 130 1}</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3053/</id>
    <title type="text">пакетная отправка заявок в QUIK по шаблону</title>
    <published>2012-10-02T09:13:14Z</published>
    <updated>2012-10-02T09:13:14Z</updated>
    <author>
      <name>zrb</name>
      <uri>https://stocksharp.ru/users/28081/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">задача следующая: &lt;br /&gt;есть определенный шаблон, например хочу по бумаге выставить две заявки, поставить айсберг по определенной цене и просто обычную заявку. &lt;br /&gt;и так по нескольким бумагам&lt;br /&gt;Ну то есть задача в какой-то момент одним махом отправить все эти заявки. &lt;br /&gt;как лучше это реализовать? QPILE? отдельный робот? что-то еще? &lt;br /&gt;&lt;br /&gt;спасибо</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3052/</id>
    <title type="text">Что сие значит: #=qvz7eit8pxNUvraHaSr ...</title>
    <published>2012-10-01T14:25:23Z</published>
    <updated>2012-10-01T14:25:23Z</updated>
    <author>
      <name>BigBen</name>
      <uri>https://stocksharp.ru/users/6302/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Переведите, плиз, с бусурманского хотя бы на английский, что означают эти много букв:&lt;br /&gt;&lt;br /&gt;   в System.Collections.Generic.Dictionary`2.get_Item(TKey key)&lt;br /&gt;   в Ecng.Collections.SynchronizedDictionary`2.get_Item(TKey key)&lt;br /&gt;   в StockSharp.Algo.Slippage.SlippageManager.#=qOdlOKYT7COgmqPX1tHXuEHbYAnvT834W6E6FOHURMcE=.#=qu2S$T40ImoiVKUxmYxNKqSNnpOcC2Gb1ab6h0c$CUCg=(CachedSynchronizedDictionary`2 #=q7cXFnd6TaxjCq8_SWcxE0w==)&lt;br /&gt;   в Ecng.Collections.CollectionHelper.SyncDo[TCollection](TCollection collection, Action`1 action)&lt;br /&gt;   в StockSharp.Algo.Slippage.SlippageManager.ReRegister(Order oldOrder, Order newOrder)&lt;br /&gt;   в StockSharp.Algo.Strategies.Strategy.#=qvz7eit8pxNUvraHaSroAfj5kI$J4SOZSa1OpNlmEebA=.#=qcGGdy5HGGyKT93RSQXkZ52LdTK4diyndWokNNDOQi5k=()&lt;br /&gt;   в StockSharp.Algo.Strategies.Strategy.#=q1z2_O1i2I6iBdwEbxAkKh1osVBgYzjMHQe3L5Nv5Euc=.#=qAdqcopAjDpR6VdVGil1jqAnNM_j68vMTvX0BJxTSRj0=()&lt;br /&gt;   в StockSharp.Algo.Strategies.Strategy.#=qEX_8L11P$MLYMk4kVxKAu7vVJZwAnY0R_winjcvGdyY=.#=qEgq5EsI$8yFLeWdf0XqNEA==(Action #=qyaY09V6QJlHsZBhBBylGnA==)&lt;br /&gt;   в StockSharp.Algo.Strategies.Strategy.#=q4hdKU5fePTKLCzx017mjgQ==(Action #=qoLtbGp5xIWnRL$3_yGkKCQ==)&lt;br /&gt;   в StockSharp.Algo.Strategies.Strategy.AddOrder(Order order)&lt;br /&gt;   в Ecng.Collections.CollectionHelper.ForEach[T](IEnumerable`1 source, Action`1 action)&lt;br /&gt;   в StockSharp.Algo.Strategies.Strategy.#=qdLN0rw1J6Fd1aeZySh4dRWtFlpk7T6cSgMkfR3IAaYQ=(IEnumerable`1 #=qOdkYLMiLGDQTkKTW9MyoVQ==)&lt;br /&gt;   в System.Action`1.Invoke(T obj)&lt;br /&gt;   в Ecng.Common.DelegateHelper.SafeInvoke[T](Action`1 handler, T arg)&lt;br /&gt;   в Ecng.ComponentModel.EventsContainer`1.Raise(IEnumerable`1 items)&lt;br /&gt;&lt;br /&gt;А то замуровали демоны.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3051/</id>
    <title type="text">Ошибки версии 19625</title>
    <published>2012-10-01T13:31:37Z</published>
    <updated>2012-10-01T13:31:37Z</updated>
    <author>
      <name>anothar</name>
      <uri>https://stocksharp.ru/users/6089/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">Скачал последнюю версию. Удалил все источники. Получил ошибку:&lt;br /&gt;17:25:34.369|Error  |StockSharp|System.ArgumentNullException: Значение не может быть неопределенным.&lt;br /&gt;Имя параметра: source&lt;br /&gt;   в StockSharp.Hydra.Core.Extensions.GetAllSecurityId(IMarketDataSource source)&lt;br /&gt;   в StockSharp.Hydra.MarketDataSourceControl.&amp;lt;.ctor&amp;gt;b__0(Object arg1, DependencyPropertyChangedEventArgs arg2)&lt;br /&gt;   в System.Windows.FrameworkElement.RaiseDependencyPropertyChanged(EventPrivateKey key, DependencyPropertyChangedEventArgs args)&lt;br /&gt;   в System.Windows.FrameworkElement.OnDataContextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)&lt;br /&gt;   в System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)&lt;br /&gt;   в System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)&lt;br /&gt;   в System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)&lt;br /&gt;   в System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry&amp;amp; newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)&lt;br /&gt;   в System.Windows.TreeWalkHelper.OnInheritablePropertyChanged(DependencyObject d, InheritablePropertyChangeInfo info)&lt;br /&gt;&lt;br /&gt;После чего попытался добавить источник &amp;quot;Плаза&amp;quot;. Получил ошибку:&lt;br /&gt;2012.10.01 17:24:18.930|Error  |StockSharp|System.TypeLoadException: Не удалось загрузить тип &amp;quot;StockSharp.Algo.Logging.LogLevels&amp;quot; из сборки &amp;quot;StockSharp.Algo, Version=4.1.5.0, Culture=neutral, PublicKeyToken=null&amp;quot;.&lt;br /&gt;   в StockSharp.Plaza.PlazaTrader..ctor(EndPoint address)&lt;br /&gt;   в StockSharp.Hydra.Plaza.PlazaTraderSource.CreateTrader(MarketDataSourceSettings settings, Boolean isNew)&lt;br /&gt;   в StockSharp.Hydra.Core.TraderMarketDataSource.ApplySettings(MarketDataSourceSettings settings, Boolean isNew)&lt;br /&gt;   в StockSharp.Hydra.Core.BaseMarketDataSource.Init(MarketDataSourceSettings settings)&lt;br /&gt;   в StockSharp.Hydra.MainWindow.InitSource(IMarketDataSource source, MarketDataSourceSettings settings)&lt;br /&gt;   в StockSharp.Hydra.MainWindow.CreateSource(IMarketDataSource source)&lt;br /&gt;   в StockSharp.Hydra.MainWindow.InitializeMarketSources()&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3050/</id>
    <title type="text">Как правильно мигрировать на новые версии?</title>
    <published>2012-10-01T11:33:10Z</published>
    <updated>2012-10-01T11:33:10Z</updated>
    <author>
      <name>XMbIPb</name>
      <uri>https://stocksharp.ru/users/6200/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">Вот я например ищу стабильную версию гидры уже наверное где-то с 4.0.17.. и каждый раз, при тестировании новой версии, приходится скачивать новый архив, распаковывать, корректировать нужные параметры, добавлять в нужные файлы свой код, ссылки и т.д.. компилишь, запускаешь, хоп какой-то новый эксепшн и опять пять кругов отчаянья) всё по новой.. тошнит уже от этой процедуры.. сотню раз уже наверно её проделывал.. да и куча времени теряется.. неужели у всех так? Может можно как-то с codeplex засинхрониться, чтоб обновлялись только изменённые файлы.. или ещё как?                      </content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3049/</id>
    <title type="text">получение выбранных потоков</title>
    <published>2012-10-01T11:19:37Z</published>
    <updated>2012-10-01T11:19:37Z</updated>
    <author>
      <name>urri</name>
      <uri>https://stocksharp.ru/users/6147/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">Подскажите, пожалуйста, как получать таблицу common из потока FORTS_FUTCOMMON_REPL и таблицу user_deal из потока FORTS_FUTTRADE_REPL, все остальные потоки отключить?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3048/</id>
    <title type="text">Гидра + MS SQL 2008 R2</title>
    <published>2012-09-30T20:12:14Z</published>
    <updated>2012-09-30T20:12:14Z</updated>
    <author>
      <name>DrChemist</name>
      <uri>https://stocksharp.ru/users/6376/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">Второй день долблюсь – пытаюсь настроить связку с MSSQL, и не удается. &lt;br /&gt;Использую MS SQL 2008 R2 standard.&lt;br /&gt;Гидра 4.1.4&lt;br /&gt;Базу создал скриптом trading.sql  (взял с stocksharp.codeplex.com, dev/Documentation)&lt;br /&gt;Скрипт отработал нормально. База создалась, проблем не было.&lt;br /&gt;Добиться того, чтобы Гидра хоть как-то цеплялась к базе мне удалось только в такой конфигурации (из файла Hydra.exe.config):&lt;br /&gt;&lt;br /&gt;----------------------------------------------&lt;br /&gt;&amp;lt;connectionStrings&amp;gt;&lt;br /&gt;	&amp;lt;add name=&amp;quot;SqlServerConStr&amp;quot; connectionString=&amp;quot;Server=(local);Database=Trading;User ID=trading;Password=trading;&amp;quot; providerName=&amp;quot;&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/connectionStrings&amp;gt;&lt;br /&gt;&lt;br /&gt;……………..&lt;br /&gt;&amp;lt;param name=&amp;quot;connectionString&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;value value=&amp;quot;SqlServerConStr&amp;quot; typeConverter=&amp;quot;Ecng.Configuration.ConnectionSettingsTypeConverter, Ecng.Configuration&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&lt;br /&gt;……………..&lt;br /&gt;&amp;lt;property name=&amp;quot;Provider&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;!--&amp;lt;dependency type=&amp;quot;Ecng.Data.Providers.SQLiteDatabaseProvider, Ecng.Data.Providers&amp;quot; /&amp;gt;--&amp;gt;&lt;br /&gt;&amp;lt;dependency type=&amp;quot;Ecng.Data.SqlServerDatabaseProvider, Ecng.Data&amp;quot; /&amp;gt;&lt;br /&gt;&amp;lt;/property&amp;gt;&lt;br /&gt;----------------------------------------------&lt;br /&gt;&lt;br /&gt;Остальные конфигурации не трогал&lt;br /&gt;При запуске гидра валится на этом коде:&lt;br /&gt;&lt;br /&gt;----------------------------------------------&lt;br /&gt;private void InitializeDataSource()&lt;br /&gt;{&lt;br /&gt;_storageRegistry = new StorageRegistry();&lt;br /&gt;ConfigManager.RegisterService(_storageRegistry);&lt;br /&gt;&lt;br /&gt;……………..&lt;br /&gt;if (_entityRegistry.Exchanges.Count &amp;lt; 4)&lt;br /&gt;{&lt;br /&gt;_entityRegistry.Exchanges.Save(Exchange.Test);   &amp;lt;= Здесь валимся&lt;br /&gt;             _entityRegistry.Exchanges.Save(Exchange.Micex);&lt;br /&gt;             _entityRegistry.Exchanges.Save(Exchange.Rts);&lt;br /&gt;             _entityRegistry.Exchanges.Save(Exchange.Ux);&lt;br /&gt;}&lt;br /&gt;----------------------------------------------&lt;br /&gt;&lt;br /&gt;Поначалу эксепшен говори о том, что нет прав для INSERT операции. Проверил – действительно, скрипт создавал пользователя trading без прав. Тал пользователю trading все права на базу Trading. Но это помогло не сильно. После этого эксепшен стал другой:&lt;br /&gt;&lt;br /&gt;----------------------------------------------&lt;br /&gt;&lt;br /&gt;2012-10-01 00:03:55.073|Error  |StockSharp|System.Data.SqlClient.SqlException (0x80131904): Invalid column name &amp;#39;TimeZoneInfo&amp;#39;.&lt;br /&gt;   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)&lt;br /&gt;   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)&lt;br /&gt;   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning()&lt;br /&gt;   at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)&lt;br /&gt;   at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)&lt;br /&gt;   at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)&lt;br /&gt;   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)&lt;br /&gt;   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)&lt;br /&gt;   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()&lt;br /&gt;   at Ecng.Data.DatabaseCommand.&amp;lt;ExecuteNonQuery&amp;gt;b__6(DbCommand cmd)&lt;br /&gt;   at Ecng.Data.DatabaseCommand.&amp;lt;&amp;gt;c__DisplayClass4`1.&amp;lt;Execute&amp;gt;b__1(DbConnection connection)&lt;br /&gt;   at Ecng.Data.Database.GetConnection(Action`1 action)&lt;br /&gt;   at Ecng.Data.DatabaseCommand.Execute[TResult](IEnumerable`1 input, Func`2 handler)&lt;br /&gt;   at Ecng.Data.DatabaseCommand.ExecuteNonQuery(SerializationItemCollection input)&lt;br /&gt;   at Ecng.Data.Database.Execute(DatabaseCommand command, SerializationItemCollection source, Boolean needRetVal)&lt;br /&gt;   at Ecng.Data.Database.Create(DatabaseCommand command, SerializationItemCollection input, Boolean needRetVal)&lt;br /&gt;   at Ecng.Data.Database.&amp;lt;&amp;gt;c__DisplayClassc`1.&amp;lt;Create&amp;gt;b__b()&lt;br /&gt;   at Ecng.Data.Database.Create[TEntity](TEntity entity)&lt;br /&gt;   at Ecng.Data.Database.Ecng.Serialization.IStorage.Add[TEntity](TEntity entity)&lt;br /&gt;   at Ecng.Serialization.RelationManyList`1.OnAdd(TEntity entity)&lt;br /&gt;   at Ecng.Data.HierarchicalPageLoadList`1.OnAdd(TEntity entity)&lt;br /&gt;   at Ecng.Serialization.RelationManyList`1.Add(TEntity item)&lt;br /&gt;   at StockSharp.Algo.Storages.BaseStorageEntityList`1.Save(T entity)&lt;br /&gt;   at StockSharp.Hydra.MainWindow.InitializeDataSource() in D:\Work\StockSharp\StockSharp_4.1.4_Sources.Up\Hydra\Hydra\MainWindow.xaml.cs:line 160&lt;br /&gt;   at StockSharp.Hydra.MainWindow.&amp;lt;MainWindowLoaded&amp;gt;b__21() in D:\Work\StockSharp\StockSharp_4.1.4_Sources.Up\Hydra\Hydra\MainWindow.xaml.cs:line 483&lt;br /&gt;   at System.Threading.Tasks.Task`1.InvokeFuture(Object futureAsObj)&lt;br /&gt;   at System.Threading.Tasks.Task.InnerInvoke()&lt;br /&gt;   at System.Threading.Tasks.Task.Execute()&lt;br /&gt;----------------------------------------------&lt;br /&gt;&lt;br /&gt;Пытался добавить колонку TimeZoneInfo в таблицу Exchange. Вроде проходило, но потом опять где-то что-то ломалось.&lt;br /&gt;В общем, что-то делаю не так.&lt;br /&gt;Подскажите, люди добрые, как же подцепится-то к MSSQL базе.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3047/</id>
    <title type="text">Вопросы новичка</title>
    <published>2012-09-30T16:17:11Z</published>
    <updated>2012-09-30T16:17:11Z</updated>
    <author>
      <name>nuan</name>
      <uri>https://stocksharp.ru/users/6492/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">1) Как получить количество открытых позиций по бумаге?&lt;br /&gt;2) Пытаюсь продать по рынку или купить, не выходит:&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;
(double)_lkoh.ShrinkPrice(_lkoh.GetMarketPrice(OrderDirections.Buy));&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;3) Как выставить ордер тейк профит и стоп лосс? (если можно пример)</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3046/</id>
    <title type="text">Декомпиляция</title>
    <published>2012-09-30T06:37:33Z</published>
    <updated>2012-09-30T06:37:33Z</updated>
    <author>
      <name>vk37</name>
      <uri>https://stocksharp.ru/users/6296/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">Почитал лицензию. Совсем нельзя сдекомпилировать? Помогло бы в изучении как стратегии писать правильно )</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3045/</id>
    <title type="text">Некорректное время в Эмуляторе</title>
    <published>2012-09-28T11:33:33Z</published>
    <updated>2012-09-28T11:33:33Z</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;Эмулятор формирует 10-минутные свечи и передает в стратегию. &lt;br /&gt;Суть проблемы: команда внутри стратегии this.CurrentTime.ToString(&amp;quot;yyyy.MM.dd HH:mm:ss&amp;quot;) выдает начало дня иногда нормально, а иногда на час раньше обычного. Не пойму, то ли данные битые, то ли косяк в коде&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;CurrentTime:2008.03.28 17:20:00, позиция = 0, H = 73,20000, L = 72,98000, _volume = 0&lt;br /&gt;CurrentTime:2008.03.28 17:30:02, позиция = 0, H = 73,21000, L = 72,98000, _volume = 0&lt;br /&gt;CurrentTime:2008.03.28 17:40:01, позиция = 0, H = 73,24000, L = 73,01000, _volume = 0&lt;br /&gt;CurrentTime:2008.03.31 09:29:59, позиция = 0, H = 73,89000, L = 73,10000, _volume = 0&lt;br /&gt;CurrentTime:2008.03.31 09:30:01, позиция = 0, H = 72,91000, L = 72,91000, _volume = 0&lt;br /&gt;CurrentTime:2008.03.31 09:40:00, позиция = 0, H = 72,90000, L = 72,40000, _volume = 0&lt;br /&gt;CurrentTime:2008.03.31 09:50:00, позиция = 0, H = 73,20000, L = 72,81000, _volume = 0&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3043/</id>
    <title type="text">Люди S#. Esper - Александр. Разработчик S# Studio</title>
    <published>2012-09-28T07:48:04Z</published>
    <updated>2012-09-28T07:48:04Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.ru/users/341/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Новости" />
    <content type="html">Не прошло и недели с прошлого дня &lt;a href="http://stocksharp.com/forum/3031/Liudi-S/" title="http://stocksharp.com/forum/3031/Liudi-S/"&gt;рождения&lt;/a&gt;, как у нас снова праздник [biggrin] &lt;br /&gt;&lt;br /&gt;Сегодня день рождения у  Espera - Александра, который является одним из разработчиков S# Studio, а также помощником по Гидре.&lt;br /&gt;Александр не раз получал похвалы за свои профессиональные качества от всех членов команды S#, кому доводилось с ним работать.&lt;br /&gt;К сожалению, мы с Александром живем в разных городах, а в он-лайн общении говорим о гидре, студии и библиотеке. Вот так, мог и не узнать Саша, как хорошо мы к нему относимся и высоко ценим ( но наверняка догадывался об этом [cool]  ). &lt;br /&gt;&lt;br /&gt;Нам очень приятно, что к нам присоединяются такие люди, как Саша. Говорят, что по своему окружению можно сделать вывод о себе самом. В таком случае, мы уверенны в своих силах и спокойны за своё будующее, когда с нами рядом такие люди [biggrin]</content>
  </entry>
</feed>