﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Урок 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-06-07T05:45:29Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3599" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/29967/</id>
    <title type="text">Михаил Сухов: Vadimka: 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.com/users/39431/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(29966)" rel="nofollow" target="_blank"&gt;Михаил Сухов&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(29964)" rel="nofollow" target="_blank"&gt;Vadimka&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/"&gt;http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Михаил, не понял в чем посыл? В Контакт я уже тоже &amp;quot;переехал&amp;quot;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;В Контакте есть обсуждени уроков ?&lt;/li&gt;
&lt;li&gt;Или в Контакте есть последняя исправленеая версия примера ?&lt;/li&gt;
&lt;li&gt;Или мне нужно сделать отдельный пост здесь на форуме в разделе обучения ?&lt;/li&gt;
&lt;/ol&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/29966/</id>
    <title type="text">Vadimka: 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.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(29964)" rel="nofollow" target="_blank"&gt;Vadimka&lt;/a&gt;:&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/"&gt;http://stocksharp.com/forum/4346/My-pierieiekhali-v-sots-siet--Vkontaktie/&lt;/a&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/29095/</id>
    <title type="text">FireSpirit: Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить коррек...</title>
    <published>2014-01-16T14:34:35Z</published>
    <updated>2016-08-16T00:16:25Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(29070)" rel="nofollow" target="_blank"&gt;FireSpirit&lt;/a&gt;:&lt;/strong&gt;
Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить корректно значение Latency, показывающую. любая переменная, принимающая значение задержки обновления стакана, например (var ltn = marketdepth.Latency) равна нулю. В чем ошибка???
Другие задания данного урока сделал без проблем, а с этим стопорюсь. Спасибо за ранее.
P.S. уважаемый администратор форума, если я не туда написал, то прошу сильно не пинать.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Все вопросы по урокам обсуждаются в соответствующем разделе
stocksharp.com/forum/tags/Обучение/&lt;/p&gt;
&lt;p&gt;В Вашем случае надо убедиться что стакан приходит. Если используете Quik, то закройте в терминале Quik  соответствующий стакан (или все стаканы) и повторите запуск Вашей программы.
Проверьте, что стакан приходит, через точку останова.
Через оригинальный проект урока значение Latency удается получить?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(28459)" rel="nofollow" target="_blank"&gt;Николай&lt;/a&gt;:&lt;/strong&gt;
Подскажите пожалуйста, а где взять исходники от уроков?
Исходники находятся на сервере, подробнее описано в следующем посте: &lt;a href="http://stocksharp.com/forum/313/Khranilishchie-stratieghii/"&gt;http://stocksharp.com/forum/313/Khranilishchie-stratieghii/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/62065/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Введенеие Хочется сделать обертку для коннектора по типу урока 2. Часть 1. Создание обертки коннекторов (&lt;a href="https://vk.com/stocksharpedu?z=video-66650972_167470507%2Feb956e23a603a4440c" rel="nofollow" target="_blank"&gt;https://vk.com/stocksharpedu?z=video-66650972_167470507%2Feb956e23a603a4440c&lt;/a&gt;), чтобы было все по-взрослому)))
По простому(т.е. без использования класса SafeConnection и графического юзер контрола(wpfconnection)), подключение, c использованием библиотек 4.3.13, работает!&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Анализ работы кода позволил найти проблему:&lt;/li&gt;
&lt;/ol&gt;
&lt;details&gt;&lt;summary&gt;namespace TraderConnection
{
public class SafeConnection
{&lt;/summary&gt;
&lt;p&gt;private Timer timer_sc;
public Connector Trader
{
get; set;
}&lt;/p&gt;
&lt;p&gt;public SafeConnection(Connector trader)
{
Trader = trader;&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;public void ConnectSafe()
{&lt;/p&gt;
&lt;p&gt;Trader.ReConnectionSettings.Interval=TimeSpan.FromSeconds(10);
Trader.ReConnectionSettings.WorkingTime = ExchangeBoard.Forts.WorkingTime;
Trader.ConnectionError += OnNewException;
Trader.OrdersRegisterFailed += fails =&amp;gt; fails.ForEach(f =&amp;gt; OnNewException(f.Error));
Trader.Connect();
// !!!! В ЭТОМ МЕСТЕ Trader ИЗМЕНЯЕТ ЗНАЧЕНИЕ ПОЛЯ ConnectionState ИЗ Disconnected В Connecting....&lt;/p&gt;
&lt;p&gt;// if (Trader!=null &amp;amp;&amp;amp; Trader.ConnectionState==ConnectionStates.Connected)
// {
// try
// {
// IsConnected = true;
// }
// catch (Exception ex)
// {
// OnNewException(ex);
// }
// }
}&lt;/p&gt;
&lt;p&gt;public void DisconnectSafe()
{
if (Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected)
{Trader.Disconnect();}
}&lt;/p&gt;
&lt;p&gt;public event Action&lt;Exception&gt; NewException = delegate ;&lt;/p&gt;
&lt;p&gt;protected virtual void OnNewException(Exception exeption)
{
NewException(exeption);
}&lt;/p&gt;
&lt;p&gt;public bool IsConnected
{
get
{return (Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected);}&lt;/p&gt;
&lt;p&gt;private set &lt;/p&gt;
&lt;p&gt;}
}
}&lt;/p&gt;
&lt;/details&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Поскольку ConnectionState находится в состоянии Connecting, события Connected в классе WpfConnection не происходит:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="spoiler"&gt;&lt;p&gt;namespace WpfConnectionInterface
{
/// &lt;summary&gt;
/// Interaction logic for InterFace.xaml
/// &lt;/summary&gt;
public partial class InterFace : UserControl
{
private SafeConnection _safeConnection;
public SafeConnection SafeConnection {
set
{
_safeConnection = value;
btnConnect.IsEnabled = _safeConnection != null;
}
get { return _safeConnection; }
}&lt;/p&gt;
&lt;p&gt;public InterFace()
{
InitializeComponent();
Loaded += InterfaceLoaded;
btnConnect.IsEnabled = false;
}&lt;/p&gt;
&lt;p&gt;private void InterfaceLoaded(object sender, RoutedEventArgs e)
{
var window = Window.GetWindow(this.Parent);
if (window != null)
window.Closed += delegate
{
if (_safeConnection != null)
_safeConnection.DisconnectSafe();
};
}&lt;/p&gt;
&lt;p&gt;private void ConnectClick(object sender, RoutedEventArgs e)
{&lt;/p&gt;
&lt;p btnConnect.IsEnabled="true;"&gt;if (_safeConnection == null)
return;
if (_safeConnection.IsConnected)
{
//кнопка содержит контент &amp;quot;Disconnect&amp;quot;, после щелчка по ней:...-&amp;gt;
btnConnect.Content = &amp;quot;Connect&amp;quot;;
btnConnect.IsEnabled = false;
_safeConnection.Trader.NewSecurities -= TraderNewSecurities;
_safeConnection.Trader.NewPortfolios -= TraderNewPortfolios;
_safeConnection.DisconnectSafe();
Action disconnected = null;
disconnected = () =&amp;gt;
{
_safeConnection.Trader.Disconnected -= disconnected;
this.GuiAsync(() =&amp;gt; );
};
_safeConnection.Trader.Disconnected += disconnected;
}
else
{
//кнопка содержит контент &amp;quot;Connect&amp;quot;, после щелчка по ней:...-&amp;gt;
btnConnect.Content = &amp;quot;Disconnect&amp;quot;;
btnConnect.IsEnabled = false;&lt;/p&gt;
&lt;p btnConnect.IsEnabled="true;"&gt;_safeConnection.Trader.NewSecurities += TraderNewSecurities;
_safeConnection.Trader.NewPortfolios += TraderNewPortfolios;
Action connected = null;
connected = () =&amp;gt;
{
_safeConnection.Trader.Connected -= connected;
this.GuiAsync(() =&amp;gt; );
};&lt;/p&gt;
&lt;p&gt;//Здесь событием Connected соответственно и не пахнет
_safeConnection.Trader.Connected += connected;
_safeConnection.ConnectSafe();&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;p&gt;public Security SelectedSecurity
{
get { return (Security) cbSecurities.SelectedItem; }
}&lt;/p&gt;
&lt;p&gt;public Portfolio SelectedPortfolio
{
get { return (Portfolio)cbPortfolios.SelectedItem; }
}&lt;/p&gt;
&lt;p cbPortfolios.ItemsSource="_safeConnection.Trader.Portfolios;"&gt;private void TraderNewPortfolios(IEnumerable&lt;Portfolio&gt; obj)
{
this.GuiAsync(() =&amp;gt; );
}&lt;/p&gt;
&lt;p cbSecurities.ItemsSource="_safeConnection.Trader.Securities;"&gt;private void TraderNewSecurities(IEnumerable&lt;Security&gt; obj)
{
this.GuiAsync(() =&amp;gt; );
}&lt;/p&gt;
&lt;p&gt;private void DisonnectClick(object sender, RoutedEventArgs e)
{&lt;/p&gt;
&lt;p&gt;}
}
}&lt;/p&gt;
&lt;/div&gt;
&lt;ol start="3"&gt;
&lt;li&gt;События NewSecurities и NewPortfolios не происходят. Поезда не едут)))квадроцикл не мопед.&lt;/li&gt;
&lt;/ol&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/201/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Второе. Примеры обновлены до последней версии.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/39431/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;При переходе на новую версию АПИ в проекте SafeConnection
в строке:
Trader.OrdersRegisterFailed += fails =&amp;gt; &lt;u&gt;fails.ForEach(f =&amp;gt; OnNewException(f.Error));&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;ошибка:&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;Error	1	The type 'System.Windows.FrameworkElement' is defined in an assembly that is not referenced. You must add a reference to assembly 'PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'.	D:\PROJ\02_lesson (Quotes, Connection pattern) T\StockSharp.TraderConnection\SafeConnection.cs	69	53	StockSharp.TraderConnection&lt;/summary&gt;
&lt;p&gt;Error	2	'System.Collections.Generic.IEnumerable&amp;lt;StockSharp.BusinessEntities.OrderFail&amp;gt;' does not contain a definition for 'ForEach' and no extension method 'ForEach' accepting a first argument of type 'System.Collections.Generic.IEnumerable&amp;lt;StockSharp.BusinessEntities.OrderFail&amp;gt;' 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;/p&gt;
&lt;/details&gt;
&lt;p&gt;API 4.2.2.16&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/25474/</id>
    <title type="text">Видео-уроки: Создание обертки коннекторов (шаблон для подключений) [vk]http://vk.com/video_ext.php?o...</title>
    <published>2013-04-20T13:08:12Z</published>
    <updated>2014-03-04T20:50:12Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Видео-уроки:&lt;/span&gt;&lt;/strong&gt;
