﻿<?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">Урок 2. Потоковые данные (сделки, котировки). Шаблон для универсального (безопасного) подключения.</title>
  <id>~/topic/3599/urok-2_-potokovye-dannye-(sdelki-kotirovki)_-shablon-dlya-universalnogo-(bezopasnogo)-podklyucheniya_/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-04T21:08:02Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=3599" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/29967/</id>
    <title type="text"> http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/ Михаил, не понял в чем п...</title>
    <published>2014-03-12T08:47:59Z</published>
    <updated>2016-08-16T00:17:09Z</updated>
    <author>
      <name>Sid</name>
      <uri>https://stocksharp.ru/users/39431/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Михаил Сухов &lt;a href="https://stocksharp.ru/posts/m/29966/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Vadimka &lt;a href="https://stocksharp.ru/posts/m/29964/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/" title="http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/"&gt;http://stocksharp.com/fo...v-sots-siet--Vkontaktie/&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Михаил, не понял в чем посыл? В Контакт я уже тоже &amp;quot;переехал&amp;quot;.&lt;br /&gt;&lt;br /&gt;1. В Контакте есть обсуждени уроков ?&lt;br /&gt;2. Или в Контакте есть последняя исправленеая версия примера ?&lt;br /&gt;3. Или мне нужно сделать отдельный пост здесь на форуме в разделе обучения ?&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/29966/</id>
    <title type="text"> http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/</title>
    <published>2014-03-12T05:42:20Z</published>
    <updated>2016-08-16T00:17:09Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Vadimka &lt;a href="https://stocksharp.ru/posts/m/29964/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/" title="http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/"&gt;http://stocksharp.com/fo...v-sots-siet--Vkontaktie/&lt;/a&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/29095/</id>
    <title type="text">Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить корректно значение...</title>
    <published>2014-01-16T14:34:35Z</published>
    <updated>2016-08-16T00:16:25Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.ru/users/26984/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;FireSpirit &lt;a href="https://stocksharp.ru/posts/m/29070/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить корректно значение Latency, показывающую. любая переменная, принимающая значение задержки обновления стакана, например (var ltn = marketdepth.Latency) равна нулю. В чем ошибка???&lt;br /&gt;Другие задания данного урока сделал без проблем, а с этим стопорюсь. Спасибо за ранее.&lt;br /&gt;P.S. уважаемый администратор форума, если я не туда написал, то прошу сильно не пинать. &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Все вопросы по урокам обсуждаются в соответствующем разделе&lt;br /&gt;stocksharp.com/forum/tags/Обучение/&lt;br /&gt;&lt;br /&gt;В Вашем случае надо убедиться что стакан приходит. Если используете Quik, то закройте в терминале Quik  соответствующий стакан (или все стаканы) и повторите запуск Вашей программы.&lt;br /&gt;Проверьте, что стакан приходит, через точку останова.&lt;br /&gt;Через оригинальный проект урока значение Latency удается получить?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/28460/</id>
    <title type="text">Подскажите пожалуйста, а где взять исходники от уроков? Исходники находятся на сервере, подробнее оп...</title>
    <published>2013-11-27T17:31:19Z</published>
    <updated>2016-08-16T00:15:43Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.ru/users/26984/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Николай &lt;a href="https://stocksharp.ru/posts/m/28459/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Подскажите пожалуйста, а где взять исходники от уроков?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Исходники находятся на сервере, подробнее описано в следующем посте: &lt;a href="http://stocksharp.com/forum/313/Khranilishchie-stratieghii/
