﻿<?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=209</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-28T07:56:54Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=community&amp;page=209" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/2567/</id>
    <title type="text">Событие изменения цены Bid / Ask</title>
    <published>2012-04-04T06:04:29Z</published>
    <updated>2012-04-04T06:04:29Z</updated>
    <author>
      <name>guest</name>
      <uri>https://stocksharp.ru/users/28427/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Прошу извинения, если вопрос глупый, но я не нашел, есть ли какое событие
которое вызывается когда изменилась цена Bid / Ask  по инструменту?
Интересует именно изменение цены, изменение количество контрактов
выставленных по наилучшим ценам не важно для меня.
Заранее спасибо!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2566/</id>
    <title type="text">Все свои сделки с начала дня</title>
    <published>2012-04-03T16:49:26Z</published>
    <updated>2012-04-03T16:49:26Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.ru/users/797/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="SmartCom" />
    <content type="html">&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Есть ли способ получить все свои сделки с начала дня (SmartCOM) ?
После запуска экспорта поле MyTrades (объекта класса SmartTrader) содержит 0 сделок.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Запустил Sample Smart - похоже что неправильно отображается время заявок и количество сделок. При этом всего сделок в SmartTrade - 3 штуки, а в приложении отображается только одна. В чем может быть проблема ?&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src="http://i43.tinypic.com/1568i02.png" alt="" /&gt; &lt;a href="http://s13.postimage.org/whrk5tiol/screen.png" rel="nofollow" target="_blank"&gt;http://s13.postimage.org/whrk5tiol/screen.png&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;S# версия 4.0.23&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2565/</id>
    <title type="text">Как BaseTrader выполняет MultiCast делегаты?</title>
    <published>2012-04-03T14:30:20Z</published>
    <updated>2012-04-03T14:30:20Z</updated>
    <author>
      <name>sergun</name>
      <uri>https://stocksharp.ru/users/6139/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Каждый из делегатов MultiCast делегата может попасть в свою нить? Или же все делегаты одного MultiCast делагата выполняются в общей нити?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2564/</id>
    <title type="text">Формат данных для Гидры</title>
    <published>2012-04-03T12:31:46Z</published>
    <updated>2012-04-03T12:31:46Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;В версии S# 4.0 формат данных был 1.XXX. В версии S# 4.1 было два формата, 2.0 и 3.0. Ниже два скрипта. Первый переводит 1.XXX в 2.0. Второй переводит из 2.0 в 3.0. Кто использует Гидру 4.0, нужно использовать оба скрипта, и прогнать их друг за другом. Кто уже использовал 4.1, то прогнать только второй. Пути, естественно, заменить в коде.&lt;/p&gt;