&lt;strong&gt;Создание обертки коннекторов (шаблон для подключений)&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167470507&amp;amp;hash=5aed0d16f3d8cb3b&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Работа с потоковыми данными&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167477199&amp;amp;hash=974c22b650016bee&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Видео-уроки (экстра):&lt;/span&gt;&lt;/strong&gt;
&lt;strong&gt;Работа с котировками, отслеживание сигналов&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167477299&amp;amp;hash=130700df674df7af&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Темы занятия:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Создание безопасной обертки (шаблона) для различных коннекторов&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Создание безопасного варианта универсального подключения&lt;/li&gt;
&lt;li&gt;Создание элемента управления для работы с коннектором (подключение, отключение, инструменты)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Потоковые данные&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Котировки&lt;/li&gt;
&lt;li&gt;Сделки&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Создание приложения, отображающего потоковые данные&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Вывод всех сделок в окно&lt;/li&gt;
&lt;li&gt;Создание визуального стакана котировок&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Домашнее задание:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Вывести в окно значение латентности и время последнего обновления стакана.&lt;/li&gt;
&lt;li&gt;Добавить в окно второй стакан глубиной в 5.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Полезные ссылки:&lt;/span&gt;&lt;/strong&gt;
&lt;a href="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_MarketDepth.htm"&gt;Класс MarketDepth&lt;/a&gt;
&lt;a href="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_Quote.htm"&gt;Класс Quote&lt;/a&gt;
&lt;a href="http://stocksharp.com/doc/html/T_StockSharp_BusinessEntities_Trade.htm"&gt;Класс Trade&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Вложения:&lt;/span&gt;&lt;/strong&gt;
&lt;a href="http://vk.com/docs?oid=-66650972" rel="nofollow" target="_blank"&gt;Скачать проекты&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Изменения в проектах:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;Проект StockSharp.TraderConnection
Файл SafeConnection.cs&lt;/summary&gt;
&lt;p&gt;В версии S# 4.1.19.1 настройки переподключения сгруппированы в следующие свойства:
Trader.ReConnectionSettings.ConnectionSettings - настройки для подключения
Trader.ReConnectionSettings.ExportSettings - настройки для экспорта&lt;/p&gt;
&lt;p&gt;В связи с чем, изменен вид указания интервала попыток подключений, теперь он внутри свойства ConnectionSettings.
Возобновление экспорта теперь осуществляется автоматически, поэтому строка:
Trader.ReConnectionSettings.IsReStartExport = true;
более не нужна.&lt;/p&gt;
&lt;p&gt;Было:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;p&gt;Стало:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;p&gt;Начиная с версии S# 4.1.19.1 статус подключения коннектора вынесен в специальное свойство ConnectionState, которое может принимать следующие значения:
Disconnected - Не активно,
Disconnecting - В процессе отключения,
Connected - В процессе подключения,
Connecting - Подключение активно,
Failed - Ошибка подключения&lt;/p&gt;
&lt;p&gt;Таким образом, теперь нет свойства IsConnected, а наличие статуса подключения мы можем получать от свойства ConnectionState.&lt;/p&gt;
&lt;p&gt;Было:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
        public void DisConnectSafe()
        {
            //Если коннектор к торговой платформе не пуст и соединение установлено
            if (Trader != null &amp;amp;&amp;amp; Trader.IsConnected)
            {
                Trader.StopExport();
                Trader.Disconnect();
            }
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Стало:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
        public void DisConnectSafe()
        {
            //Если коннектор к торговой платформе не пуст и соединение установлено
            if (Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected)
            {
                Trader.StopExport();
                Trader.Disconnect();
            }
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Было:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
        public bool IsConnected
        {
            get
            {
                return Trader != null &amp;amp;&amp;amp; Trader.IsConnected;
            }
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Стало:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
        public bool IsConnected
        {
            get
            {
                return Trader != null &amp;amp;&amp;amp; Trader.ConnectionState == ConnectionStates.Connected;
            }
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/50604/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Со всеми изменениями, для последнего build S#, код для урока должен выглядеть так:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-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;/code&gt;&lt;/pre&gt;
&lt;p&gt;Обратите внимание, что вместо BaseTrader используется Connector, а также добвляется библиотека MoreLinq.dll в References.&lt;/p&gt;
&lt;p&gt;Было бы супер, если обновленный код выложила команда Stockshapr, а я не провел весь вечер выискивая, почему код из примера не запускается, как его исправить и общаясь с саппортом
(саппорт молодцы, все достаточно быстро подсказали)&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/364/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Приветствую. Помогите, пжл, кто может. Уже два часа бьюсь, над тем чтобы получить корректно значение Latency, показывающую. любая переменная, принимающая значение задержки обновления стакана, например (var ltn = marketdepth.Latency) равна нулю. В чем ошибка???
Другие задания данного урока сделал без проблем, а с этим стопорюсь. Спасибо за ранее.
P.S. уважаемый администратор форума, если я не туда написал, то прошу сильно не пинать.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/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.com/users/6060/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Подскажите пожалуйста, а где взять исходники от уроков?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>