﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Форум. StockSharp</title>
  <id>https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=130</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-19T22:38:05Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=130" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/3599/</id>
    <title type="text">Урок 2. Потоковые данные (сделки, котировки). Шаблон для универсального (безопасного) подключения.</title>
    <published>2013-04-20T13:08:12Z</published>
    <updated>2013-04-20T13:08:12Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.ru/users/26984/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <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>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3598/</id>
    <title type="text">вылетает Exception</title>
    <published>2013-04-19T08:41:57Z</published>
    <updated>2013-04-19T08:41:57Z</updated>
    <author>
      <name>tourtika</name>
      <uri>https://stocksharp.ru/users/39055/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;версия 4.1.11&lt;/p&gt;
&lt;p&gt;вылетает Exception&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
Exception:Thrown: &amp;quot;Требуемый объект не найден.
&amp;quot; (System.Security.Cryptography.CryptographicException)
A System.Security.Cryptography.CryptographicException was thrown: &amp;quot;Требуемый объект не найден.
&amp;quot;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;в строке&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
Trader = new QuikTrader(Path.Text);

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;лицензия номер 42860 установлена&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
[h]
 	mscorlib.dll!System.Security.Cryptography.CryptographicException.ThrowCryptographicException(int hr = {unknown})	
 	mscorlib.dll!System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(string fileName = {unknown}, object password = {unknown}, System.Security.Cryptography.X509Certificates.X509KeyStorageFlags keyStorageFlags = {unknown})	
 	mscorlib.dll!System.Security.Cryptography.X509Certificates.X509Certificate.CreateFromSignedFile(string filename = {unknown})	
 	StockSharp.Algo.dll!StockSharp.Algo.Licensing.LicenseHelper.#=qIK7OFIa$yAkUGe_EpX$owg==()	
 	StockSharp.Algo.dll!StockSharp.Algo.Licensing.LicenseHelper.#=q$JHDqHbGS2gS3Zq8PrMHkMoXswey6biyTUDWThHiVm4=(System.Func&amp;lt;StockSharp.Algo.Licensing.License,bool&amp;gt; #=qqkg0GsHa8_O4y5uQTyDpgw== = {unknown})	
 	StockSharp.Algo.dll!StockSharp.Algo.Licensing.LicenseHelper.IsLicenseSupport(System.Type featureType = {unknown})	
 	StockSharp.Algo.dll!StockSharp.Algo.Licensing.LicenseHelper.StartValidation(object feature = {unknown}, System.Action failedAction = {unknown})	
 	StockSharp.Algo.dll!StockSharp.Algo.BaseTrader..ctor(Ecng.Interop.Platforms platform = {unknown}, bool checkLicense = {unknown})	
 	StockSharp.Quik.dll!StockSharp.Quik.QuikTrader..ctor(string path = {unknown})	