&lt;p&gt;Конвертация в формат 2.0:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;foreach (var secDir in Directory.EnumerateDirectories(@&amp;quot;d:\SS\D\HydraRi3&amp;quot;))
{
	if (Directory.EnumerateFiles(secDir).Any())
		continue;
				
	var dateDirs = Directory.GetDirectories(secDir);

	var prefixes = new[] { &amp;quot;trades&amp;quot;, &amp;quot;quotes&amp;quot; };
	foreach (var prefix in prefixes)
	{
				
		var metaInfo = new Dictionary&amp;lt;DateTime, IDictionary&amp;lt;string, object&amp;gt;&amp;gt;();



		foreach (var dir in dateDirs)
		{
			var date = Path.GetFileName(dir).ToDateTime(&amp;quot;yyyy_MM_dd&amp;quot;);

			var files = Directory.GetFiles(dir);


			var meta = files.FirstOrDefault(f =&amp;gt; Path.GetFileName(f) == prefix+&amp;quot;.xml&amp;quot;);
			var data = files.FirstOrDefault(f =&amp;gt; Path.GetFileName(f) == prefix+&amp;quot;.bin&amp;quot;);
			if (null != meta)
			{
				CultureInfo.InvariantCulture.DoInCulture(() =&amp;gt; metaInfo.Add(date, new XmlSerializer&amp;lt;IDictionary&amp;lt;string, object&amp;gt;&amp;gt;().Deserialize(meta)));

				File.Move(data, Path.Combine(secDir, prefix + &amp;quot;_&amp;quot; + Path.GetFileName(dir) + &amp;quot;.bin&amp;quot;));
			}
		}
		CultureInfo.InvariantCulture.DoInCulture(() =&amp;gt; new XmlSerializer&amp;lt;IDictionary&amp;lt;DateTime, IDictionary&amp;lt;string, object&amp;gt;&amp;gt;&amp;gt;().Serialize(metaInfo, Path.Combine(secDir, prefix+&amp;quot;.xml&amp;quot;)));
	}

	foreach (var dir in dateDirs)
	{
		Directory.Delete(dir, true);
	}

	Console.WriteLine(Path.GetFileName(secDir));
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Конвертация в формат 3.0:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;var input = @&amp;quot;d:\SS\D\HydraRi3&amp;quot;;
var output = @&amp;quot;d:\SS\D\HydraRi5.1&amp;quot;;

foreach (var secDir in Directory.EnumerateDirectories(input))
{
	var prefixes = new[] { &amp;quot;quotes&amp;quot;, &amp;quot;trades&amp;quot;, &amp;quot;orderLog&amp;quot; };
	var secId = Path.GetFileName(secDir);
	Directory.CreateDirectory(Path.Combine(output,secId));
	foreach (var prefix in prefixes)
	{
		var metafile = secDir + &amp;quot;\\&amp;quot; + prefix + &amp;quot;.xml&amp;quot;;
		if (File.Exists(metafile))
		{
			IDictionary&amp;lt;DateTime, IDictionary&amp;lt;string, object&amp;gt;&amp;gt; data=null; 
			CultureInfo.InvariantCulture.DoInCulture(() =&amp;gt; data = new XmlSerializer&amp;lt;IDictionary&amp;lt;DateTime, IDictionary&amp;lt;string, object&amp;gt;&amp;gt;&amp;gt;().Deserialize(metafile));
			//Directory.EnumerateFiles(secDir);
			foreach (var date in data.Keys)
			{
				var fileName = &amp;quot;{0}_{1}.bin&amp;quot;.Put(prefix, date.ToString(&amp;quot;yyyy_MM_dd&amp;quot;));
				fileName = Path.Combine(secDir,fileName);
				if (File.Exists(fileName))
				{
					var outSecDir = Path.Combine(output, secId, date.ToString(&amp;quot;yyyy_MM_dd&amp;quot;));
					Directory.CreateDirectory(outSecDir);

					var outFile = Path.Combine(outSecDir, prefix + &amp;quot;.bin&amp;quot;);
					using (var s = new FileStream(outFile, FileMode.Create, FileAccess.Write))
					{
						var dict = data[date];

						s.WriteByte(3); s.WriteByte(0);
						s.Write((int)dict[&amp;quot;count&amp;quot;]);
						s.Write((decimal)dict[&amp;quot;minStepSize&amp;quot;]);
						s.Write((decimal)0);
						s.Write(new DateTime(dict[&amp;quot;firstTime&amp;quot;].To&amp;lt;long&amp;gt;()));
						s.Write(new DateTime(dict[&amp;quot;prevTime&amp;quot;].To&amp;lt;long&amp;gt;()));

						if (prefix.Equals(&amp;quot;trades&amp;quot;))
						{
							s.Write((long)dict[&amp;quot;firstId&amp;quot;]);
							s.Write((long)dict[&amp;quot;prevId&amp;quot;]);
							s.Write((decimal)dict[&amp;quot;firstPrice&amp;quot;]);
							s.Write((decimal)dict[&amp;quot;prevPrice&amp;quot;]); 
						}
						else if (prefix.Equals(&amp;quot;quotes&amp;quot;))
						{
							s.Write((decimal)dict[&amp;quot;firstPrice&amp;quot;]);
							s.Write((decimal)dict[&amp;quot;prevPrice&amp;quot;]); 									
						}
						else if (prefix.Equals(&amp;quot;orderLog&amp;quot;))
						{
							s.Write((long)dict[&amp;quot;firstOrderId&amp;quot;]);
							s.Write((long)dict[&amp;quot;firstTradeId&amp;quot;]);
							s.Write((long)dict[&amp;quot;prevOrderId&amp;quot;]);
							s.Write((long)dict[&amp;quot;prevTradeId&amp;quot;]);
							s.Write((decimal)dict[&amp;quot;firstPrice&amp;quot;]);
							s.Write((decimal)dict[&amp;quot;prevPrice&amp;quot;]);
						}

						s.WriteRaw(File.ReadAllBytes(fileName));
					}
				}
			}
		}
	}
}
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2563/</id>
    <title type="text">Какой теперь формат у файлов гидры?</title>
    <published>2012-04-03T11:34:55Z</published>
    <updated>2012-04-03T11:34:55Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;Был S# 4.1 - 15891&lt;/p&gt;
&lt;p&gt;Данные для 4.1 конвертировал из 4.0 с помощью &lt;a href="http://stocksharp.com/posts/m/17173/"&gt;этого&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Обновился до 4.1 - 15979. Формат данных &lt;a href="http://stocksharp.codeplex.com/SourceControl/changeset/changes/15979" rel="nofollow" target="_blank"&gt;поменялся&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Чем теперь конвертировать? И из какого формата? Из 4.0 или из старого 4.1?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2562/</id>
    <title type="text">подключение с помощью OEC коннектора к демо доступу</title>
    <published>2012-04-03T10:39:43Z</published>
    <updated>2012-04-03T10:39:43Z</updated>
    <author>
      <name>fish</name>
      <uri>https://stocksharp.ru/users/241/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="OpenECry" />
    <content type="html">&lt;p&gt;Попробовал подключиться с данными для демо доступа к api.openecry.com:9200
Видно для демо доступа другой адрес. Есть у кого нить эти данные, а то в
тех. поддержки OEC меня так и не поняли.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2561/</id>
    <title type="text">не все заявки в QuikTrader.Orders в последней версии 23</title>
    <published>2012-04-03T08:49:19Z</published>
    <updated>2012-04-03T08:49:19Z</updated>
    <author>
      <name>Mitz</name>
      <uri>https://stocksharp.ru/users/27752/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;решил обновиться до новой версии, в Квике висит открытая лимита , в коллекции заявок её нету.
откатился назад до декабрьской 16ой, всё гуд&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2560/</id>
    <title type="text">Синхронизация времени с биржей</title>
    <published>2012-04-03T06:44:43Z</published>
    <updated>2012-04-03T06:44:43Z</updated>
    <author>
      <name>PavelAd</name>
      <uri>https://stocksharp.ru/users/6072/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Есть такой код по синхронизации времени:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
Trader = new QuikTrader(Path.Text);
this.GuiAsync(() =&amp;gt; Trader.SyncMarketTime(Exchange.Rts));

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;После выполнения этого кода, если сравнить время Trader.MarketTime и время в терминале Quik, то видно что разница составляет примерно 23 секунды.
Пробовал вторую строку заменить на такую:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;this.GuiAsync(() =&amp;gt; Trader.SyncMarketTime(Exchange.Micex));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Так же время отличается.&lt;/p&gt;
&lt;p&gt;Уточнял у брокера, сказали что время у них на сервер одинаковое с биржей.&lt;/p&gt;
&lt;p&gt;Подскажите почему не верно синхронизируется время?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2559/</id>
    <title type="text">Requested Clipboard operation did not succeed</title>
    <published>2012-04-03T03:59:50Z</published>
    <updated>2012-04-03T03:59:50Z</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;p&gt;Вылетает при запуске гидры на слабых машинах под win2k3.. жалуется на:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;Securities.ForEach(_trader.Trader.RegisterQuotes)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Можно как-то вылечить?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2558/</id>
    <title type="text">Получение не всех сделок из quik</title>
    <published>2012-04-03T03:46:41Z</published>
    <updated>2012-04-03T03:46:41Z</updated>
    <author>
      <name>PavelAd</name>
      <uri>https://stocksharp.ru/users/6072/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Как из quik получить не все последние сделки, а сделки:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;за последние N секунд(минут)&lt;/li&gt;
&lt;li&gt;N последних сделок.
это возможно?&lt;/li&gt;
&lt;/ol&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2557/</id>
    <title type="text">последняя dev-версия, ошибка</title>
    <published>2012-04-02T18:40:47Z</published>
    <updated>2012-04-02T18:40:47Z</updated>
    <author>
      <name>Daenur</name>
      <uri>https://stocksharp.ru/users/28118/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;В TradesWindow.xaml.cs возникает ошибка. Подробнее на скриншоте:&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2554/</id>
    <title type="text">v4.0.23 RIM2 MinStepPrice</title>
    <published>2012-04-02T10:42:01Z</published>
    <updated>2012-04-02T10:42:01Z</updated>
    <author>
      <name>tmt</name>
      <uri>https://stocksharp.ru/users/6032/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;MinStepPrice не правильно показывает значения, у RIM2 ~ 2.94, а Security.MinStepPrice = 1 (у других инструментов не проверял)&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2553/</id>
    <title type="text">Утечки памяти при тестировании на исторических данных</title>
    <published>2012-04-02T09:41:15Z</published>
    <updated>2012-04-02T09:41:15Z</updated>
    <author>
      <name>zorran</name>
      <uri>https://stocksharp.ru/users/28229/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Обнаружил утечки памяти при тестировании на исторических данных, при многократном повторении.
Сначал грешил на свою стратегию, потом попробовал запускать пример SampleHistoryTesting многократно,
При достижении 30-40 повторений программа подвисала, не выдавая никаких сообщений.&lt;/p&gt;
&lt;p&gt;Далее, для чистоты эксперимента подправил код SampleHistoryTesting:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;		private void StartBtn_Click( object sender, RoutedEventArgs e ) {
				
			for( int i = 1; i &amp;lt; 1000; i++ ) {
				Run();

				if( _trader.State != EmulationStates.Started ) { Thread.Sleep( 10 );  }
				if( _trader.State != EmulationStates.Stopped ) { Thread.Sleep( 10 ); }
			}

			MessageBox.Show( &amp;quot;Закончено&amp;quot; );
		}
		
		
		private void Run()
		{
		
		// Ну а тут сам код стратегии, что был раньше в StartBtn_Click 
		
		...
		
		// изменил только период, для более быстрого тестирования
			var startTime = new DateTime(2009, 6, 1);
			var stopTime = new DateTime(2009, 6, 3);
		
		....
		
		}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;После запуска данный код через некоторое время выдает Out of memory эксепшн.		
(Пробовал, как с включенным выводом инфы в форму, так и выключеным)&lt;/p&gt;
&lt;p&gt;на 100 итерациях уже все нормально проходит.&lt;/p&gt;
&lt;p&gt;Памяти достаточно - 4 гб озу&lt;/p&gt;
&lt;h2 id="section"&gt;Текст исключения:&lt;/h2&gt;
&lt;p&gt;System.OutOfMemoryException: Выдано исключение типа &amp;quot;System.OutOfMemoryException&amp;quot;.&lt;/p&gt;
&lt;p&gt;в System.Linq.Buffer&lt;code&gt;1.ToArray() в System.Linq.Enumerable.ToArray[TSource](IEnumerable&lt;/code&gt;1 source)
в Ecng.Common.RandomArray&lt;code&gt;1..ctor(T min, T max, Int32 count) в StockSharp.Algo.Testing.MarketDataGenerator&lt;/code&gt;1.Init()
в StockSharp.Algo.Testing.TrendMarketDepthGenerator.Init()
в StockSharp.Algo.Testing.EmulationTrader.Start(DateTime startDate, DateTime stopDate)
в SampleHistoryTesting.MainWindow.Run() в C:\Projects\VS\OrigSampleHistoryTesting\MainWindow.xaml.cs:строка 219
в SampleHistoryTesting.MainWindow.StartBtn_Click(Object sender, RoutedEventArgs e) в C:\Projects\VS\OrigSampleHistoryTesting\MainWindow.xaml.cs:строка 63
в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
в System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
в System.Windows.Controls.Primitives.ButtonBase.OnClick()
в System.Windows.Controls.Button.OnClick()
в System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(MouseButtonEventArgs e)
в System.Windows.UIElement.OnMouseLeftButtonUpThunk(Object sender, MouseButtonEventArgs e)
в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)
в System.Windows.UIElement.OnMouseUpThunk(Object sender, MouseButtonEventArgs e)
в System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
в System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
в System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
в System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
в System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
в System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
в System.Windows.UIElement.RaiseEvent(RoutedEventArgs args, Boolean trusted)
в System.Windows.Input.InputManager.ProcessStagingArea()
в System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
в System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
в System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
в System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean&amp;amp; handled)
в System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp;amp; handled)
в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp;amp; handled)
в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2552/</id>
    <title type="text">Создание своей StrategyRule в новых версиях</title>
    <published>2012-04-02T04:50:10Z</published>
    <updated>2012-04-02T04:50:10Z</updated>
    <author>
      <name>Supervisor</name>
      <uri>https://stocksharp.ru/users/27975/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Проблема появилась насколько помню после версии 4.0.21.&lt;/p&gt;