" title="http://stocksharp.com/forum/313/Khranilishchie-stratieghii/
"&gt;http://stocksharp.com/fo...nilishchie-stratieghii/
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/34056/</id>
    <title type="text">Введенеие Хочется сделать обертку для коннектора по типу урока 2. Часть 1. Создание обертки коннекто...</title>
    <published>2015-12-09T17:20:06Z</published>
    <updated>2015-12-09T17:20:06Z</updated>
    <author>
      <name>titan</name>
      <uri>https://stocksharp.ru/users/62065/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Введенеие Хочется сделать обертку для коннектора по типу урока 2. Часть 1. Создание обертки коннекторов (https://vk.com/stocksharpedu?z=video-66650972_167470507%2Feb956e23a603a4440c), чтобы было все по-взрослому)))&lt;br /&gt;По простому(т.е. без использования класса SafeConnection и графического юзер контрола(wpfconnection)), подключение, c использованием библиотек 4.3.13, работает!&lt;br /&gt;1. Анализ работы кода позволил найти проблему:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_5ec8cb4d92bf4fdfb471bef8240ef87d');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_5ec8cb4d92bf4fdfb471bef8240ef87d' style='display:none'&gt;namespace TraderConnection&lt;br /&gt;{&lt;br /&gt;public class SafeConnection&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;private Timer timer_sc;&lt;br /&gt;public Connector Trader&lt;br /&gt;{&lt;br /&gt;get; set; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public SafeConnection(Connector trader)&lt;br /&gt;{&lt;br /&gt;Trader = trader;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public void ConnectSafe()&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;Trader.ReConnectionSettings.Interval=TimeSpan.FromSeconds(10);&lt;br /&gt;Trader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;&lt;br /&gt;Trader.ConnectionError += OnNewException;&lt;br /&gt;Trader.OrdersRegisterFailed += fails =&amp;gt; fails.ForEach(f =&amp;gt; OnNewException(f.Error));&lt;br /&gt;Trader.Connect();&lt;br /&gt;// !!!! В ЭТОМ МЕСТЕ Trader ИЗМЕНЯЕТ ЗНАЧЕНИЕ ПОЛЯ ConnectionState ИЗ Disconnected В Connecting.... &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// if (Trader!=null &amp;amp;&amp;amp; Trader.ConnectionState==ConnectionStates.Connected)&lt;br /&gt;// {&lt;br /&gt;// try&lt;br /&gt;// {&lt;br /&gt;// IsConnected = true;&lt;br /&gt;// }&lt;br /&gt;// catch (Exception ex)&lt;br /&gt;// {&lt;br /&gt;// OnNewException(ex);&lt;br /&gt;// } &lt;br /&gt;// }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void DisconnectSafe()&lt;br /&gt;{&lt;br /&gt;if (Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected)&lt;br /&gt;{Trader.Disconnect();}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public event Action&amp;lt;Exception&amp;gt; NewException = delegate { };&lt;br /&gt;&lt;br /&gt;protected virtual void OnNewException(Exception exeption)&lt;br /&gt;{&lt;br /&gt;NewException(exeption);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public bool IsConnected&lt;br /&gt;{&lt;br /&gt;get&lt;br /&gt;{return (Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected);}&lt;br /&gt;&lt;br /&gt;private set { }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. Поскольку ConnectionState находится в состоянии Connecting, события Connected в классе WpfConnection не происходит:&lt;br /&gt;&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_8883e2dc7d074a3aabf28c423faac4aa');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_8883e2dc7d074a3aabf28c423faac4aa' style='display:none'&gt;&lt;br /&gt;&lt;br /&gt;namespace WpfConnectionInterface&lt;br /&gt;{&lt;br /&gt;/// &amp;lt;summary&amp;gt;&lt;br /&gt;/// Interaction logic for InterFace.xaml&lt;br /&gt;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;public partial class InterFace : UserControl&lt;br /&gt;{&lt;br /&gt;private SafeConnection _safeConnection;&lt;br /&gt;public SafeConnection SafeConnection {&lt;br /&gt;set&lt;br /&gt;{&lt;br /&gt;_safeConnection = value;&lt;br /&gt;btnConnect.IsEnabled = _safeConnection != null;&lt;br /&gt;}&lt;br /&gt;get { return _safeConnection; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public InterFace()&lt;br /&gt;{&lt;br /&gt;InitializeComponent();&lt;br /&gt;Loaded += InterfaceLoaded;&lt;br /&gt;btnConnect.IsEnabled = false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void InterfaceLoaded(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;var window = Window.GetWindow(this.Parent);&lt;br /&gt;if (window != null)&lt;br /&gt;window.Closed += delegate&lt;br /&gt;{&lt;br /&gt;if (_safeConnection != null)&lt;br /&gt;_safeConnection.DisconnectSafe();&lt;br /&gt;};&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void ConnectClick(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;if (_safeConnection == null)&lt;br /&gt;return;&lt;br /&gt;if (_safeConnection.IsConnected)&lt;br /&gt;{&lt;br /&gt;//кнопка содержит контент &amp;quot;Disconnect&amp;quot;, после щелчка по ней:...-&amp;gt;&lt;br /&gt;btnConnect.Content = &amp;quot;Connect&amp;quot;;&lt;br /&gt;btnConnect.IsEnabled = false;&lt;br /&gt;_safeConnection.Trader.NewSecurities -= TraderNewSecurities;&lt;br /&gt;_safeConnection.Trader.NewPortfolios -= TraderNewPortfolios;&lt;br /&gt;_safeConnection.DisconnectSafe();&lt;br /&gt;Action disconnected = null;&lt;br /&gt;disconnected = () =&amp;gt;&lt;br /&gt;{&lt;br /&gt;_safeConnection.Trader.Disconnected -= disconnected;&lt;br /&gt;this.GuiAsync(() =&amp;gt; { btnConnect.IsEnabled = true; });&lt;br /&gt;};&lt;br /&gt;_safeConnection.Trader.Disconnected += disconnected;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;//кнопка содержит контент &amp;quot;Connect&amp;quot;, после щелчка по ней:...-&amp;gt;&lt;br /&gt;btnConnect.Content = &amp;quot;Disconnect&amp;quot;;&lt;br /&gt;btnConnect.IsEnabled = false;&lt;br /&gt;&lt;br /&gt;_safeConnection.Trader.NewSecurities += TraderNewSecurities;&lt;br /&gt;_safeConnection.Trader.NewPortfolios += TraderNewPortfolios;&lt;br /&gt;Action connected = null;&lt;br /&gt;connected = () =&amp;gt;&lt;br /&gt;{&lt;br /&gt;_safeConnection.Trader.Connected -= connected;&lt;br /&gt;this.GuiAsync(() =&amp;gt; { btnConnect.IsEnabled = true; });&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;//Здесь событием Connected соответственно и не пахнет &lt;br /&gt;_safeConnection.Trader.Connected += connected;&lt;br /&gt;_safeConnection.ConnectSafe();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Security SelectedSecurity&lt;br /&gt;{&lt;br /&gt;get { return (Security) cbSecurities.SelectedItem; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public Portfolio SelectedPortfolio&lt;br /&gt;{&lt;br /&gt;get { return (Portfolio)cbPortfolios.SelectedItem; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void TraderNewPortfolios(IEnumerable&amp;lt;Portfolio&amp;gt; obj)&lt;br /&gt;{&lt;br /&gt;this.GuiAsync(() =&amp;gt; { cbPortfolios.ItemsSource = _safeConnection.Trader.Portfolios; });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void TraderNewSecurities(IEnumerable&amp;lt;Security&amp;gt; obj)&lt;br /&gt;{&lt;br /&gt;this.GuiAsync(() =&amp;gt; { cbSecurities.ItemsSource = _safeConnection.Trader.Securities; });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void DisonnectClick(object sender, RoutedEventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3. События NewSecurities и NewPortfolios не происходят. Поезда не едут)))квадроцикл не мопед.&lt;br /&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/29969/</id>
    <title type="text">Второе. Примеры обновлены до последней версии.</title>
    <published>2014-03-12T09:35:34Z</published>
    <updated>2014-03-12T09:35:34Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Второе. Примеры обновлены до последней версии.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/29964/</id>
    <title type="text">При переходе на новую версию АПИ в проекте SafeConnection в строке: Trader.OrdersRegisterFailed += f...</title>
    <published>2014-03-12T03:15:23Z</published>
    <updated>2014-03-12T03:15:23Z</updated>
    <author>
      <name>Sid</name>
      <uri>https://stocksharp.ru/users/39431/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">При переходе на новую версию АПИ в проекте SafeConnection &lt;br /&gt;в строке:&lt;br /&gt;  Trader.OrdersRegisterFailed += fails =&amp;gt; &lt;u&gt;fails.ForEach(f =&amp;gt; OnNewException(f.Error));&lt;/u&gt; &lt;br /&gt;&lt;br /&gt;ошибка:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_fac0fd7af7ab4850a1e6c41150ad5172');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_fac0fd7af7ab4850a1e6c41150ad5172' style='display:none'&gt;&lt;br /&gt;Error	1	The type &amp;#39;System.Windows.FrameworkElement&amp;#39; is defined in an assembly that is not referenced. You must add a reference to assembly &amp;#39;PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&amp;#39;.	D:\PROJ\02_lesson (Quotes, Connection pattern) T\StockSharp.TraderConnection\SafeConnection.cs	69	53	StockSharp.TraderConnection&lt;br /&gt;&lt;br /&gt;Error	2	&amp;#39;System.Collections.Generic.IEnumerable&amp;lt;StockSharp.BusinessEntities.OrderFail&amp;gt;&amp;#39; does not contain a definition for &amp;#39;ForEach&amp;#39; and no extension method &amp;#39;ForEach&amp;#39; accepting a first argument of type &amp;#39;System.Collections.Generic.IEnumerable&amp;lt;StockSharp.BusinessEntities.OrderFail&amp;gt;&amp;#39; could be found (are you missing a using directive or an assembly reference?)	D:\PROJ\02_lesson (Quotes, Connection pattern) T\StockSharp.TraderConnection\SafeConnection.cs	69	59	StockSharp.TraderConnection&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;API 4.2.2.16</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/25474/</id>
    <title type="text">Видео-уроки: Создание обертки коннекторов (шаблон для подключений) http://vk.com/video_ext.php?oid=-...</title>
    <published>2013-04-20T13:08:12Z</published>
    <updated>2014-03-04T20:50:12Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.ru/users/26984/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;b&gt;&lt;span style="font-size:120%"&gt;Видео-уроки:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Создание обертки коннекторов (шаблон для подключений)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167470507&amp;amp;hash=5aed0d16f3d8cb3b&amp;amp;hd=3[/vk]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Работа с потоковыми данными&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167477199&amp;amp;hash=974c22b650016bee&amp;amp;hd=3[/vk]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:120%"&gt;Видео-уроки (экстра):&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Работа с котировками, отслеживание сигналов&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167477299&amp;amp;hash=130700df674df7af&amp;amp;hd=3[/vk]&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:120%"&gt;Темы занятия:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Создание безопасной обертки (шаблона) для различных коннекторов&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Создание безопасного варианта универсального подключения&lt;br /&gt;&lt;li&gt;Создание элемента управления для работы с коннектором (подключение, отключение, инструменты)&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Потоковые данные&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Котировки&lt;br /&gt;&lt;li&gt;Сделки&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Создание приложения, отображающего потоковые данные&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Вывод всех сделок в окно&lt;br /&gt;&lt;li&gt;Создание визуального стакана котировок&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:120%"&gt;Домашнее задание:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Вывести в окно значение латентности и время последнего обновления стакана.&lt;br /&gt;&lt;li&gt;Добавить в окно второй стакан глубиной в 5.&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:120%"&gt;Полезные ссылки:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_MarketDepth.htm" title="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_MarketDepth.htm"&gt;Класс MarketDepth&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_Quote.htm" title="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_Quote.htm"&gt;Класс Quote&lt;/a&gt;&lt;br /&gt;&lt;a href="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_Trade.htm" title="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_Trade.htm"&gt;Класс Trade&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:120%"&gt;Вложения:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADa7P_4NHqE_OLFtnFd-d2rc9GNm78BSRg5Z4VassvwQDkRd2Zr9oYK0Wxc0eTuVnw" title="http://vk.com/docs?oid=-66650972"&gt;Скачать проекты&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:120%"&gt;Изменения в проектах:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_120d4b21c2254a6880a58e3f885b893c');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_120d4b21c2254a6880a58e3f885b893c' style='display:none'&gt;&lt;br /&gt;Проект StockSharp.TraderConnection&lt;br /&gt;Файл SafeConnection.cs&lt;br /&gt;&lt;br /&gt;В версии S# 4.1.19.1 настройки переподключения сгруппированы в следующие свойства:&lt;br /&gt;Trader.ReConnectionSettings.ConnectionSettings - настройки для подключения&lt;br /&gt;Trader.ReConnectionSettings.ExportSettings - настройки для экспорта&lt;br /&gt;&lt;br /&gt;В связи с чем, изменен вид указания интервала попыток подключений, теперь он внутри свойства ConnectionSettings.&lt;br /&gt;Возобновление экспорта теперь осуществляется автоматически, поэтому строка:&lt;br /&gt;Trader.ReConnectionSettings.IsReStartExport = true;&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;

        /// &amp;lt;summary&amp;gt;
        /// Подключиться безопасно к торговой платформе
        /// &amp;lt;/summary&amp;gt;
        public void ConnectSafe()
        {
            //Интервал переподключения
            Trader.ReConnectionSettings.Interval = TimeSpan.FromSeconds(10);
            //Когда переподключаться
            Trader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;
            //Запускать ли заново экспрорт после переподключения
            Trader.ReConnectionSettings.IsReStartExport = true;
            //Подписаться на появление ошибки подключения от трейдера
            Trader.ConnectionError += OnNewException;
            //Подписаться на появление ошибок не выставленной заявки
            Trader.OrdersRegisterFailed += fails =&amp;gt; fails.ForEach(f =&amp;gt; OnNewException(f.Error));
            //Подписаться на событие успешного подключения к торговой платформе
            Trader.Connected += () =&amp;gt;
                                    {
                                        try
                                        {
                                            //Запустить экспорт данных из торговой платформы
                                            Trader.StartExport();
                                        }
                                        catch (Exception ex)
                                        {
                                            //Вызвать событие появления нового исключения
                                            OnNewException(ex);
                                        }
                                    };

            //Подключиться к торговой платформе
            Trader.Connect();
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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 ConnectSafe()
        {
            //Интервал переподключения
            Trader.ReConnectionSettings.ConnectionSettings.Interval = TimeSpan.FromSeconds(10);
            //Когда переподключаться
            Trader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;
            //Запускать ли заново экспрорт после переподключения
            //Trader.ReConnectionSettings.IsReStartExport = true;
            //Подписаться на появление ошибки подключения от трейдера
            Trader.ConnectionError += OnNewException;
            //Подписаться на появление ошибок не выставленной заявки
            Trader.OrdersRegisterFailed += fails =&amp;gt; fails.ForEach(f =&amp;gt; OnNewException(f.Error));
            //Подписаться на событие успешного подключения к торговой платформе
            Trader.Connected += () =&amp;gt;
                                    {
                                        try
                                        {
                                            //Запустить экспорт данных из торговой платформы
                                            Trader.StartExport();
                                        }
                                        catch (Exception ex)
                                        {
                                            //Вызвать событие появления нового исключения
                                            OnNewException(ex);
                                        }
                                    };

            //Подключиться к торговой платформе
            Trader.Connect();
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Начиная с версии S# 4.1.19.1 статус подключения коннектора вынесен в специальное свойство ConnectionState, которое может принимать следующие значения:&lt;br /&gt;Disconnected - Не активно,&lt;br /&gt;Disconnecting - В процессе отключения,&lt;br /&gt;Connected - В процессе подключения,&lt;br /&gt;Connecting - Подключение активно,&lt;br /&gt;Failed - Ошибка подключения&lt;br /&gt;&lt;br /&gt;Таким образом, теперь нет свойства IsConnected, а наличие статуса подключения мы можем получать от свойства ConnectionState.&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 DisConnectSafe()
        {
            //Если коннектор к торговой платформе не пуст и соединение установлено
            if (Trader != null &amp;amp;&amp;amp; Trader.IsConnected)
            {
                Trader.StopExport();
                Trader.Disconnect();
            }
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Стало:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

        public void DisConnectSafe()
        {
            //Если коннектор к торговой платформе не пуст и соединение установлено
            if (Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected)
            {
                Trader.StopExport();
                Trader.Disconnect();
            }
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&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 IsConnected
        {
            get
            {
                return Trader != null &amp;amp;&amp;amp; Trader.IsConnected;
            }
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Стало:&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

        public bool IsConnected
        {
            get
            {
                return Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected;
            }
        }
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/29278/</id>
    <title type="text">Со всеми изменениями, для последнего build S#, код для урока должен выглядеть так: using System; usi...</title>
    <published>2014-01-24T07:34:52Z</published>
    <updated>2014-01-24T07:34:52Z</updated>
    <author>
      <name>devruss</name>
      <uri>https://stocksharp.ru/users/50604/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Со всеми изменениями, для последнего build S#, код для урока должен выглядеть так:&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;

using System;
using MoreLinq;
using StockSharp.Algo;
using StockSharp.BusinessEntities;
using Ecng.Collections;



namespace TraderConnection
{
    public class SafeConnection
    {
        /// Коннектор к торговой платформе
        public Connector Trader { get; private set; }

        /// Событие появления нового исключения
        public Action&amp;lt;Exception&amp;gt; NewException = delegate { };

        /// Конструктор. Создать безопасное подключение
        /// &amp;lt;param name=&amp;quot;trader&amp;quot;&amp;gt;Коннектор к торговой платформе&amp;lt;/param&amp;gt;
        public SafeConnection(Connector trader)
        {
            Trader = trader;
        }

        /// Вызвать событие появления нового исключения
        /// &amp;lt;param name=&amp;quot;exception&amp;quot;&amp;gt;Исключение&amp;lt;/param&amp;gt;
        protected virtual void OnNewException(Exception exception)
        {
            //Вызвать событие появления нового исключения
            NewException(exception);
        }
        
        public void ConnectSafe()
        {
            //Интервал переподключения
            Trader.ReConnectionSettings.ConnectionSettings.Interval = TimeSpan.FromSeconds(10);
            //Когда переподключаться
            Trader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;
            //Подписаться на появление ошибки подключения от трейдера
            Trader.ConnectionError += NewException;
            //Подписаться на событие успешного подключения к торговой платформе
            Trader.OrdersRegisterFailed += fails =&amp;gt; fails.ForEach(f =&amp;gt; OnNewException(f.Error));

            Trader.Connected += () =&amp;gt;
            {
                try
                {
                    //Запустить экспорт данных из торговой платформы
                    Trader.StartExport();
                }
                catch (Exception ex)
                {
                    //Вызвать событие появления нового исключения
                    OnNewException(ex);
                }
            };

            //Подключиться к торговой платформе
            Trader.Connect();
         


        }

        public void DisconnectSafe()
        {
            //Если коннектор к торговой платформе не пуст и соединение установлено
            if (Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected)
            {
                Trader.StopExport();
                Trader.Disconnect();
            }
        }

        public bool IsConnected
        {
            get { return Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected; }
        }
    }
}

&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Обратите внимание, что вместо BaseTrader используется Connector, а также добвляется библиотека MoreLinq.dll в References.&lt;br /&gt;&lt;br /&gt;Было бы супер, если обновленный код выложила команда Stockshapr, а я не провел весь вечер выискивая, почему код из примера не запускается, как его исправить и общаясь с саппортом&lt;br /&gt;(саппорт молодцы, все достаточно быстро подсказали)</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/29070/</id>
    <title type="text">Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить корректно значение...</title>
    <published>2014-01-15T10:06:04Z</published>
    <updated>2014-01-15T10:06:04Z</updated>
    <author>
      <name>FireSpirit</name>
      <uri>https://stocksharp.ru/users/364/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить корректно значение Latency, показывающую. любая переменная, принимающая значение задержки обновления стакана, например (var ltn = marketdepth.Latency) равна нулю. В чем ошибка???&lt;br /&gt;Другие задания данного урока сделал без проблем, а с этим стопорюсь. Спасибо за ранее.&lt;br /&gt;P.S. уважаемый администратор форума, если я не туда написал, то прошу сильно не пинать. </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/28459/</id>
    <title type="text">Подскажите пожалуйста, а где взять исходники от уроков?</title>
    <published>2013-11-27T09:35:11Z</published>
    <updated>2013-11-27T09:35:11Z</updated>
    <author>
      <name>Николай</name>
      <uri>https://stocksharp.ru/users/6060/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Подскажите пожалуйста, а где взять исходники от уроков?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>