&amp;gt;	Sample.exe!Sample.MainWindow.ConnectClick(object sender = {unknown}, System.Windows.RoutedEventArgs e = {unknown})	
 	PresentationCore.dll!System.Windows.RoutedEventHandlerInfo.InvokeHandler(object target = {unknown}, System.Windows.RoutedEventArgs routedEventArgs = {unknown})	
 	PresentationCore.dll!System.Windows.EventRoute.InvokeHandlersImpl(object source = {unknown}, System.Windows.RoutedEventArgs args = {unknown}, bool reRaised = {unknown})	
 	PresentationCore.dll!System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject sender = {unknown}, System.Windows.RoutedEventArgs args = {unknown})	
 	PresentationCore.dll!System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs e = {unknown})	
 	PresentationFramework.dll!System.Windows.Controls.Primitives.ButtonBase.OnClick()	
 	PresentationFramework.dll!System.Windows.Controls.Button.OnClick()	
 	PresentationFramework.dll!System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp(System.Windows.Input.MouseButtonEventArgs e = {unknown})	
 	PresentationCore.dll!System.Windows.UIElement.OnMouseLeftButtonUpThunk(object sender = {unknown}, System.Windows.Input.MouseButtonEventArgs e = {unknown})	
 	PresentationCore.dll!System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(System.Delegate genericHandler = {unknown}, object genericTarget = {unknown})	
 	PresentationCore.dll!System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate handler = {unknown}, object target = {unknown})	
 	PresentationCore.dll!System.Windows.RoutedEventHandlerInfo.InvokeHandler(object target = {unknown}, System.Windows.RoutedEventArgs routedEventArgs = {unknown})	
 	PresentationCore.dll!System.Windows.EventRoute.InvokeHandlersImpl(object source = {unknown}, System.Windows.RoutedEventArgs args = {unknown}, bool reRaised = {unknown})	
 	PresentationCore.dll!System.Windows.UIElement.ReRaiseEventAs(System.Windows.DependencyObject sender = {unknown}, System.Windows.RoutedEventArgs args = {unknown}, System.Windows.RoutedEvent newEvent = {unknown})	
 	PresentationCore.dll!System.Windows.UIElement.OnMouseUpThunk(object sender = {unknown}, System.Windows.Input.MouseButtonEventArgs e = {unknown})	
 	PresentationCore.dll!System.Windows.Input.MouseButtonEventArgs.InvokeEventHandler(System.Delegate genericHandler = {unknown}, object genericTarget = {unknown})	
 	PresentationCore.dll!System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate handler = {unknown}, object target = {unknown})	
 	PresentationCore.dll!System.Windows.RoutedEventHandlerInfo.InvokeHandler(object target = {unknown}, System.Windows.RoutedEventArgs routedEventArgs = {unknown})	
 	PresentationCore.dll!System.Windows.EventRoute.InvokeHandlersImpl(object source = {unknown}, System.Windows.RoutedEventArgs args = {unknown}, bool reRaised = {unknown})	
 	PresentationCore.dll!System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject sender = {unknown}, System.Windows.RoutedEventArgs args = {unknown})	
 	PresentationCore.dll!System.Windows.UIElement.RaiseTrustedEvent(System.Windows.RoutedEventArgs args = {unknown})	
 	PresentationCore.dll!System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs args = {unknown}, bool trusted = {unknown})	
 	PresentationCore.dll!System.Windows.Input.InputManager.ProcessStagingArea()	
 	PresentationCore.dll!System.Windows.Input.InputManager.ProcessInput(System.Windows.Input.InputEventArgs input = {unknown})	
 	PresentationCore.dll!System.Windows.Input.InputProviderSite.ReportInput(System.Windows.Input.InputReport inputReport = {unknown})	
 	PresentationCore.dll!System.Windows.Interop.HwndMouseInputProvider.ReportInput(System.IntPtr hwnd = {unknown}, System.Windows.Input.InputMode mode = {unknown}, int timestamp = {unknown}, System.Windows.Input.RawMouseActions actions = {unknown}, int x = {unknown}, int y = {unknown}, int wheel = {unknown})	
 	PresentationCore.dll!System.Windows.Interop.HwndMouseInputProvider.FilterMessage(System.IntPtr hwnd = {unknown}, MS.Internal.Interop.WindowMessage msg = {unknown}, System.IntPtr wParam = {unknown}, System.IntPtr lParam = {unknown}, ref bool handled = {unknown})	
 	PresentationCore.dll!System.Windows.Interop.HwndSource.InputFilterMessage(System.IntPtr hwnd = {unknown}, int msg = {unknown}, System.IntPtr wParam = {unknown}, System.IntPtr lParam = {unknown}, ref bool handled = {unknown})	
 	WindowsBase.dll!MS.Win32.HwndWrapper.WndProc(System.IntPtr hwnd = {unknown}, int msg = {unknown}, System.IntPtr wParam = {unknown}, System.IntPtr lParam = {unknown}, ref bool handled = {unknown})	
 	WindowsBase.dll!MS.Win32.HwndSubclass.DispatcherCallbackOperation(object o = {unknown})	
 	WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate callback = {unknown}, object args = {unknown}, int numArgs = {unknown})	
 	WindowsBase.dll!MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(object source = {unknown}, System.Delegate method = {unknown}, object args = {unknown}, int numArgs = {unknown}, System.Delegate catchHandler = {unknown})	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority priority = {unknown}, System.TimeSpan timeout = {unknown}, System.Delegate method = {unknown}, object args = {unknown}, int numArgs = {unknown})	
 	WindowsBase.dll!MS.Win32.HwndSubclass.SubclassWndProc(System.IntPtr hwnd = {unknown}, int msg = {unknown}, System.IntPtr wParam = {unknown}, System.IntPtr lParam = {unknown})	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame frame = {unknown})	
 	WindowsBase.dll!System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame frame = {unknown})	
 	PresentationFramework.dll!System.Windows.Application.RunDispatcher(object ignore = {unknown})	
 	PresentationFramework.dll!System.Windows.Application.RunInternal(System.Windows.Window window = {unknown})	
 	PresentationFramework.dll!System.Windows.Application.Run(System.Windows.Window window = {unknown})	
 	PresentationFramework.dll!System.Windows.Application.Run()	
 	Sample.exe!Sample.App.Main()	
 	mscorlib.dll!System.AppDomain.ExecuteAssembly(string assemblyFile = {unknown}, System.Security.Policy.Evidence assemblySecurity = {unknown}, string[] args = {unknown})	
 	Microsoft.VisualStudio.HostingProcess.Utilities.dll!Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()	
 	mscorlib.dll!System.Threading.ThreadHelper.ThreadStart_Context(object state = {unknown})	
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext = {unknown}, System.Threading.ContextCallback callback = {unknown}, object state = {unknown}, bool ignoreSyncCtx = {unknown})	
 	mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext = {unknown}, System.Threading.ContextCallback callback = {unknown}, object state = {unknown})	
 	mscorlib.dll!System.Threading.ThreadHelper.ThreadStart()	


[/h]

&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3597/</id>
    <title type="text">6 урок</title>
    <published>2013-04-18T21:25:16Z</published>
    <updated>2013-04-18T21:25:16Z</updated>
    <author>
      <name>Валентин Мирошниченко</name>
      <uri>https://stocksharp.ru/users/6156/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <content type="html">&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674131&amp;amp;id=167402168&amp;amp;hash=6a06bbd53d74a826&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:36pt"&gt;&lt;strong&gt;Темы занятия 6&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Написание сложных стратегий на основе&lt;/li&gt;
&lt;li&gt;Нескольких тайм фреймов&lt;/li&gt;
&lt;li&gt;Нескольких символов&lt;/li&gt;
&lt;li&gt;Нескольких позиций&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3596/</id>
    <title type="text">5 урок</title>
    <published>2013-04-18T17:18:17Z</published>
    <updated>2013-04-18T17:18:17Z</updated>
    <author>
      <name>Валентин Мирошниченко</name>
      <uri>https://stocksharp.ru/users/6156/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <content type="html">&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674131&amp;amp;id=167402162&amp;amp;hash=1174a061e5e5d00c&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:36pt"&gt;&lt;strong&gt;Темы занятия 5&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Использование Visual Studio 2012 совместно с Wealth lab&lt;/li&gt;