&lt;p&gt;Нужно создать правило стратегии которое не принимает никаких аргументов - всегда делал это как написано в хелпе:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
  private sealed class NewMyTradesStrategyRule : StrategyRule
  {
    ...
  }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Но после вышеуказанной версии данный код не работает с ошибкой:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Incorrect number of type parameters in reference to class 'StockSharp.Algo.Strategies.StrategyRule&amp;lt;TArg&amp;gt;'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Прошу прощения конечно за лоховство, тут наверное вопрос в знании С#, но пишу так как есть ошибочный пример в справке :)&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2548/</id>
    <title type="text">Finam: не загружаются тики по склееному фьючерсу RTS (SPFB.RTS@RTS)</title>
    <published>2012-04-01T06:03:10Z</published>
    <updated>2012-04-01T06:03:10Z</updated>
    <author>
      <name>Marcopolo</name>
      <uri>https://stocksharp.ru/users/6457/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;Перестали загружаться тики по склеенному фьючерсу RTS с Финама:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;
Finam 11:36:41.2794157 Старт с 06.03.2012 для SPFB.RTS@RTS.
Finam 11:39:41.3397145 System.Net.WebException: Время ожидания операции истекло
   в System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest&amp;amp; request)
   в System.Net.WebClient.DownloadString(Uri address)
   в StockSharp.Algo.History.Finam.FinamHistorySource.#=qScP2Jc5w3eE90Y3dMpNLtw==(Uri #=qZSDCjTj6KYNNBniIIdPPPQ==, String #=qHmykUNvDW$qFhELcRzT0Ng==)
   в StockSharp.Algo.History.Finam.FinamHistorySource.#=qn1OPeZc93j2GhsdQKUey_6Ehp2xoxSdxs$IDWvwRkq0=.#=qOA1sEbu9QMIYlXz6sSXkbeVCmXbX87YQ7_rOo2GmXVE=()
   в StockSharp.Algo.History.Finam.FinamHistorySource.#=qHbifJmfBUsQDj7cUJ1Q4LQ==[T](String #=qHgafCQS_YPdZsvZe9MyC5w==, Func`1 #=qLVCqCWlkOQwpBKQB0NxVFw==, Func`2 #=qiCxwInTpjqGgLS8ZVOzDGw==)
   в StockSharp.Algo.History.Finam.FinamHistorySource.GetTrades(Security security, DateTime time)
   в StockSharp.Hydra.Finam.FinamSource.Load() в F:\Sources\StockSharpReleases\StockSharp_4.0.23\Hydra\Plugins\Finam\FinamSource.cs:строка 151
   в StockSharp.Hydra.Worker.&amp;lt;&amp;gt;c__DisplayClass13.&amp;lt;Download&amp;gt;b__10(IMarketDataSource source) в F:\Sources\StockSharpReleases\StockSharp_4.0.23\Hydra\Hydra\Worker.cs:строка 187

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;По другим склеенным фьючерсам данные загружаются:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;
Finam 11:43:48.3688438 Старт с 06.03.2012 для SPFB.SBRF@RTS.
Для SPFB.SBRF@RTS загружено 97232 сделок.
Finam 11:44:18.3735600 Дата 30.03.2012 вне диапазона для SPFB.GAZR@RTS.
Finam 11:44:18.3735600 Старт с 07.03.2012 для SPFB.SBRF@RTS.
Для SPFB.SBRF@RTS загружено 77533 сделок.

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hydra 4.0.23&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2545/</id>
    <title type="text">Ошибка System.Net.WebException: Требуется проверка подлинности посредника</title>
    <published>2012-03-30T02:50:34Z</published>
    <updated>2012-03-30T02:50:34Z</updated>
    <author>
      <name>PavelAd</name>
      <uri>https://stocksharp.ru/users/6072/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;p&gt;Не обновляется список инструментов в Гидре.