&lt;li&gt;Создание стратегии в Visual Studio 2012&lt;/li&gt;
&lt;li&gt;Отладка стратегии с помощью Visual Studio 2012&lt;/li&gt;
&lt;li&gt;Создание собственного индикатора&lt;/li&gt;
&lt;li&gt;Создание собственного графика&lt;/li&gt;
&lt;li&gt;Создание собственного PosSizer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Что почитать по теме:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.wealth-lab.com/Wiki/" rel="nofollow" target="_blank"&gt;Wealth-Lab Development Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3594/</id>
    <title type="text">Минимальный шаг цены 10 инструмента RIM3@RTS не соответствует самой цене 1</title>
    <published>2013-04-18T13:20:25Z</published>
    <updated>2013-04-18T13:20:25Z</updated>
    <author>
      <name>vk37</name>
      <uri>https://stocksharp.ru/users/6296/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Hydra" />
    <content type="html">&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;System.ArgumentException: Минимальный шаг цены 10 инструмента RIM3@RTS не соответствует самой цене 1.
Parameter name: minStepSize
   at #=qhBqOxQ5SIAbyY2y6N4BACFDFlQ_j1Q8yNEtvBOYqijcGVeDcDOSxfTG$NktAXwctZp34JExDBpwOQoEKZTC50Q==.#=q_vOdnDjt0o95tu6lpaSvEA==(List`1 #=qvi1hvqUL0DSx5vSH74$DGA==, Decimal #=qseJI7G69aeTL8l8DXFAQXw==, Decimal #=qFLu6zfeio1ecl5ZeIdHkbA==, Decimal #=q94p4WXWGblEjOsjI8IHiPw==, Security #=qv2EkoD7xxTCuL6hCJZeNmQ==)
   at #=qxG_Vfl$T_uy4vA9m$7W1_xmyAVQqcG1v4lzDFT8DC9Sb30g99WTTEntOcssQEeRcsS$u$nSq5Ifp_vaYxs9PDw==.#=qQNdI9PldNlsUIU6_Fg182g==(List`1 #=qACaLXvHVBqubi9_LnTZDVg==, #=qmNjEnDBKVrLDOU6jobs8dGnqD8CGMYHeA0hf$S93BcJOhYo0wAIzW93_dVw0fy3$ #=q5pCS7t8NtAdURybFwsgvUA==, Decimal #=qzJrezToKPF11h44hjmpyFw==)
   at #=qxG_Vfl$T_uy4vA9m$7W1_xmyAVQqcG1v4lzDFT8DC9Sb30g99WTTEntOcssQEeRcsS$u$nSq5Ifp_vaYxs9PDw==.#=qCEgRZ7zMatuTnCBjCsX89w==(List`1 #=qKT9CHNpy7v_GC687I0NC6Q==, IEnumerable`1 #=qpBurEoTpqQvEQWw_PI$n9g==, #=qmNjEnDBKVrLDOU6jobs8dGnqD8CGMYHeA0hf$S93BcJOhYo0wAIzW93_dVw0fy3$ #=qK58DZPl6Akmk3nYyjooXag==)
   at #=q96bOQJMhTwQYjnfhf17fdS0p4WDMdepDMZs$SZHQLSCC34pzcC1ASLBmFlJs2NGU2hbAw_tIB8bBBCaun7c13g==.#=qztnUT8i4uih8ghBtA8V9b5pqus8h7W$73VIkWqEhq0OCsGYxNBFYKttlfLWtdVNbIpBhJzULuLT$mHIuCRCdKonXjIKi$ku8FSX8gFmLZPc=(IEnumerable`1 #=q2LPfToWgMbY02lXn0xD70Q==, #=qz_YSKkqpEa8T1noUGgstEnzfhRAfvkQ_jma49bEj1TM1IXjZ89_cIkuk_ipRDKMj #=qp8o4WTpUtDBZ3rdzLRkXWA==)
   at #=qsYrHh4n$Wb0r_eEhp74i6jrpgrP_E1zwSLk_EwOMfquPXC4HaB6nLxCoirlmQgUa.#=qLVFHa7Avg_AjiPQ0ZyDj$w==(DateTime #=qvrlSbw2vzShjBaP0B5f4CA==, #=q_NyXhk9YU4Ct0ArVARtkBQ==[] #=qwm1Cl3Z8BSshe8r4bcS$BQ==, Boolean #=qHP6cE96hLTBDQ6s3SiXlPw==)
   at #=qsYrHh4n$Wb0r_eEhp74i6jrpgrP_E1zwSLk_EwOMfquPXC4HaB6nLxCoirlmQgUa.Save(IEnumerable`1 #=qxggFozLcdd97rChxaYKbMw==)
   at AlgoTrading.Library.StorageManagement.Hydra.SaveSecurityChange() in c:\ActiveProjects\AlgoTrading\trunk\SourceCode\Libraries\AlgoTrading.Library\StorageManagement\Hydra.cs:line 513
   at AlgoTrading.Library.StorageManagement.Hydra.&amp;lt;.ctor&amp;gt;b__e(Object sender, DoWorkEventArgs args) in c:\ActiveProjects\AlgoTrading\trunk\SourceCode\Libraries\AlgoTrading.Library\StorageManagement\Hydra.cs:line 232
   at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e)
   at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument)
   --- End of inner exception stack trace ---
   at AlgoTrading.Library.StorageManagement.Hydra.&amp;lt;.ctor&amp;gt;b__f(Object sender, RunWorkerCompletedEventArgs args) in c:\ActiveProjects\AlgoTrading\trunk\SourceCode\Libraries\AlgoTrading.Library\StorageManagement\Hydra.cs:line 257
   at System.ComponentModel.BackgroundWorker.OnRunWorkerCompleted(RunWorkerCompletedEventArgs e)
   at System.ComponentModel.BackgroundWorker.AsyncOperationCompleted(Object arg)
   at System.Threading.QueueUserWorkItemCallback.WaitCallback_Context(Object state)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
&lt;/code&gt;&lt;/pre&gt;
&lt;div class="Какая-то"&gt;&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3593/</id>
    <title type="text">4 урок</title>
    <published>2013-04-18T10:51:02Z</published>
    <updated>2013-04-18T10:51:02Z</updated>
    <author>
      <name>Самунджян Артем</name>
      <uri>https://stocksharp.ru/users/675/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <content type="html">&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167882517&amp;amp;hash=dbb03646e95aee45&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;a href="https://www.dropbox.com/s/1ktsunp5fvqon0c/Lesson%204.pptx" rel="nofollow" target="_blank"&gt;&lt;strong&gt;Презентация&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Темы занятия 4 (Интерфейсы и дженерики)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;•	Разное о классах и полиморфизме
•	Перегрузка операторов
•	Индексаторы
•	Интерфейсы, зачем и как
•	Generic types (генерики), их использование, специализация параметров&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Домашнее задание&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&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=-66674957" rel="nofollow" target="_blank"&gt;Код из урока(1)&lt;/a&gt;
&lt;a href="http://vk.com/docs?oid=-66674957" rel="nofollow" target="_blank"&gt;Код из урока(2)&lt;/a&gt;
&lt;a href="http://vk.com/docs?oid=-66674957" rel="nofollow" target="_blank"&gt;Пример решения домашнего задания&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3592/</id>
    <title type="text">4 урок</title>
    <published>2013-04-18T10:20:47Z</published>
    <updated>2013-04-18T10:20:47Z</updated>
    <author>
      <name>Валентин Мирошниченко</name>
      <uri>https://stocksharp.ru/users/6156/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <content type="html">&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674131&amp;amp;id=167402149&amp;amp;hash=ec89897d51dded02&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:36pt"&gt;&lt;strong&gt;Темы занятия 4&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Оптимизация торговых стратегий&lt;/li&gt;
&lt;li&gt;С использованием полного перебора&lt;/li&gt;
&lt;li&gt;С использованием Монте-Карло&lt;/li&gt;
&lt;li&gt;С использованием Генетического оптимизатора&lt;/li&gt;
&lt;li&gt;Плюсы и минусы разных методов оптимизации&lt;/li&gt;
&lt;li&gt;Отличие оптимизации от переоптимизации&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Что почитать по теме:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://www.ozon.ru/context/detail/id/6300525/" rel="nofollow" target="_blank"&gt;Генетические алгоритмы&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ozon.ru/context/detail/id/4847823/" rel="nofollow" target="_blank"&gt;Метод Монте-Карло в вычислительной математике. Вводный курс&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.ozon.ru/context/detail/id/1313873/" rel="nofollow" target="_blank"&gt;Разработка, тестирование, оптимизация торговых систем для биржевого трейдера&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Полезные материалы:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://megaswf.com/serve/1031310/" rel="nofollow" target="_blank"&gt;Генетический алгоритм - эволюционирующие машины&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3591/</id>
    <title type="text">Кружка S#</title>
    <published>2013-04-18T09:39:34Z</published>
    <updated>2013-04-18T09:39:34Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="клуб алготрейдеров" />
    <content type="html">&lt;p&gt;Хочу отправить &lt;a href="http://stocksharp.blogspot.ru/2011/08/blog-post.html" rel="nofollow" target="_blank"&gt;кружку тру алготрейдера&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;img src="http://4.bp.blogspot.com/-hJI2iUUrVWM/TluSVIzC7mI/AAAAAAAAAOw/-liRZIJKmt0/s320/ss_cup_1.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Предлагаю обсудить кандидатуры.&lt;/p&gt;
&lt;p&gt;ps. Кружка, кстати, уже раритет. Так как такой эмблемы не существует уже 2-ой год. Лет через 20, если не помрем, можно будет продать с молотка.[laugh]&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3590/</id>
    <title type="text">Перенос стратегий через ночь в QUik</title>
    <published>2013-04-17T14:23:07Z</published>
    <updated>2013-04-17T14:23:07Z</updated>
    <author>
      <name>dec99</name>
      <uri>https://stocksharp.ru/users/26939/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Внутри одной сессии понятно. Загрузили сохраненную стратегию и заявки.
Ночью заявки будут сняты. Что делать в этом случае?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3589/</id>
    <title type="text">Подтверждение перед закрытием</title>
    <published>2013-04-17T14:16:23Z</published>
    <updated>2013-04-17T14:16:23Z</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;Не могли бы Вы в новой версии убрать его или хотя бы добавить туда таймер, чтоб можно было корректно закрывать гидру программно?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3588/</id>
    <title type="text">Как запустить 32х битную версию?</title>
    <published>2013-04-17T11:50:28Z</published>
    <updated>2013-04-17T11:50:28Z</updated>
    <author>
      <name>XMbIPb</name>
      <uri>https://stocksharp.ru/users/6200/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Studio" />
    <content type="html">&lt;p&gt;&lt;img src="http://s41.radikal.ru/i094/1304/2c/1c18565fb130.jpg" alt="" /&gt;
64х битная запускается без проблем...
Сносить всё пробовал.. файл Studio.x86.exe из папки с базой запускать тоже пробовал и в папку самой студии копировал.. пишет: Не указан файл для запуска.. под админом тоже всё пробовал...&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3587/</id>
    <title type="text">Пропадают все события</title>
    <published>2013-04-17T06:56:50Z</published>
    <updated>2013-04-17T06:56:50Z</updated>
    <author>
      <name>zhuravl</name>
      <uri>https://stocksharp.ru/users/38994/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="AlfaDirect" />
    <content type="html">&lt;p&gt;Код:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;trader.RegisterTrades(security);