Нажимаю на &amp;quot;Инструменты&amp;quot;, выбираю &amp;quot;Finam&amp;quot; нажимаю обновить, возникает ошибка:
&amp;quot;System.Net.WebException: Удаленный сервер возвратил ошибку (407). Требуется проверка подлинности посредника&amp;quot;&lt;/p&gt;
&lt;p&gt;При этом закачка данных с РТС при нажатии на &amp;quot;Старт&amp;quot; в начальном окне осуществляется, значит подключиться к интернету получается.
Выход в инет через прокси MS ISA.
Почему так происходит? Как решить проблему?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2544/</id>
    <title type="text">Событийная модель</title>
    <published>2012-03-29T19:35:59Z</published>
    <updated>2012-03-29T19:35:59Z</updated>
    <author>
      <name>Wetal</name>
      <uri>https://stocksharp.ru/users/28266/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Коллеги, прошу помощи!
Есть много условий на выставление и изменение(перерегистрация)заявок. Все работает но в один момент заявка почему-то не выставляется. Понял что скорость анализа данных и выполнения условий мала.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
private void button1_Click(object sender, RoutedEventArgs e)
        {
            bool flag=false;
            Globals.Trader.QuotesChanged += depth =&amp;gt;
            {
                List&amp;lt;MarketDepthPair&amp;gt; t = Globals.Trader.GetMarketDepth(security).GetTopPairs(1).ToList();
                foreach (MarketDepthPair t1 in t)
                {
                    decimal spread = t1.Ask.Price - t1.Bid.Price;
                    if (условие 1)
                    {
                        if (  flag==false)
                        {
                            Dispatcher.BeginInvoke(new Action(() =&amp;gt;
                            {
                                
                                order_buy = new Order
                                 {
                                     Portfolio = Portfolio,
                                     Price = ...,
                                     Security = security,
                                     Volume = 1,
                                     Direction = OrderDirections.Buy,
                                 };
                                Globals.Trader.RegisterOrder(order_buy);
                                order_sell = new Order
                                {
                                    Portfolio = Portfolio,
                                    Price = ...,
                                    Security = security,
                                    Volume = 1,
                                    Direction = OrderDirections.Sell,
                                };
                                Globals.Trader.RegisterOrder(order_sell);
                            }));
                            flag = true; 
                        }
                        else if(order_buy.State == OrderStates.Done &amp;amp;&amp;amp; order_sell.State==OrderStates.Active) 
                        {
                            if (условие)
                            {
                                Dispatcher.BeginInvoke(new Action(() =&amp;gt;
                                {
                                    Globals.Trader.CancelOrder(order_sell);
                                    
                                    order_sell = new Order
                                    {
                                        Portfolio = Portfolio,
                                        Price = ....,
                                        Security = security,
                                        Volume = 1,
                                        Direction = OrderDirections.Sell,
                                    };
                                    Globals.Trader.RegisterOrder(order_sell);
                                }));
                            }
                            flag = true;
                        }
                        
                        else if (order_sell.State == OrderStates.Done &amp;amp;&amp;amp; order_buy.State == OrderStates.Active)
                        {
                            if (условие)
                            {
                                Dispatcher.BeginInvoke(new Action(() =&amp;gt;
                                {
                                    Globals.Trader.CancelOrder(order_buy);
                                    order_buy = new Order
                                    {
                                        Portfolio = Portfolio,
                                        Price = ....,
                                        Security = security,
                                        Volume = 1,
                                        Direction = OrderDirections.Buy,
                                    };
                                    Globals.Trader.RegisterOrder(order_buy);
                                }));
                                flag = true;
                            }
                        }
                        else if (order_sell.State == OrderStates.Done &amp;amp;&amp;amp; order_buy.State == OrderStates.Done)
                        {
                         
                            flag = false;
                        }
                        
                    }
                }
                
            };
            
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Понимаю, что if else - очень замедляет switch не подойдет, анализирую несколько переменных. Думаю создать события на каждое из условий. Может есть уже какие нибудь стандартизированные методы решения такой задачи?&lt;/p&gt;
&lt;p&gt;Заранее благодарю!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2543/</id>
    <title type="text">SmartCOM и исторические данные</title>
    <published>2012-03-29T14:37:41Z</published>
    <updated>2012-03-29T14:37:41Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.ru/users/797/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="SmartCom" />
    <content type="html">&lt;p&gt;Насколько корректные приходят исторические данные через SmartCOM ?
Пытаюсь получить свечки за предыдущие дни, приходят данные не соответствующие данным в терминале.
На форуме есть темы, что получать историю через SmartCOM - лучше не стоит. Так ли это ?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2542/</id>
    <title type="text">SampleCandles 4.1 ошибка NullReferenceException</title>
    <published>2012-03-29T11:25:58Z</published>
    <updated>2012-03-29T11:25:58Z</updated>
    <author>
      <name>Moadip</name>
      <uri>https://stocksharp.ru/users/5973/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Версия 15891
Запускаю SampleCandles&lt;/p&gt;
&lt;p&gt;&lt;img src="http://i29.fastpic.ru/big/2012/0329/58/f8231c9beb780369dfdb7c211565ca58.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Нажимаю на кнопку график, окно которое отрисовывает график подвисает и через некоторое время вываливается ошибка.&lt;/p&gt;
&lt;p&gt;StackTrace&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
   в AmCharts.Windows.Stock.Data.DataSet.ProcessDataBoundItems()
   в AmCharts.Windows.Stock.Data.DataSet.ProcessItems()
   в AmCharts.Windows.Stock.Data.DataSet.get_AggregateData()
   в AmCharts.Windows.Stock.Graph.get_ActiveDataSet()
   в AmCharts.Windows.Stock.Graph.SetVisibleDataItems()
   в AmCharts.Windows.Stock.Graph.get_VisibleDataItems()
   в AmCharts.Windows.Stock.Graph.GetMinimumValue(DateTime fromDate, DateTime toDate)
   в AmCharts.Windows.Stock.Primitives.ValueAxis.SetLinearMinMax(DateTime fromDate, DateTime toDate, Int32 grid_count)
   в AmCharts.Windows.Stock.Primitives.ValueAxis.SetMinMax(DateTime fromDate, DateTime toDate, Int32 grid_count)
   в AmCharts.Windows.Stock.Chart.RecalculateValueAxes()
   в AmCharts.Windows.Stock.Chart.AdjustParts()
   в AmCharts.Windows.Stock.Chart.MeasureOverride(Size constraint)
   в System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   в System.Windows.UIElement.Measure(Size availableSize)
   в System.Windows.ContextLayoutManager.UpdateLayout()
   в System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
   в System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
   в System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   в System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
   в System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
   в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   в System.Windows.Threading.DispatcherOperation.InvokeImpl()
   в System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
   в System.Threading.ExecutionContext.runTryCode(Object userData)
   в System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
   в System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Windows.Threading.DispatcherOperation.Invoke()
   в System.Windows.Threading.Dispatcher.ProcessQueue()
   в System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp;amp; handled)
   в MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean&amp;amp; handled)
   в MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
   в System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   в MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   в MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG&amp;amp; msg)
   в System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   в System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
   в System.Windows.Threading.Dispatcher.Run()
   в System.Windows.Application.RunDispatcher(Object ignore)
   в System.Windows.Application.RunInternal(Window window)
   в System.Windows.Application.Run(Window window)
   в System.Windows.Application.Run()
   в SampleCandles.App.Main() в d:\StockSharp 4.1\Project\SampleCandles\obj\Debug\App.g.cs:строка 0
   в System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
   в System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
   в Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
   в System.Threading.ThreadHelper.ThreadStart_Context(Object state)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
   в System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   в System.Threading.ThreadHelper.ThreadStart()

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/2541/</id>
    <title type="text">Не приходят данные в CandleManager</title>
    <published>2012-03-28T18:57:44Z</published>
    <updated>2012-03-28T18:57:44Z</updated>
    <author>
      <name>Mirovan</name>
      <uri>https://stocksharp.ru/users/797/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="SmartCom" />
    <content type="html">&lt;p&gt;Доброго дня!&lt;/p&gt;
&lt;p&gt;Пытаюсь получить Real Time данные через SmartCom. S# версия 4.0.22
Однако не происходят события на получение/изменение свечей.
Подскажи, где у меня ошибка ?&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Threading;

using Ecng.Collections;
using Ecng.Common;
using Ecng.ComponentModel;
using Ecng.Xaml;

using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Logging;
using StockSharp.Algo.Strategies;
using StockSharp.BusinessEntities;
using StockSharp.Smart;
using StockSharp.Xaml;

namespace SimpleRobot
{
    /// &amp;lt;summary&amp;gt;
    /// Логика взаимодействия для MainWindow.xaml
    /// &amp;lt;/summary&amp;gt;
    public partial class MainWindow : Window
    {
        
        private string _login = &amp;quot;&amp;quot;;
        private string _password = &amp;quot;&amp;quot;;
        private string _account = &amp;quot;&amp;quot;;
        private string _ipAddress = &amp;quot;95.131.26.246&amp;quot;;
        private string secCode = &amp;quot;RIM2&amp;quot;;

        private readonly TimeSpan _timeFrame = (TimeSpan)SmartTimeFrames.Minute15;  //Таймфрейм
        private static Portfolio _portfolio;    //Портфель
        private Security _sec;                  //Эмитент - Акция/Фьючерс/Опцион