trader.CandlesFinished += trader_CandlesFinished;
trader.CandlesChanged += trader_CandlesChanged;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;        CandleManager candleManager = new CandleManager(trader);
        CandleSeries series = new CandleSeries(typeof(TimeFrameCandle), security, TimeSpan.FromMinutes(5));
        candleManager.Start(series);
        trader.RegisterCandles(security, AlfaTimeFrames.Minute5, trader.GetMarketTime(Exchange.Rts).AddMinutes(-15));
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;Все прекрасно работает, но в течение 10-15 минут. После этого пропадают события CandlesFinished и CandlesChanged навсегда! И больше никогда не вызываются.&lt;/p&gt;
&lt;p&gt;Почему?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3585/</id>
    <title type="text">3 урок</title>
    <published>2013-04-16T16:32:16Z</published>
    <updated>2013-04-16T16:32:16Z</updated>
    <author>
      <name>Валентин Мирошниченко</name>
      <uri>https://stocksharp.ru/users/6156/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <content type="html">&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674131&amp;amp;id=167402143&amp;amp;hash=eabcb8fe62386bbd&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:36pt"&gt;&lt;strong&gt;Темы занятия 3&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Создание первой стратегии&lt;/li&gt;
&lt;li&gt;С использованием мастера стратегий&lt;/li&gt;
&lt;li&gt;С использованием C# + Wealth-Lab Api
&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Домашнее задание&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="spoiler"&gt;
&lt;blockquote&gt;
&lt;p&gt;Запрограммируйте робота основанного на пересечении простых скользящих средних с использованием методов CrossOver и CrossUnder, а так же следуюших методов для входа и выхода из позиции BuyAtMarket, ShortAtMarket, ExitAtMarket. Также добавьте оптимизационные параметры для скользящих средних используя StrategyParameter и CreateParameter.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Решение домашнего задания&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
using System;
using System.Collections.Generic;
using System.Text;
using WealthLab;
using WealthLab.Indicators;
using System.Drawing;

namespace WealthLabCompile
{
	class MovingAverageCrossover : WealthScript
	{
		private StrategyParameter slowPeriod; //Объявляем период для медленной скользящей средней.
		private StrategyParameter fastPeriod; //Объявляем период для быстрой скользящей средней..

		public MovingAverageCrossover() //Создаём конструктор для инициализации переменных 
		{
			fastPeriod = CreateParameter(&amp;quot;Fast Period&amp;quot;, 20, 1, 100, 1); //Инициализируем быструю скользящая среднею. 
			slowPeriod = CreateParameter(&amp;quot;Slow Period&amp;quot;, 50, 20, 300, 5); //Инициализируем медленную скользящая среднею.       
		}

		protected override void Execute()
		{
			int fastPer = fastPeriod.ValueInt; //Получаем значение периода для быстрой скользящей средней 
			int slowPer = slowPeriod.ValueInt; //Получаем значение периода для медленной скользящей средней 
      
			SMA smaFast = SMA.Series(Close, fastPer); //Создаём простую скользящая среднею с быстрым периодом
			SMA smaSlow = SMA.Series(Close, slowPer); //Создаём простую скользящая среднею с медленным периодом

			PlotSeries(PricePane, smaFast, Color.Green, LineStyle.Solid, 2); //Наносим скользящая на график 
			PlotSeries(PricePane, smaSlow, Color.Red, LineStyle.Solid, 2); //Наносим скользящая на график

			for (int bar = Math.Max(fastPer, slowPer); bar &amp;lt; Bars.Count; bar++) //Главный цикл который последовательно перебирает все доступные данные.  
			{
				if (IsLastPositionActive) //Проверяем существует ли открытая позиция  Если да то 
				{          
					if (CrossOver(bar, smaFast, smaSlow)) //Не произошло ли пересечения скользящих снизу вверх если произошло то     
					{
						ExitAtMarket(bar + 1, LastPosition); //Закрываем открытую короткую позицию
						BuyAtMarket(bar + 1); //Открываем длинную  позицию
					}
					if (CrossUnder(bar, smaFast, smaSlow)) //Если же произошло пересечение скользящих сверху вниз тогда    
					{
						ExitAtMarket(bar + 1, LastPosition); //Закрываем открытую длинную позицию
						ShortAtMarket(bar + 1); //Открываем короткую  позицию
					}
				}
				else //Если мы находимся не в позиции     
				{
					if (CrossOver(bar, smaFast, smaSlow)) //Проверяем не произошло ли пересечения скользящих снизу вверх если произошло то  
					{
						BuyAtMarket(bar + 1); //Открываем длинную  позицию
					}
					if (CrossUnder(bar, smaFast, smaSlow)) //Если же произошло пересечение скользящих сверху вниз тогда    
					{
						ShortAtMarket(bar + 1); //Открываем короткую  позицию
					}
				}
			}
		}
	}
}

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3583/</id>
    <title type="text">Компиляция плагинов под х86 в VS 2012</title>
    <published>2013-04-15T16:39:12Z</published>
    <updated>2013-04-15T16:39:12Z</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;details&gt;&lt;summary&gt;Error	12	The command &amp;quot;call ......\plugins.bat Quik Debug&lt;/summary&gt;