        private SmartTrader _trader;            //Шлюз для SmartCOM
        private Logger _logger;                 //Логгер событий
        private CandleManager _candleManager;   //Менеджер свечей

        private bool _isConnected = false;              //Подключены ли
        private bool _isStartRecivePorfolio = false;    //Начилась ли загрузка портфелей
        private bool _isStartReciveSecurity = false;    //Начилась ли загрузка эмитентов

        private CandleToken token;


        public MainWindow()
        {
            InitializeComponent();
        }


        //Инициализация робота
        private void button1_Click(object sender, RoutedEventArgs e)
        {

            //Логгер
            _logger = new Logger(textBox1);

            //Ip address
            System.Net.IPAddress addr = System.Net.IPAddress.Parse(_ipAddress);
            System.Net.IPEndPoint server = new System.Net.IPEndPoint(addr, 8090);

            //Create Smart Trade шлюз
            _trader = new SmartTrader(_login, _password, server);

            //Подписываемся на все необходимые события
            _trader.Connected += Trader_Connected;
            _trader.Disconnected += Trader_Disconnected;
            _trader.NewHistoryCandles += Trader_GetHistoryCandles;
            _trader.ReConnectionSettings.ConnectionRestored += Trader_ConnectionRestored;
            _trader.ConnectionError += Trader_ConnectionError;
            _trader.NewPortfolios += Trader_NewPortfolios;
            _trader.NewSecurities += Trader_NewSecurities;

            // инициализируем механизм переподключения (будет автоматически соединяться
            // каждые 10 секунд, если шлюз потеряется связь с сервером)
            _trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
            _trader.ReConnectionSettings.WorkingTime = Exchange.Rts.WorkingTime;

            _logger.Write(&amp;quot;Инициализия программы&amp;quot;);
        }


        //Соединение и передача данных
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            //Устанавливаем соединение
            _trader.Connect();
        }



        //Запуск робота
        private void button3_Click(object sender, RoutedEventArgs e)
        {
            //Создаем менеджер свечей и подписываемся на события
            _candleManager = new CandleManager(_trader);
            _candleManager.CandlesStarted += CandleManager_GetCandles;
            _candleManager.CandlesChanged += CandleManager_GetCandles;
            _candleManager.CandlesFinished += CandleManager_GetCandles;

            //Устанавливаени таймфрейм для менеджер свечей
            TimeSpan currentTimeFrame = TimeSpan.FromSeconds(60);
            token = _candleManager.RegisterTimeFrameCandles(_sec, currentTimeFrame);
            //token = _candleManager.RegisterTimeFrameCandles(_sec, 1000);
            
            /*
            var candles = _candleManager.GetTimeFrameCandles(_sec, _timeFrame);

            foreach (Candle candle in candles)
            {
                //Выводим свечи в формате OHLC
                _logger.Write(candle.Time.ToString() + &amp;quot; &amp;quot; + candle.OpenPrice + &amp;quot; &amp;quot; + candle.HighPrice + &amp;quot; &amp;quot; + candle.LowPrice + &amp;quot; &amp;quot; + candle.ClosePrice + &amp;quot; &amp;quot; + candle.CloseVolume);
            }
            */
        }