&lt;p&gt;copy StockSharp.Quik.dll ........\Hydra\bin\Debug\Plugins\StockSharp.Quik.dll
copy NDde.dll ........\Hydra\bin\Debug\Plugins\NDde.dll&amp;quot; exited with code 1.	Quik&lt;/p&gt;
&lt;/details&gt;
&lt;p&gt;Вылетает при компиляции..
Пробовал поменять путь в plugins.bat на \Hydra\bin\x86%2\Plugins - безрезультатно..
Пробовал тупо перетащить плагин из папки Debug.. но гидра при работе с ним начинает выдавать это:&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;20:19:53.127|Error  |Quik      |Exception of type 'System.OutOfMemoryException' was thrown.
20:20:07.899|Error  |Unhandled Exception|System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
at System.Threading.Thread.GetCurrentThreadNative()
at System.Threading.Thread.get_CurrentThread()
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.TimerQueueTimer.CallCallback()
at System.Threading.TimerQueueTimer.Fire()
at System.Threading.TimerQueue.FireQueuedTimerCompletion(Object state)
at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()&lt;/summary&gt;
&lt;/details&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3581/</id>
    <title type="text">3 урок</title>
    <published>2013-04-15T11:29:11Z</published>
    <updated>2013-04-15T11:29:11Z</updated>
    <author>
      <name>Самунджян Артем</name>
      <uri>https://stocksharp.ru/users/675/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <content type="html">&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167881080&amp;amp;hash=cdf8af0a565cce57&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;a href="https://www.dropbox.com/s/ckvn7mqnwf4fv9f/Lesson3.pptx" rel="nofollow" target="_blank"&gt;&lt;strong&gt;Презентация&lt;/strong&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Темы занятия 3 (ООП в C#)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;•	Спецификаторы доступа
•	Полифорфизм, инкапсуляция, наследование
•	Свойства, как ими пользоваться
•	Абстрактные классы
•	Исключения
•	Nullable types, статический класс&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Домашнее задание&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;На основе кода, приведенного в проекте 1, написать простейший биржевой стакан. Класс должен уметь заполнять себя
при помощи класса заполнения и выводить значения заявок на консоль. Также предлагается попробовать реализовать тоже самое на основе проекта 2 (где абстрактный класс).&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Вложения:&lt;/strong&gt;&lt;/span&gt;
&lt;a href="http://vk.com/docs?oid=-66674957" rel="nofollow" target="_blank"&gt;Проект1&lt;/a&gt;
&lt;a href="http://vk.com/docs?oid=-66674957" rel="nofollow" target="_blank"&gt;Проект2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Пример решения домашнего задания:&lt;/strong&gt;&lt;/span&gt;
&lt;a href="http://vk.com/docs?oid=-66674957" rel="nofollow" target="_blank"&gt;Домашнее задание - 1&lt;/a&gt;
&lt;a href="http://vk.com/docs?oid=-66674957" rel="nofollow" target="_blank"&gt;Домашнее задание - 2&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3580/</id>
    <title type="text">Время заявок и сделок отстает от исторического при тестировании</title>
    <published>2013-04-15T09:42:41Z</published>
    <updated>2013-04-15T09:42:41Z</updated>
    <author>
      <name>Roma</name>
      <uri>https://stocksharp.ru/users/38969/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Время заявок и сделок отстает от исторического при тестировании.