        private void Trader_Connected()
        {
            this.GuiAsync(() =&amp;gt;
            {
                _isConnected = true;
                _logger.Write(&amp;quot;Успешно подключены&amp;quot;);

                //Начинаем Экспорт данных
                _trader.StartExport();
            });
        }


        private void Trader_Disconnected()
        {
            this.GuiAsync(() =&amp;gt;
            {
                if (_isConnected)
                {
                    _isConnected = false;
                    _trader.Disconnect();
                    _logger.Write(&amp;quot;Отключены&amp;quot;);
                }
            });
        }


        private void Trader_GetHistoryCandles(CandleToken token, IEnumerable&amp;lt;TimeFrameCandle&amp;gt; candles)
        {
            this.GuiAsync(() =&amp;gt;
            {
                _logger.Write(&amp;quot;Принимаю исторические данные&amp;quot;);
                //_candlesStarted.SafeInvoke(token, candles);
                //_candlesFinished.SafeInvoke(token, candles);
            });
        }


        private void Trader_ConnectionRestored()
        {
            this.GuiAsync(() =&amp;gt;
            {
                _logger.Write(&amp;quot;Соединение восстановлено&amp;quot;);
            });
        }


        private void Trader_ConnectionError(Exception e)
        {
            this.GuiAsync(() =&amp;gt;
            {
                _logger.Write(&amp;quot;ОШИБКА: Ошибка соединения&amp;quot; + e.Message + &amp;quot; [&amp;quot; + e.ToString() + &amp;quot;]&amp;quot;);
            });
        }

        
        private void Trader_NewPortfolios(IEnumerable&amp;lt;Portfolio&amp;gt; portfolios)
        {
            this.GuiAsync(() =&amp;gt;
            {
                if (_isConnected)
                {
                    if (!_isStartRecivePorfolio)
                    {
                        _logger.Write(&amp;quot;Получение портфелей...&amp;quot;);
                        _isStartRecivePorfolio = true;
                    }


                    // необходимое условие работы в SmartCOM
                    int pCount = 0;
                    foreach (Portfolio p in portfolios)
                    {
                        pCount++;
                        _trader.RegisterPortfolio(p);
                        _logger.Write(&amp;quot;Инициализация портфеля &amp;quot; + p.ToString());
                    }

                    if (pCount == 0)
                    {
                        _logger.Write(&amp;quot;Портфели не найдены&amp;quot;);
                    }
                    else
                    {
                        // находим нужный портфель и присваиваем его переменной _portfolio
                        _portfolio = portfolios.FirstOrDefault(p =&amp;gt; p.Name == _account);

                        if (_portfolio != null)
                        {
                            _logger.Write(&amp;quot;Портфель &amp;quot; + _account + &amp;quot; появился&amp;quot;);
                        }
                    }
                }
            });
        }



        private void Trader_NewSecurities(IEnumerable&amp;lt;Security&amp;gt; securities)
        {
            this.GuiAsync(() =&amp;gt;
            {
                if (_isConnected)
                {
                    if (!_isStartReciveSecurity)
                    {
                        _logger.Write(&amp;quot;Получение инструментов...&amp;quot;);
                        _isStartReciveSecurity = true;
                    }


                    if (_isConnected)
                    {
                        var sec = securities.FirstOrDefault(s =&amp;gt; s.Code == secCode &amp;amp;&amp;amp; s.Type == SecurityTypes.Future);
                        if (sec != null)
                        {
                            _logger.Write(&amp;quot;Инструмент &amp;quot; + secCode + &amp;quot; успешно найден&amp;quot;);

                            _sec = sec;
                        }
                    }
                }
            });
        }



        private void CandleManager_GetCandles(CandleToken token, IEnumerable&amp;lt;Candle&amp;gt; candles)
        {
            this.GuiAsync(() =&amp;gt;
            {
                foreach (Candle candle in candles)
                {
                    //Выводим свечи в формате OHLC
                    _logger.Write(candle.Time.ToString() + &amp;quot; &amp;quot; + candle.OpenPrice + &amp;quot; &amp;quot; + candle.HighPrice + &amp;quot; &amp;quot; + candle.LowPrice + &amp;quot; &amp;quot; + candle.ClosePrice + &amp;quot; &amp;quot; + candle.CloseVolume);
                }
            });
        }



    }
}


&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
</feed>