Использую EmulationTrader, данные загружаю из истории, закаченой через Гидру.
В чем причина, как сделать правильно?
Далее куски кода.&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;private void EmulateClick(object sender, RoutedEventArgs e)
        {
            if (!Directory.Exists(tbPathHistory.Text))
            {
                System.Windows.MessageBox.Show(string.Format(&amp;quot;Directory is not found: {0}&amp;quot;, tbPathHistory.Text));
                return;
            }

            // хранилище, через которое будет производиться доступ к тиковой и котировочной базе 
            var storageRegistry = new StorageRegistry();

            // изменяем путь, используемый по умолчанию
            ((LocalMarketDataDrive)storageRegistry.DefaultDrive).Path = tbPathHistory.Text;

            // используем алфавитное хранилище
            ((LocalMarketDataDrive)storageRegistry.DefaultDrive).UseAlphabeticPath = true;

            //===============
            
            // создаем тестовый инструмент, на котором будет производится тестирование 
            _security = new Security
            {
                Id = tbSecurityId.Text,//&amp;quot;RIZ2@RTS&amp;quot;,
                // по идентификатору инструмента будет искаться папка с историческими маркет данными
                Code = tbSecurityCode.Text,//&amp;quot;RIZ2&amp;quot;,
                Name = tbSecurityName.Text,//&amp;quot;RTS-12.12&amp;quot;,
                ExchangeBoard = (ExchangeBoard)cbSecurityExchangeBoard.SelectedItem,//ExchangeBoard.Forts,
            };

            // тестовый портфель 
            _portfolio = new Portfolio { Name = tbPortfolioName.Text, BeginValue = decimal.Parse(tbPortfolioBeginValue.Text) };

            // создаем шлюз для эмуляции 
            // инициализируем настройки (инструмент в истории обновляется раз в секунду) 
            _trader = new EmulationTrader(
                new[] { _security },
                new[] { _portfolio },
                storageRegistry)
            {
                MarketTimeChangedInterval = tpTimeFrame.Value.Value.TimeOfDay,
            };

            _trader.Connect();
            _trader.StartExport();           
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
_candleSeries.ProcessCandle += candle =&amp;gt;
            {
                //Debug.Print(&amp;quot;{0}&amp;quot;, candle);

                var candleBounds = timeFrame.GetCandleBounds(_candleSeries.Security);

                if (candle.State == CandleStates.Finished || candle.OpenTime &amp;gt;= candleBounds.Min)
                {
                    var valueSma = _indicatorSma.Process(candle);
                    var chartValueSma = new ChartIndicatorValue(_indicatorSma, valueSma);

                    var valueStohastic = _indicator.Process(candle);
                    var chartValueStohastic = new ChartIndicatorValue(_indicator, valueStohastic);

                    this.GuiAsync(() =&amp;gt; Chart.ProcessValues(candle.OpenTime, new Dictionary&amp;lt;IChartElement, object&amp;gt;()
                        {
                            {_chartCandleElement, candle},
                            {_chartIndicatorSmaElement, chartValueSma},
                            {_chartIndicatorStohasticElement, chartValueStohastic}
                        }));
                }
            };

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
strategy.WhenNewMyTrades()
                        .Do(mytrades =&amp;gt; this.GuiAsync(
                            () =&amp;gt;
                                {
                                    Debug.WriteLine(&amp;quot;NewMyTrades: &amp;quot; + mytrades.Count());
                                    mytrades.ForEach(
                                        t =&amp;gt; Chart.ProcessValues(t.Trade.Time, new Dictionary&amp;lt;IChartElement, object&amp;gt;()
                                            {
                                                {_tradeElement, t}
                                            }));
                                }))
                            .Apply();

strategy.WhenOrderRegistered()
                       .Do(order =&amp;gt;
                           {
                               Debug.WriteLine(&amp;quot;OrderRegistered: &amp;quot; + order.Volume.ToString());
                               this.GuiAsync(
                                   () =&amp;gt; Chart.ProcessValues(order.Time, new Dictionary&amp;lt;IChartElement, object&amp;gt;()
                                       {
                                           {_orderElement, order}
                                       }));

                           })
                       .Apply();

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3578/</id>
    <title type="text">Коттировщик изменяет цену инструмента, стакан</title>
    <published>2013-04-15T01:58:43Z</published>
    <updated>2013-04-15T01:58:43Z</updated>
    <author>
      <name>shumak</name>
      <uri>https://stocksharp.ru/users/26776/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Доброго времени суток! Торгую по изменению стакана. Отправляю заявки на покупку или продажу по коттировщику. Первое время стратегия торгует корректно, а затем, что стакан, что инструмент начинаю показывать совершенно другие данные - это текущее время, биды аски, цену инструмента (сравниваю с квиком). Проверял таким же образом торговать с помощью простых лимитированных заявок стратегия багов не давала.
В чем может быть проблема ?&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3577/</id>
    <title type="text">Урок 1. Быстрый старт StockSharp!</title>
    <published>2013-04-13T10:45:28Z</published>
    <updated>2013-04-13T10:45:28Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.ru/users/26984/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Обучение" />
    <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=167466607&amp;amp;hash=c6ed55fcd6fec380&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Введение в StockSharp.Studio:&lt;/strong&gt;&lt;/p&gt;
&lt;iframe src="https://www.youtube.com/embed/g-g-r4qyPzI" width="640" height="390" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&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;ol&gt;
&lt;li&gt;&lt;a href="http://www.quik.ru/" rel="nofollow" target="_blank"&gt;Quik&lt;/a&gt;.Реальный Quik лучше получать у каждого брокера отдельно. &lt;a href="http://www.quik.ru/user/client/quik/how-to-start/" rel="nofollow" target="_blank"&gt;Получить демо&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.itinvest.ru/software/smartcom/" rel="nofollow" target="_blank"&gt;SmartCOM&lt;/a&gt;. Работает как служба, не требует графической платформы для ручной торговли. &lt;a href="https://itinvest.ru/open_demo/" rel="nofollow" target="_blank"&gt;Получить демо.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.alfadirect.ru/" rel="nofollow" target="_blank"&gt;Альфа-Директ&lt;/a&gt;. Демо можно получить только имея реальный счет [blink]&lt;/li&gt;
&lt;li&gt;&lt;a href="http://moex.com/s438" rel="nofollow" target="_blank"&gt;Plaza II&lt;/a&gt;. &lt;a href="http://moex.com/s438" rel="nofollow" target="_blank"&gt;Получить демо&lt;/a&gt; (написать письмо, отвечают оперативно). Примерно выглядеть должно оно &lt;a href="/file/102560/plaza.png"&gt;так&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.gtcapital.ru/fusion.html" rel="nofollow" target="_blank"&gt;Fusion/BlackWood&lt;/a&gt;. Уточнение: платформа для торговли не требуется. &lt;a href="http://www.gtcapital.ru/formdemo.html" rel="nofollow" target="_blank"&gt;Получить демо&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.finam.ru/howtotrade/tconnector/" rel="nofollow" target="_blank"&gt;Transaq&lt;/a&gt;. Если клиент Финама, логин/пароль можно получить в личном кабинете. Transaq абсолютно бесплатный.&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;a href="https://vimeo.com/channels/mainstocksharp/63811110" rel="nofollow" target="_blank"&gt;Quik(видео)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vimeo.com/66733743" rel="nofollow" target="_blank"&gt;Transaq (вебинар/видео)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vimeo.com/69308006" rel="nofollow" target="_blank"&gt;BlackWood (вебинар/видео)&lt;/a&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;p&gt;Основные концепции StockSharp&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Продукты StockSharp&lt;/li&gt;
&lt;li&gt;Архитектура StockSharp
Коннекторы&lt;/li&gt;
&lt;li&gt;Обзор коннекторов&lt;/li&gt;
&lt;li&gt;Специфика передачи данных коннекторов
Создание простого приложения&lt;/li&gt;
&lt;li&gt;Подключение к торговой платформе&lt;/li&gt;
&lt;li&gt;Получение портфелей и торговых инструментов&lt;/li&gt;
&lt;li&gt;Отправление первых заявок&lt;/li&gt;
&lt;/ul&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;Предусмотреть возможность отмены всех активных заявок.&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;a href="http://www.stocksharp.com/doc/"&gt;S# основная документация&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stocksharp.codeplex.com/" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt; S#&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://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 style="color:red"&gt;Изменения в проектах:&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;details&gt;&lt;summary&gt;Проект QuikKiller&lt;/summary&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;
        private void CancelClick(object sender, RoutedEventArgs e)
        {
            //отменить все ордера
            if(_trader!= null &amp;amp;&amp;amp; _trader.IsConnected)
                _trader.CancelOrders();
            else
                MessageBox.Show(&amp;quot;Подключитесь к Quik&amp;quot;);
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Стало:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
        private void CancelClick(object sender, RoutedEventArgs e)
        {
            //отменить все ордера
            if(_trader != null &amp;amp;&amp;amp; _trader.ConnectionState == ConnectionStates.Connected)
                _trader.CancelOrders();
            else
                MessageBox.Show(&amp;quot;Подключитесь к Quik&amp;quot;);
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Аналогично, свойство ExportState, которое может принимать те же значения что и свойство ConnectionState:
Disconnected - Не активно,
Disconnecting - В процессе отключения,
Connected - В процессе подключения,
Connecting - Подключение активно,
Failed - Ошибка подключения&lt;/p&gt;
&lt;p&gt;Таким образом, теперь нет свойства IsExportStarted, а статус экспорта данных мы можем получать от свойства ExportState.&lt;/p&gt;
&lt;p&gt;Было:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            if (_trader != null)
            {
                if (_trader.IsExportStarted)
                    _trader.StopExport();

                _trader.Disconnect();
            }
                
            base.OnClosing(e);
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Стало:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;
        protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
        {
            if (_trader != null)
            {
                if (_trader.ExportState == ConnectionStates.Connected)
                    _trader.StopExport();

                _trader.Disconnect();
            }
                
            base.OnClosing(e);
        }

&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3576/</id>
    <title type="text">this.ClosePositionByQuoting() как задать объем которым будет оперировать стратегия котирования?</title>
    <published>2013-04-12T13:31:12Z</published>
    <updated>2013-04-12T13:31:12Z</updated>
    <author>
      <name>hroft</name>
      <uri>https://stocksharp.ru/users/6439/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Сабж.&lt;/p&gt;
&lt;p&gt;Чтобы не по одному контракту покрывало.
Когда руками создаю котирование там понятно Volume задается, а здесь как.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3575/</id>
    <title type="text">Загрузка дробного объема не реализована</title>
    <published>2013-04-12T09:05:58Z</published>
    <updated>2013-04-12T09:05:58Z</updated>
    <author>
      <name>vk37</name>
      <uri>https://stocksharp.ru/users/6296/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="тестирование" />
    <content type="html">&lt;p&gt;Закачал версию 4.1.10. При тестировании на истории ошибка:::spoiler&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;[EmulationTrader. Loader thread] ERROR - Ошибка Trader.ProcessDataError
System.NotImplementedException: Загрузка дробного объема не реализована.
   at #=qMueekjLWPcRnMmpcsH_onUaT2zzAU7lnj0MzVNm1pSW$9M0K9d5ejydthObkCft5QuaV$hUcpzziXv3nxnfP1w==.#=qC6n_GzgTyB_8ETDPi3OZC0FZEmzMPEIwxiw_v5mtndY=(BitArrayReader #=q2UNJpVsOQzcRVK59nj$UtA==)
   at #=qI7bcdxtjB3xdyC5AD$khyZo6JTCSo4JTbVGKeQgsOeUVkucjnSLhWhRCxlr9KmDU.#=qFBb4sX7X7rKlOjGXZBmlhw==(#=qh5OubS5xh7gDG0OMHR6nr3xXWKlov18A9WtmobPOhe87Vn34WYGXheVdIv$w5SQ3gzW6zh3a60wj6IxqKT8F4Q== #=qinIuM$1YAOiHFq6jHhVXmA==)
   at #=qh5OubS5xh7gDG0OMHR6nr3xXWKlov18A9WtmobPOhe87Vn34WYGXheVdIv$w5SQ3gzW6zh3a60wj6IxqKT8F4Q==.MoveNext()
   at StockSharp.Algo.Testing.EmulationTrader.#=q6XpP7Wexnl9hgapLZ604gA==..ctor(IEnumerable`1 #=qy2m7DPvcSCVIplxpVfzcxQ==, Func`2 #=qNXONgQ94bKCuGMHNmg6VMQ==, Func`2 #=qDHzB3VdhAIHJnomlBx9JTw==)
   at StockSharp.Algo.Testing.EmulationTrader.#=qmM0YT4qhwVK49HND4lbLAnYn5IIWEsb$8UhwNXb5Sco=(List`1 #=qHgqgrD3dIaRcCYYXaV75bg==, Dictionary`2 #=qz9ITVEvb5_W9UCiUntrrOg==, Dictionary`2 #=qKvPu3sH4V3VNsRGojDQ4mw==, DateTime #=qqoA$aS6JooLYw81Fg6z9MA==)
   at StockSharp.Algo.Testing.EmulationTrader.#=qENUsauuFV$nrWrhWOjYHEzrsjgibi$ZYVqlHf1LjwoU=(DateTime #=qvpzyGcHFiW1xZmvEPSZPNw==)
   at StockSharp.Algo.Testing.EmulationTrader.#=qntZ_ZJIBEY0TVn_QLf9jtQ==()
&lt;/code&gt;&lt;/pre&gt;
&lt;div&gt;&lt;/div&gt;</content>
  </entry>
</feed>