﻿<?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=139</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-19T17:51:59Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=139" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/3394/</id>
    <title type="text">11 семинар ноябрь 2012</title>
    <published>2013-02-13T12:43:33Z</published>
    <updated>2013-02-13T12:43:33Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167478575&amp;amp;hash=423b7e5e8779c1b2&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167478579&amp;amp;hash=200dc2c9f28fe1a2&amp;amp;hd=3[/vk]&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;ul&gt;
&lt;li&gt;Тестирование риал тайм
Тестирование
Сохранение/чтение параметров у стратегии
Сохранение с помощью хранилищ S#&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;a href="https://vk.com/docs?oid=-66650972" rel="nofollow" target="_blank"&gt;Проекты&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3393/</id>
    <title type="text">10 семинар ноябрь 2012</title>
    <published>2013-02-13T12:41:10Z</published>
    <updated>2013-02-13T12:41:10Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167478238&amp;amp;hash=dc6da8b1b1e89c2d&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167479233&amp;amp;hash=a4dd7688c3327a4d&amp;amp;hd=3[/vk]&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;ul&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;a href="https://vk.com/docs?oid=-66650972" rel="nofollow" target="_blank"&gt;Проекты&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3392/</id>
    <title type="text">9 семинар ноябрь 2012</title>
    <published>2013-02-13T12:39:09Z</published>
    <updated>2013-02-13T12:39:09Z</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=-66650972&amp;amp;id=167478228&amp;amp;hash=3b4ba499db20fcc1&amp;amp;hd=3&amp;gt;[/vk]&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;ul&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;a href="https://vk.com/docs?oid=-66650972" rel="nofollow" target="_blank"&gt;Проекты&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3391/</id>
    <title type="text">8 семинар ноябрь 2012</title>
    <published>2013-02-13T12:36:46Z</published>
    <updated>2013-02-13T12:36:46Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167477875&amp;amp;hash=a4c651f173b6ad30&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167477880&amp;amp;hash=bc93b80690bf60f2&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;План:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Экспорт дополнительных колонок Quik&lt;/li&gt;
&lt;li&gt;&amp;lt;mark&amp;gt;Кластерные свечки&amp;lt;/mark&amp;gt;&lt;/li&gt;
&lt;li&gt;Работа со стратегиями:
&lt;ol&gt;
&lt;li&gt;Стратегия боллинджера - работа с котировщиком&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Вложения:&lt;/strong&gt;
&lt;a href="https://vk.com/docs?oid=-66650972" rel="nofollow" target="_blank"&gt;Проекты&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3390/</id>
    <title type="text">7 семинар ноябрь 2012</title>
    <published>2013-02-13T12:33:33Z</published>
    <updated>2013-02-13T12:33:33Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167477864&amp;amp;hash=52a3b2908820862a&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66650972&amp;amp;id=167477866&amp;amp;hash=66b67c8a67c1915d&amp;amp;hd=3[/vk]&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;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;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Вложения:&lt;/strong&gt;&lt;/span&gt;
&lt;a href="https://vk.com/docs?oid=-66650972" rel="nofollow" target="_blank"&gt;Проекты&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3389/</id>
    <title type="text">6 семинар ноябрь 2012</title>
    <published>2013-02-13T12:30:36Z</published>
    <updated>2013-02-13T12:30:36Z</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=-66650972&amp;amp;id=167477859&amp;amp;hash=92b3c312c353312b&amp;amp;hd=3[/vk]&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;ul&gt;
&lt;li&gt;Дочерние стратегии&lt;/li&gt;
&lt;li&gt;Свечки&lt;/li&gt;
&lt;li&gt;CandleChart&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;a href="https://vk.com/docs?oid=-66650972" rel="nofollow" target="_blank"&gt;Проекты&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3388/</id>
    <title type="text">8 семинар</title>
    <published>2013-02-13T11:29:02Z</published>
    <updated>2013-02-13T11:29: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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167896707&amp;amp;hash=831343a029441e71&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167896707&amp;amp;hash=831343a029441e71&amp;amp;hd=3[/vk]&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;ol&gt;
&lt;li&gt;Повторное рассмотрение ключевых моментов по изученному материалу (события, светофоры, TimeSpan, сохранение значений).&lt;/li&gt;
&lt;li&gt;XML-документация (см. &lt;a href="http://msdn.microsoft.com/ru-ru/library/b2s063f7.aspx" target="_blank"&gt;Справочник C#&lt;/a&gt;), использование XMLReader (см. &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.xml.xmlreader(v=vs.71).aspx" target="_blank"&gt;Справочник C#&lt;/a&gt; или &lt;a href="http://www.codeproject.com/Articles/318876/Using-the-XmlReader-class-with-Csharp" rel="nofollow" target="_blank"&gt;доп. статья&lt;/a&gt;), сериализация объектов в документы или потоки формата XML (см. &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.xml.serialization.aspx" target="_blank"&gt;Справочник C#&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;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://msdn.microsoft.com/ru-ru/library/ms233843.aspx" target="_blank"&gt;Сериализация&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Книга &amp;quot;Изучаем C# - Эндрю Стиллмен&amp;quot;: на английском языке скачать с &lt;a href="http://rutracker.org/forum/viewtopic.php?t=2982331" rel="nofollow" target="_blank"&gt;RuTracker&lt;/a&gt; или с &lt;a href="http://books.google.ru/books?id=Rnea7qV_qQAC&amp;amp;printsec=frontcover&amp;amp;hl=ru#v=onepage&amp;amp;q&amp;amp;f=false" rel="nofollow" target="_blank"&gt;Google.Books&lt;/a&gt;. &lt;a href="http://www.headfirstlabs.com/books/hfcsharp/" rel="nofollow" target="_blank"&gt;Здесь&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;a href="https://vk.com/doc-66674957_276915055" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3387/</id>
    <title type="text">7 семинар</title>
    <published>2013-02-13T11:25:24Z</published>
    <updated>2013-02-13T11:25:24Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167891624&amp;amp;hash=f0ca69e514ff475e&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167894426&amp;amp;hash=6b0bfcf795fbaf49&amp;amp;hd=3[/vk]&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;span style="font-size:24pt"&gt;&lt;strong&gt;Домашнее задание:&lt;/strong&gt;&lt;/span&gt;
Ко все методам написать тесты или хотя бы вызвать каждый из методов с различными параметрами и проверить результат &amp;quot;на глазок&amp;quot;. Но лучше написать тесты - ведь тесты дают гарантии и вселяют уверенность))&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Написать метод, вычисляющий значение простого числа по его номеру. Простое число - то которое делится лишь на 1 и на само себя.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Написать метод проверки числа на простоту. Использовать этот метод в решении предыдущего задания.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Написать метод, возвращающий все простые числа. Я не ошибся. Все. Использовать конструкцию yield return.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Написать метод MergeSum, принимающий на вход 2 последовательности интов и возвращающий одну последовательность с поэлементной суммой. Использовать yield return.&lt;/p&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://www.jetbrains.com/dotcover/" rel="nofollow" target="_blank"&gt;&lt;span style="color:darkred"&gt;dotCover&lt;/span&gt;&lt;/a&gt; (используется при тестировании).&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/ru-ru/library/9k7k7cf0.aspx" target="_blank"&gt;Информация о yield return.&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;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace App0526
{
    public class Program
    {
        // 1. Написать метод, вычисляющий значение простого числа по его номеру. 
        // Простое число - то которое делится лишь на 1 и на само себя.
         
        /// &amp;lt;summary&amp;gt;
        /// Поиск простого числа по его порядковому номеру
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;index&amp;quot;&amp;gt;Порядковый номер числа&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;Простое число&amp;lt;/returns&amp;gt;
        public static int SimpleByIndex(int index)
        {
            for (int candidate = 2; true; candidate++)
            {
                if (!IsValueSimple(candidate)) 
                    continue;
                if (index == 0)
                    return candidate;
                index--;
            }
        }

        // 2. Написать метод проверки числа на простоту. 
        // Использовать этот метод в решении предыдущего задания.
         
        /// &amp;lt;summary&amp;gt;
        /// Проверка числа на принадлежность к множеству простых чисел
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;value&amp;quot;&amp;gt;Проверяемое число&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;Является ли простым&amp;lt;/returns&amp;gt;
        public static bool IsValueSimple(int value)
        {
            if (value &amp;lt; 2) return false;
            for (int i = 2; i &amp;lt; value; i++)
                if (value%i == 0)
                    return false;
            return true;
        }

        // 3. Написать метод, возвращающий все простые числа. 
        // Я не ошибся. Все. Использовать конструкцию yield return.
        
        /// &amp;lt;summary&amp;gt;
        /// Получение всех простых чисел
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;returns&amp;gt;Все постые числа, начиная с 2&amp;lt;/returns&amp;gt;
        public static IEnumerable&amp;lt;int&amp;gt; AllSimpleNumbers()
        {
            for (int candidate = 2; true; candidate++)
            {
                if (IsValueSimple(candidate))
                    yield return candidate;
            }     
        }

        // 4. Написать метод MergeSum, принимающий на вход 2 
        // последовательности интов и возвращающий одну последовательность 
        // с поэлементной суммой. Использовать yield return.
        
        /// &amp;lt;summary&amp;gt;
        /// Слияние 2-х последовательностей поэлементным суммированием
        /// &amp;lt;/summary&amp;gt;
        /// &amp;lt;param name=&amp;quot;a&amp;quot;&amp;gt;Первая последовательность&amp;lt;/param&amp;gt;
        /// &amp;lt;param name=&amp;quot;b&amp;quot;&amp;gt;Вторая последовательность&amp;lt;/param&amp;gt;
        /// &amp;lt;returns&amp;gt;Последовательность с поэлементной суммой&amp;lt;/returns&amp;gt;
        public static IEnumerable&amp;lt;int&amp;gt; MergeSum(IEnumerable&amp;lt;int&amp;gt; a, IEnumerable&amp;lt;int&amp;gt; b)
        {
            var en1 = a.GetEnumerator();
            var en2 = b.GetEnumerator();

            while (true)
            {
                bool b1 = en1.MoveNext();
                bool b2 = en2.MoveNext();
                if (!b1 &amp;amp;&amp;amp; !b2)
                    break;

                int v1 = b1 ? en1.Current : 0;
                int v2 = b2 ? en2.Current : 0;
                yield return v1 + v2;
            }
        }

        }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Вложения&lt;/span&gt;&lt;/strong&gt;
&lt;a href="https://vk.com/doc-66674957_276915055" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3386/</id>
    <title type="text">6 семинар</title>
    <published>2013-02-13T11:22:52Z</published>
    <updated>2013-02-13T11:22:52Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167888006&amp;amp;hash=825d8ae1bd796058&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167888010&amp;amp;hash=04c36384a310b279&amp;amp;hd=3[/vk]&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;ol&gt;
&lt;li&gt;Продолжение работы с проектом SimpleTicker:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;добавление SMA-индикатора;&lt;/li&gt;
&lt;li&gt;работа с шортом и лонгом;&lt;/li&gt;
&lt;li&gt;установление направления заявки, определение цены и создание;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Рассмотрение примера библиотеки StockSharp - Sample.&lt;/li&gt;
&lt;li&gt;Подключение к своей программе индикатора SMA, прописанного в StockSharp; тестирование.&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;Дописать различные варианты тестов для проекта SimpleTicker&lt;/li&gt;
&lt;li&gt;Нарисовать иерархию классов под IIndicatorValue&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;
ValueWinnerIndicatorTest.cs:&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using SimpleTicker;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using StockSharp.Algo.Indicators;
using StockSharp.Algo.Indicators.Trend;

namespace SimpleTickerTest
{
    [TestClass()]
    public class ValueWinnerIndicatorTest
    {
        private SimpleMovingAverage _sma1;
        private SimpleMovingAverage _sma2;
        private ValueWinnerIndicator/*&amp;lt;decimal, decimal&amp;gt;*/ _winner;

        #region Дополнительные атрибуты теста
        // 
        //При написании тестов можно использовать следующие дополнительные атрибуты:
        //
        //ClassInitialize используется для выполнения кода до запуска первого теста в классе
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //ClassCleanup используется для выполнения кода после завершения работы всех тестов в классе
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //TestInitialize используется для выполнения кода перед запуском каждого теста
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //TestCleanup используется для выполнения кода после завершения каждого теста
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion

        //TestInitialize используется для выполнения кода перед запуском каждого теста
        [TestInitialize()]
        public void MyTestInitialize()
        {
            _sma1 = new SimpleMovingAverage { Length = 2 };
            _sma2 = new SimpleMovingAverage { Length = 3 };
            _winner = new ValueWinnerIndicator/*&amp;lt;decimal, decimal&amp;gt;*/(_sma1, _sma2);
        }

        [TestMethod()]
        public void IsFormedTest()
        {
            Assert.IsFalse(_winner.IsFormed);
            _winner.Process((DecimalIndicatorValue)1m);
            Assert.IsFalse(_winner.IsFormed);
            _winner.Process((DecimalIndicatorValue)2m);
            Assert.IsFalse(_winner.IsFormed);
            _winner.Process((DecimalIndicatorValue)3m);

            Assert.IsTrue(_winner.IsFormed);
        }

        [TestMethod()]
        public void ProcessWhileNotFormedTest()
        {
            IIndicatorValue biv = null;

            biv = _winner.Process((DecimalIndicatorValue)1m);
            Assert.IsFalse(biv.GetValue&amp;lt;bool&amp;gt;());
            biv = _winner.Process((DecimalIndicatorValue)2m);
            Assert.IsFalse(biv.GetValue&amp;lt;bool&amp;gt;());
            biv = _winner.Process((DecimalIndicatorValue)3m);
            Assert.IsFalse(biv.GetValue&amp;lt;bool&amp;gt;());
        }

        [TestMethod()]
        public void Process55012Test()
        {
            _winner.Process((DecimalIndicatorValue)5m);
            _winner.Process((DecimalIndicatorValue)5m);
            _winner.Process((DecimalIndicatorValue)0m);
            // Short = 2.5; Long = 3.3;

            bool firstWinWasCalled = false;
            bool secondWinWasCalled = false;
            bool? winnerChangedWasCalled = null;// Nullable&amp;lt;bool&amp;gt;
            _winner.FirstWin += () =&amp;gt; firstWinWasCalled = true;
            _winner.SecondWin += () =&amp;gt; secondWinWasCalled = true;
            _winner.WinnerChanged += isFirstWin =&amp;gt; winnerChangedWasCalled = isFirstWin;

            IIndicatorValue biv = null;
            biv = _winner.Process((DecimalIndicatorValue)12m);
            Assert.IsTrue(biv.GetValue&amp;lt;bool&amp;gt;());
            // Short = 6; Long = 17/3;

            Assert.IsTrue(firstWinWasCalled);
            Assert.IsFalse(secondWinWasCalled);
            Assert.IsNotNull(winnerChangedWasCalled);
            Assert.IsTrue(winnerChangedWasCalled.Value);
        }

        [TestMethod()]
        public void Process5550Test()
        {
            _winner.Process((DecimalIndicatorValue)5m);
            _winner.Process((DecimalIndicatorValue)5m);
            _winner.Process((DecimalIndicatorValue)5m);
            // Short = 5; Long = 5;

            bool firstWinWasCalled = false;
            bool secondWinWasCalled = false;
            bool? winnerChangedWasCalled = null;// Nullable&amp;lt;bool&amp;gt;
            _winner.FirstWin += () =&amp;gt; firstWinWasCalled = true;
            _winner.SecondWin += () =&amp;gt; secondWinWasCalled = true;
            _winner.WinnerChanged += isFirstWin =&amp;gt; winnerChangedWasCalled = isFirstWin;

            IIndicatorValue biv = null;
            biv = _winner.Process((DecimalIndicatorValue)0m);
            Assert.IsTrue(biv.GetValue&amp;lt;bool&amp;gt;());
            // Short = 2.5; Long = 3.333;

            Assert.IsFalse(firstWinWasCalled);
            Assert.IsTrue(secondWinWasCalled);
            Assert.IsNotNull(winnerChangedWasCalled);
            Assert.IsFalse(winnerChangedWasCalled.Value);
        }

        [TestMethod()]
        public void Process5555Test()
        {
            _winner.Process((DecimalIndicatorValue)5m);
            _winner.Process((DecimalIndicatorValue)5m);
            _winner.Process((DecimalIndicatorValue)5m);
            // Short = 5; Long = 5;

            bool firstWinWasCalled = false;
            bool secondWinWasCalled = false;
            bool? winnerChangedWasCalled = null;// Nullable&amp;lt;bool&amp;gt;
            _winner.FirstWin += () =&amp;gt; firstWinWasCalled = true;
            _winner.SecondWin += () =&amp;gt; secondWinWasCalled = true;
            _winner.WinnerChanged += isFirstWin =&amp;gt; winnerChangedWasCalled = isFirstWin;

            IIndicatorValue biv = null;
            biv = _winner.Process((DecimalIndicatorValue)5m);
            Assert.IsFalse(biv.GetValue&amp;lt;bool&amp;gt;());
            // Short = 5; Long = 5;

            Assert.IsFalse(firstWinWasCalled);
            Assert.IsFalse(secondWinWasCalled);
            Assert.IsNull(winnerChangedWasCalled);
        }
    }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;SmaIndicatorTest.cs:&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using SimpleTicker;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;

namespace SimpleTickerTest
{
    [TestClass()]
    public class SmaIndicatorTest
    {
        #region Дополнительные атрибуты теста
        // 
        //При написании тестов можно использовать следующие дополнительные атрибуты:
        //
        //ClassInitialize используется для выполнения кода до запуска первого теста в классе
        //[ClassInitialize()]
        //public static void MyClassInitialize(TestContext testContext)
        //{
        //}
        //
        //ClassCleanup используется для выполнения кода после завершения работы всех тестов в классе
        //[ClassCleanup()]
        //public static void MyClassCleanup()
        //{
        //}
        //
        //TestInitialize используется для выполнения кода перед запуском каждого теста
        //[TestInitialize()]
        //public void MyTestInitialize()
        //{
        //}
        //
        //TestCleanup используется для выполнения кода после завершения каждого теста
        //[TestCleanup()]
        //public void MyTestCleanup()
        //{
        //}
        //
        #endregion

        [TestMethod()]
        public void AddTestLength2()
        {
            var ind = new SmaIndicator(2);

            Assert.IsFalse(ind.IsFormed);
            ind.Process(1);
            Assert.IsFalse(ind.IsFormed);
            ind.Process(2);

            Assert.IsTrue(ind.IsFormed);
            Assert.AreEqual(1.5m, ind.LastValue);

            ind.Process(5);

            Assert.IsTrue(ind.IsFormed);
            Assert.AreEqual(3.5m, ind.LastValue);
        }

        [TestMethod()]
        public void AddTestLength3()
        {
            var ind = new SmaIndicator(3);

            Assert.IsFalse(ind.IsFormed);
            ind.Process(2);
            Assert.IsFalse(ind.IsFormed);
            ind.Process(2);
            Assert.IsFalse(ind.IsFormed);
            ind.Process(5);

            Assert.IsTrue(ind.IsFormed);
            Assert.AreEqual(3m, ind.LastValue);

            ind.Process(8);

            Assert.IsTrue(ind.IsFormed);
            Assert.AreEqual(5m, ind.LastValue);
        }
    }
}

&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Вложения&lt;/span&gt;&lt;/strong&gt;
&lt;a href="https://vk.com/doc-66674957_276915055" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3385/</id>
    <title type="text">5 семинар</title>
    <published>2013-02-13T11:20:18Z</published>
    <updated>2013-02-13T11:20:18Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167887861&amp;amp;hash=6412c1a92a61c1ec&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167887862&amp;amp;hash=98a826729b6bcf31&amp;amp;hd=3[/vk]&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;ol&gt;
&lt;li&gt;Детальное рассмотрение примера StockSharp для QUIK – SampleConsole:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Подключение к запущенному  QUIK, либо программный запуск и аутентификация.&lt;/li&gt;
&lt;li&gt;События появления портфеля, инструментов, стакана, далее – новых сделок.&lt;/li&gt;
&lt;li&gt;Добавление заявки на покупку/продажу – создание условия (отклонение от середины спреда),  при выполнении которого действие будет совершено.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Начало рассмотрения примера StockSharp для QUIK - SampleCandles:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;WPF (Windows Presentation Foundation) (см. подробнее &lt;a href="http://ru.wikipedia.org/wiki/WPF" rel="nofollow" target="_blank"&gt;Вики&lt;/a&gt; и &lt;a href="http://msdn.microsoft.com/ru-ru/library/ms754130.aspx" target="_blank"&gt;справочник C#&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Базовая настройка событий для примера SampleCandles (создание окон и добавление в них свечек).&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&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;
В проект SimpleTicker добавить разработанный ранее SMA-индикатор&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;ol&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/ru-ru/library/ms173178.aspx" target="_blank"&gt;Потоки в C#&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;pre&gt;&lt;code&gt; [Пространство имен System.Threading](http://msdn.microsoft.com/ru-ru/library/system.threading.aspx)
&lt;/code&gt;&lt;/pre&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;a href="https://vk.com/doc-66674957_276915055" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3384/</id>
    <title type="text">4 семинар</title>
    <published>2013-02-13T09:59:55Z</published>
    <updated>2013-02-13T09:59:55Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167886046&amp;amp;hash=bed15957c2efd528&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167886048&amp;amp;hash=bb4f7d12f349b7c0&amp;amp;hd=3[/vk]&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;ol&gt;
&lt;li&gt;События, операции подписывания/отписывания, вызов события.&lt;/li&gt;
&lt;li&gt;Создание приложения Windows Forms, элементы форм (&lt;a href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.button.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;Button&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.textbox.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;TextBox&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.checkbox.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;CheckBox&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.tabcontrol.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;TabControl&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.combobox.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;ComboBox&lt;/span&gt;&lt;/a&gt;), обработчики событий формы.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/ru-ru/library/2w8f0bss.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;Обработка исключений&lt;/span&gt;&lt;/a&gt; и &lt;a href="http://msdn.microsoft.com/ru-ru/library/z4c5tckx.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;их иерархия&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Начало работы с библиотекой StockSharp (ConsoleSample).&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;/li&gt;
&lt;li&gt;Реализовать срабатывание алгоритма в примере SampleConsole не по ожиданию 1000мс, а по событию изменения стакана.&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://zerich.ru/internet-trading/platforms/quik/" rel="nofollow" target="_blank"&gt;Здесь можно подать заявку на демо-счет.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.box.com/stocksharp/1/841005838" rel="nofollow" target="_blank"&gt;Скачать библиотеку StockSharp&lt;/a&gt; (достаточно архива StockSharp_4.x.xx_Sources.zip)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.stocksharp.com/doc/html/5c13da7b-b6e4-4fd4-958a-66c93c58b941.htm"&gt;&lt;span style="color:darkred"&gt;Настройка Quick для StockSharp&lt;/span&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;details&gt;&lt;summary&gt;Необходимо:&lt;/summary&gt;
&lt;ol&gt;
&lt;li&gt;Дописать:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using (var waitHandleQuotesChanged = new AutoResetEvent(false))
&lt;/code&gt;&lt;/pre&gt;
&lt;ol start="2"&gt;
&lt;li&gt;Находим строки с расчетом середины спреда и указываем подписывание на новое событие.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;           // запоминаем первоначальное значение середины спреда
                        var firstMid = _security.BestPair.MiddlePrice;
                        Console.WriteLine(&amp;quot;Первоначальное значение середины спреда {0:0.##}&amp;quot;, firstMid);

                        ///////////////////////////////
                        //Подписываемся на событие
                        _depth.QuotesChanged += () =&amp;gt;
                        {
                            waitHandleQuotesChanged.Set();
                        };
                        //////////////////////////////

                        while (true)
                        {
                            var mid = _security.BestPair.MiddlePrice;
                            Console.WriteLine(&amp;quot;Текущее значение середины спреда {0:0.##}&amp;quot;, mid);

                            // если спред вышел за пределы нашего диапазона
                            if ((firstMid * (1.0m + delta) &amp;lt;= mid) ||
                                 (firstMid * (1.0m - delta) &amp;gt;= mid))
                            {
                                var order = new Order
                                {
                                    Portfolio = _portfolio,
                                    Security = _security,
                                    Price = _security.ShrinkPrice(mid),
                                    Volume = 1,
                                    Direction = OrderDirections.Buy,
                                };

                             }

                            // ждем 1 секунду
                            //Thread.Sleep(1000);
                            //TODO: Ждать не 1 сек, а изменения стакана
                            waitHandleQuotesChanged.WaitOne();
                        }

&lt;/code&gt;&lt;/pre&gt;
&lt;/details&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Вложения&lt;/span&gt;&lt;/strong&gt;
&lt;a href="https://vk.com/doc-66674957_276915055" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3383/</id>
    <title type="text">3 семинар</title>
    <published>2013-02-13T09:48:41Z</published>
    <updated>2013-02-13T09:48:41Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167886014&amp;amp;hash=485c6ef5d7844e6f&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167886016&amp;amp;hash=d5a74cd8c3f76bb9&amp;amp;hd=3[/vk]&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;ol&gt;
&lt;li&gt;Сущность и основные принципы ООП (см. стр. 42 Шилдта или &lt;a href="http://ru.wikipedia.org/wiki/%CE%E1%FA%E5%EA%F2%ED%EE-%EE%F0%E8%E5%ED%F2%E8%F0%EE%E2%E0%ED%ED%EE%E5_%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5" rel="nofollow" target="_blank"&gt;Википедия об ООП&lt;/a&gt;):&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%90%D0%B1%D1%81%D1%82%D1%80%D0%B0%D0%BA%D1%86%D0%B8%D1%8F_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" rel="nofollow" target="_blank"&gt;Абстракция&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" rel="nofollow" target="_blank"&gt;Инкапсуляция&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9F%D0%BE%D0%BB%D0%B8%D0%BC%D0%BE%D1%80%D1%84%D0%B8%D0%B7%D0%BC_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" rel="nofollow" target="_blank"&gt;Полиморфизм&lt;/a&gt;;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://ru.wikipedia.org/wiki/%D0%9D%D0%B0%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" rel="nofollow" target="_blank"&gt;Наследование&lt;/a&gt;.2.	Тестирование программы средствами Visual Studio 2010.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Использование очередей – класс Queue. (см. &lt;a href="http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx" target="_blank"&gt;Справочник C#&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Классы: уровни доступности (см. &lt;a href="http://msdn.microsoft.com/ru-ru/library/ba0a1yw2.aspx" target="_blank"&gt;Справочник C#&lt;/a&gt;), статические и нестатические методы (см. &lt;a href="http://msdn.microsoft.com/ru-ru/library/98f28cdx.aspx" target="_blank"&gt;Справочник C#&lt;/a&gt;), интерфейсы (стр. 375 Шилдта)&lt;/li&gt;
&lt;li&gt;Делегирование (см. стр. 473 Шилдта) и лямбда-выражения (см. стр. 488 Шилдта).&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;Прочитать о следующих методах LINQ:
&lt;ul&gt;
&lt;li&gt;Take(), TakeWhile(), Skip(), SkipWhile();&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;First(), FirstOrDefault(), Min(), Max();&lt;/li&gt;
&lt;li&gt;OrderBy(), OrderByDescending(), ElementAt();&lt;/li&gt;
&lt;li&gt;ToList(), ToArray(), ToSet();&lt;/li&gt;
&lt;li&gt;При желании – GroupBy().2. Написать тесты к классу SmmIndicator по аналогии с SmaIndicator.
Тесты оформить в виде MSTest, если стоит полная версия Visual Studio или в виде самодельной функции)&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Разработать расширяющий метод (Extension method) для IEnumerable&amp;lt;int&amp;gt;, выполняющий подсчёт выражения:
КубическийКорень(Сумма(Аi * i))
Пример использования метода в коде:
var mas = new [] {5,6,7,8,9};
double res = mas.MyMagicMethod();
// res == кубкорень(5&lt;em&gt;0 + 6&lt;/em&gt;1 + 7&lt;em&gt;2 + 8&lt;/em&gt;3 + 9*4);&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://msdn.microsoft.com/ru-ru/library/bb383977.aspx" 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;div class="spoiler"&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;1. Тест для SmmIndicator:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;static class MySmmIndicatorTest
    {
        public static void AddTestLength2()
        {
            var ind = new SmmIndicator(2);

            ind.Add(3);
            ind.Add(4);

            if (!ind.IsReady)
                throw new Exception();
            if (5m != ind.Value)
                throw new Exception();

            ind.Add(10);

            if (!ind.IsReady)
                throw new Exception();
            if (Math.Abs(116m - ind.Value * ind.Value) &amp;gt; 0.000001m)
                throw new Exception();
        }

        public static void AddTestLength3()
        {
            var ind = new SmmIndicator(3);

            ind.Add(3);
            ind.Add(4);
            ind.Add(5);

            if (!ind.IsReady)
                throw new Exception();
            if (Math.Abs(50m - ind.Value * ind.Value) &amp;gt; 0.000001m)
                throw new Exception();

            ind.Add(8);

            if (!ind.IsReady)
                throw new Exception();
            if (Math.Abs(105m - ind.Value * ind.Value) &amp;gt; 0.000001m)
                throw new Exception();
        }
    }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;2. Расширяющий метод:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public static double MyMagicMethod(this IEnumerable&amp;lt;int&amp;gt; items)
        {
            //double sum = 0;
            //int index = 0;
            //foreach (var item in items)
            //{
            //    sum += item*index;
            //    index++;
            //}
            //return Math.Pow(sum, 1.0/3);

           
            // LINQ ~ SQL
            return Math.Pow(items.Select((a,i) =&amp;gt; a*i).Sum(), 1.0 / 3);
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Вложения:&lt;/span&gt;&lt;/strong&gt;
&lt;a href="https://vk.com/doc-66674957_276915055" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3382/</id>
    <title type="text">2 семинар</title>
    <published>2013-02-13T09:41:11Z</published>
    <updated>2013-02-13T09:41: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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167885989&amp;amp;hash=05201124f4ff1c84&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167885995&amp;amp;hash=c70bf43c89e43ea0&amp;amp;hd=3[/vk]&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;ol&gt;
&lt;li&gt;Контроль версий при помощи TortoiseHg.&lt;/li&gt;
&lt;li&gt;Отличие фундаментальных (int, double и т.д.) типов данных от нефундаментальных (DateTime, TimeSpan). Работа с датой-временем (см. справочник C# &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.datetime.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;DateTime&lt;/span&gt;&lt;/a&gt; и &lt;a href="http://msdn.microsoft.com/ru-ru/library/system.timespan.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;TimeSpan&lt;/span&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Массивы: цель использования, инициализация (стр. 178 Шилдта или см. справочник C# &lt;a href="http://msdn.microsoft.com/ru-ru/library/0a7fscd0.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;&amp;quot;массивы&amp;quot;&lt;/span&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Контейнеры list&amp;lt;&amp;gt;: принцип работы, отличие от массивов (см. справочник C# &lt;a href="http://msdn.microsoft.com/ru-ru/library/6sh2ey19.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;List&amp;lt;&amp;gt;&lt;/span&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Работа с файлами (FileStream - стр. 441, StreamReader - стр. 451, или см. доп. файл во вложениях).&lt;/li&gt;
&lt;li&gt;Создание пользовательского класса.&lt;/li&gt;
&lt;li&gt;Методы (стр. 155 Шилдта), конструкторы (стр. 166 Шилдта) и свойства класса (стр. 313 Шилдта) (либо по классам см. доп. файл во вложениях).&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;p&gt;Модифицировать метод SmaIndicator.Add() таким образом, чтобы избавиться от цикла при подсчёте.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Изробразить любым доступным способом иерархию классов:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;List, Set, Dictionary,&lt;/li&gt;
&lt;li&gt;SortedList, SortedSet, SortedDictionary,&lt;/li&gt;
&lt;li&gt;LinkedList, Queue, Stack, HashSet&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="3"&gt;
&lt;li&gt;Прочитать в книге главу, посвящённую классам (глава 6).&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://msdn.microsoft.com/ru-ru/library/ms173160.aspx" target="_blank"&gt;Исключения.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Оператор цикла foreach - стр. 139 Шилдта&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;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;public void Add(decimal newValue)
        {
            // 1. Получить старое значение суммы
            decimal sum = Value * _buffer.Count;

            // 2. Добавить в неё новое значение (+ в буфер)
            sum += newValue;
            _buffer.Enqueue(newValue);

            // 3. Вычесть самое старое значение (- из буфера), если надо
            if (_buffer.Count &amp;gt; Length)
                sum -= _buffer.Dequeue();

            // 4. Получить новое среднее
            Value = sum / _buffer.Count;

            // (sum*Len+x-y)/Len =&amp;gt; sum + (x-y)/Len
        }
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Вложения:&lt;/span&gt;&lt;/strong&gt;
&lt;a href="https://vk.com/doc-66674957_276915055" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3381/</id>
    <title type="text">1 семинар</title>
    <published>2013-02-13T09:35:45Z</published>
    <updated>2013-02-13T09:35:45Z</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;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Запись урока:&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 1&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167885987&amp;amp;hash=d536573735784063&amp;amp;hd=3[/vk]&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:24pt"&gt;&lt;strong&gt;Часть 2&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;[vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167885988&amp;amp;hash=edabb2295af7cb8b&amp;amp;hd=3[/vk]&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://the-programmer.ru/load/knigi_po_programmirovaju/c/gerbert_shildt_c_4_0_polnoe_rukovodstvo/72-1-0-1607" rel="nofollow" target="_blank"&gt;&lt;span style="color:darkred"&gt;&lt;span style="font-size:24pt"&gt;Герберт Шилдт - C# 4.0. Полное руководство&lt;/span&gt;&lt;/span&gt;&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;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Среда программирования Visual Studio 2010, основные возможности .&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Объявление и инициализация переменных, типы данных (см. стр. 67 Шилдта).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Операторы (см. стр. 97 Шилдта):&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Арифметические операции(+, -, /, *, %);&lt;/li&gt;
&lt;li&gt;Инкремент/Декремент (&lt;ins&gt;i, i&lt;/ins&gt;, --i, i--);&lt;/li&gt;
&lt;li&gt;Операции сравнения (==, !=, &amp;lt;, &amp;gt;, &amp;lt;=, &amp;gt;=);&lt;/li&gt;
&lt;li&gt;Логические операции(&amp;amp;&amp;amp;, ||);&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="4"&gt;
&lt;li&gt;Условный оператор и оператор ветвления:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Оператор if (см. стр. 121 Шилдта);&lt;/li&gt;
&lt;li&gt;Оператор switch (см. стр. 125);&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start="5"&gt;
&lt;li&gt;Операторы циклов:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;С предусловием - while (см. стр. 137);&lt;/li&gt;
&lt;li&gt;С постусловием - do-while (см. стр. 138);&lt;/li&gt;
&lt;li&gt;Оператор цикла for (см. стр. 129);&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;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;Прочитать об использовании модификаторов параметра ref и out (см. стр. 223 Шилдта; в Интернет-справочнике C# - &lt;a href="http://msdn.microsoft.com/ru-ru/library/14akc2c7.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;ref&lt;/span&gt;&lt;/a&gt;, &lt;a href="http://msdn.microsoft.com/ru-ru/library/ee332485.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;out&lt;/span&gt;&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Скачать программу &lt;a href="http://tortoisehg.bitbucket.org/" rel="nofollow" target="_blank"&gt;&lt;span style="color:darkred"&gt;TortoiseHg&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Дописать метод IsLeap для определения високосности года (см. &lt;a href="http://ru.wikipedia.org/wiki/%C2%E8%F1%EE%EA%EE%F1%ED%FB%E9_%E3%EE%E4" rel="nofollow" target="_blank"&gt;&lt;span style="color:darkred"&gt;статью на Википедии&lt;/span&gt;&lt;/a&gt; - &amp;quot;Год является високосным в двух случаях: либо он кратен 4, но при этом не кратен 100, либо кратен 400.&amp;quot; Другой &lt;a href="http://www.kakprosto.ru/kak-53486-kak-opredelit-visokosnyy-god" rel="nofollow" target="_blank"&gt;&lt;span style="color:darkred"&gt;пример алгоритма расчета&lt;/span&gt;&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Дописать в функцию DayInMonths параметр &amp;quot;год&amp;quot;, учесть его для февраля на основании разработанного метода.&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://www.rsdn.ru/article/mag/200401/codestyle.XML" rel="nofollow" target="_blank"&gt;&lt;span style="color:darkred"&gt;Соглашение по оформлению кода C#&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://stackoverflow.com/" rel="nofollow" target="_blank"&gt;&lt;span style="color:darkred"&gt;Форум для получения быстрых ответов&lt;/span&gt;&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/ru-ru/goglobal/bb896001.aspx" target="_blank"&gt;&lt;span style="color:darkred"&gt;Культуры.&lt;/span&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;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Homework
{
    class Program
    {
        enum Month
        {
            Jan, Feb, Mar,
            Apr, May, Jun,
            Jul, Aug, Sep,
            Oct, Nov, Dec
        }


        static bool IsLeap(int year)
        {
            // Либо ((кратен 4) но (не кратен 100)) либо (кратен 400)
            //if (((year%4 == 0) &amp;amp;&amp;amp; (year%100 != 0)) || (year%400 == 0))
            //    return true;
            //else
            //    return false;

            return ((year%4 == 0) &amp;amp;&amp;amp; (year%100 != 0)) || (year%400 == 0);
        }


        static int DaysInMonth(Month month, int year) //параметр &amp;quot;год&amp;quot; добавлен
        {
            switch (month)
            {
                case Month.Jan:
                case Month.Mar:
                case Month.May:
                case Month.Jul:
                case Month.Aug:
                case Month.Oct:
                case Month.Dec:
                    return 31;

                case Month.Apr:
                case Month.Jun:
                case Month.Sep:
                case Month.Nov:
                    return 30;

                case Month.Feb:
                    //if (IsLeap(year))
                    //    return 29;
                    //else
                    //    return 28;
                    return IsLeap(year) ? 29 : 28; 
                    // Используется тернарный оператор: 
                    // http://ru.wikipedia.org/wiki/Тернарная_условная_операция
            }

            return 0;
        }

        static void Main(string[] args)
        {
            int year;
            Month feb = Month.Feb; // переменная типа Month, в которой хранится Month.Feb, 
                                   // т.е. указан месяц февраль из перечисления enum

            bool YearIsValid;      // переменная для проверки корректности введенного года
            do
            {
                Console.Write(&amp;quot;Введите год: &amp;quot;);
                string strYear = Console.ReadLine();           // считываем год
                YearIsValid = int.TryParse(strYear, out year); // преобразуем в число и проверяем правильность преобразования
                //из строкового формата в числовой в переменную year
            } while (!YearIsValid);

            Console.WriteLine(&amp;quot;В феврале этого года {0} дней.&amp;quot;, DaysInMonth(feb, year));
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:24pt"&gt;Вложения:&lt;/span&gt;&lt;/strong&gt;
&lt;a href="https://vk.com/doc-66674957_276915055" rel="nofollow" target="_blank"&gt;Исходные коды&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3380/</id>
    <title type="text">UseLocalProtocol в новых версиях гейта</title>
    <published>2013-02-12T12:12:41Z</published>
    <updated>2013-02-12T12:12:41Z</updated>
    <author>
      <name>FiNick</name>
      <uri>https://stocksharp.ru/users/6053/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Plaza 2" />
    <content type="html">&lt;p&gt;Тех поддержка биржи утверждает, что в новых версиях гейта (1.14.8 и 1.14.11) отсутствует &amp;quot;локальный интер&amp;quot;, видимо имеется ввиду PlazaTrader.UseLocalProtocol.
Нужна ли нам сейчас эта опция? Помнится, когда-то давно она позволяла серьезно увеличить скорость отправки заявок, во много раз.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3379/</id>
    <title type="text">Котирование слишком активно</title>
    <published>2013-02-12T10:24:58Z</published>
    <updated>2013-02-12T10:24:58Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Постоянная перерегистрация заявки на одну и ту же цену&lt;/p&gt;
&lt;div class="spoiler"&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;2013/02/12 13:56:27.966|       |LQS_RIH3@RTS_SPBFUT00066|Регистрация новой Limit (0x184E1EF) заявки на Buy с ценой 158060 и объемом 1. 
2013/02/12 13:56:28.215|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085010 принята биржей.
2013/02/12 13:56:28.215|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:28.215|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:28.215|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158050 и лучший аск 158080.
2013/02/12 13:56:28.215|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085010 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:28.217|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085010 с ценой 158060 на цену 158060. 
2013/02/12 13:56:28.217|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085010 (0x184E1EF) на заявку (0x22A2FF4).
2013/02/12 13:56:28.221|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085011 на Buy с ценой 158060.
2013/02/12 13:56:28.228|       |QuikManager|236 Заявка 50085010/1994237659 Покупка Цена=158060 Объем=1 Сост=Active Бал=1
2013/02/12 13:56:28.330|Warning|LQS_RIH3@RTS_SPBFUT00066|Заявка 50085010 в процессе перерегистрации на заявку 50085011.
2013/02/12 13:56:28.417|       |QuikManager|236 Заявка 50085010/1994237659 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:28.418|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085010 больше не активна.
2013/02/12 13:56:28.419|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085010 перерегистрирована на заявку 50085011.
2013/02/12 13:56:28.420|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:28.420|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:28.420|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158080.
2013/02/12 13:56:28.420|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085011 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:28.420|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085011 с ценой 158060 на цену 158060. 
2013/02/12 13:56:28.420|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085011 (0x22A2FF4) на заявку (0x3A13AA5).
2013/02/12 13:56:28.420|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085012 на Buy с ценой 158060.
2013/02/12 13:56:28.420|       |QuikManager|198 Заявка 50085011/1994237673 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:28.660|       |QuikManager|198 Заявка 50085011/1994237673 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085011 больше не активна.
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085011 перерегистрирована на заявку 50085012.
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158080.
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085012 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085012 с ценой 158060 на цену 158060. 
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085012 (0x3A13AA5) на заявку (0x280ED11).
2013/02/12 13:56:28.661|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085013 на Buy с ценой 158060.
2013/02/12 13:56:28.661|       |QuikManager|240 Заявка 50085012/1994237696 Покупка Цена=158060 Объем=1 Сост=Active Бал=1
2013/02/12 13:56:28.850|       |QuikManager|240 Заявка 50085012/1994237696 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:28.851|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085012 больше не активна.
2013/02/12 13:56:28.852|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085012 перерегистрирована на заявку 50085013.
2013/02/12 13:56:28.852|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:28.852|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:28.852|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158080.
2013/02/12 13:56:28.852|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085013 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:28.852|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085013 с ценой 158060 на цену 158060. 
2013/02/12 13:56:28.852|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085013 (0x280ED11) на заявку (0x18F7698).
2013/02/12 13:56:28.852|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085014 на Buy с ценой 158060.
2013/02/12 13:56:28.851|       |QuikManager|189 Заявка 50085013/1994237709 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:29.017|       |QuikManager|189 Заявка 50085013/1994237709 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:29.018|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085013 больше не активна.
2013/02/12 13:56:29.096|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085013 перерегистрирована на заявку 50085014.
2013/02/12 13:56:29.096|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:29.096|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:29.096|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158080.
2013/02/12 13:56:29.096|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085014 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:29.096|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085014 с ценой 158060 на цену 158060. 
2013/02/12 13:56:29.096|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085014 (0x18F7698) на заявку (0x18D10D).
2013/02/12 13:56:29.097|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085015 на Buy с ценой 158060.
2013/02/12 13:56:29.286|       |QuikManager|244 Заявка 50085014/1994237712 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085014 больше не активна.
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085014 перерегистрирована на заявку 50085015.
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158080.
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085015 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085015 с ценой 158060 на цену 158060. 
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085015 (0x18D10D) на заявку (0x12AF190).
2013/02/12 13:56:29.287|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085016 на Buy с ценой 158060.
2013/02/12 13:56:29.288|       |QuikManager|190 Заявка 50085015/1994237733 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:29.343|Warning|LQS_RIH3@RTS_SPBFUT00066|Заявка 50085015 в процессе перерегистрации на заявку 50085016.
2013/02/12 13:56:29.549|       |QuikManager|190 Заявка 50085015/1994237733 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085015 больше не активна.
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085015 перерегистрирована на заявку 50085016.
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085016 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085016 с ценой 158060 на цену 158060. 
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085016 (0x12AF190) на заявку (0xE91115).
2013/02/12 13:56:29.550|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085017 на Buy с ценой 158060.
2013/02/12 13:56:29.550|       |QuikManager|262 Заявка 50085016/1994237739 Покупка Цена=158060 Объем=1 Сост=Active Бал=1
2013/02/12 13:56:29.768|       |QuikManager|262 Заявка 50085016/1994237739 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085016 больше не активна.
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085016 перерегистрирована на заявку 50085017.
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085017 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085017 с ценой 158060 на цену 158060. 
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085017 (0xE91115) на заявку (0x1FE8DE).
2013/02/12 13:56:29.769|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085018 на Buy с ценой 158060.
2013/02/12 13:56:29.769|       |QuikManager|218 Заявка 50085017/1994237755 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:29.949|       |QuikManager|218 Заявка 50085017/1994237755 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:29.950|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085017 больше не активна.
2013/02/12 13:56:30.057|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085017 перерегистрирована на заявку 50085018.
2013/02/12 13:56:30.057|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:30.057|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:30.057|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:30.057|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085018 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:30.057|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085018 с ценой 158060 на цену 158060. 
2013/02/12 13:56:30.057|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085018 (0x1FE8DE) на заявку (0xAA02FB).
2013/02/12 13:56:30.057|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085019 на Buy с ценой 158060.
2013/02/12 13:56:30.309|       |QuikManager|286 Заявка 50085018/1994237775 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:30.310|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085018 больше не активна.
2013/02/12 13:56:30.310|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085018 перерегистрирована на заявку 50085019.
2013/02/12 13:56:30.310|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:30.310|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:30.310|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:30.310|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085019 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:30.310|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085019 с ценой 158060 на цену 158060. 
2013/02/12 13:56:30.310|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085019 (0xAA02FB) на заявку (0x1383ED0).
2013/02/12 13:56:30.311|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085020 на Buy с ценой 158060.
2013/02/12 13:56:30.309|       |QuikManager|253 Заявка 50085019/1994237782 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:30.356|Warning|LQS_RIH3@RTS_SPBFUT00066|Заявка 50085019 в процессе перерегистрации на заявку 50085020.
2013/02/12 13:56:30.502|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085019 больше не активна.
2013/02/12 13:56:30.501|       |QuikManager|253 Заявка 50085019/1994237782 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:30.503|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085019 перерегистрирована на заявку 50085020.
2013/02/12 13:56:30.503|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:30.503|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:30.503|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:30.503|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085020 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:30.503|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085020 с ценой 158060 на цену 158060. 
2013/02/12 13:56:30.503|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085020 (0x1383ED0) на заявку (0x1FA98E).
2013/02/12 13:56:30.503|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085021 на Buy с ценой 158060.
2013/02/12 13:56:30.502|       |QuikManager|192 Заявка 50085020/1994237787 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:30.712|       |QuikManager|192 Заявка 50085020/1994237787 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:30.713|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085020 больше не активна.
2013/02/12 13:56:30.726|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085020 перерегистрирована на заявку 50085021.
2013/02/12 13:56:30.726|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:30.726|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:30.726|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:30.726|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085021 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:30.726|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085021 с ценой 158060 на цену 158060. 
2013/02/12 13:56:30.726|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085021 (0x1FA98E) на заявку (0x222CAB7).
2013/02/12 13:56:30.727|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085022 на Buy с ценой 158060.
2013/02/12 13:56:30.725|       |QuikManager|223 Заявка 50085021/1994237793 Покупка Цена=158060 Объем=1 Сост=Active Бал=1
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085021 больше не активна.
2013/02/12 13:56:30.928|       |QuikManager|223 Заявка 50085021/1994237793 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085021 перерегистрирована на заявку 50085022.
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085022 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085022 с ценой 158060 на цену 158060. 
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085022 (0x222CAB7) на заявку (0x109849E).
2013/02/12 13:56:30.930|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085023 на Buy с ценой 158060.
2013/02/12 13:56:30.929|       |QuikManager|203 Заявка 50085022/1994237798 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:31.196|       |QuikManager|203 Заявка 50085022/1994237798 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085022 больше не активна.
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085022 перерегистрирована на заявку 50085023.
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085023 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085023 с ценой 158060 на цену 158060. 
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085023 (0x109849E) на заявку (0x17FA8E4).
2013/02/12 13:56:31.198|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085024 на Buy с ценой 158060.
2013/02/12 13:56:31.197|       |QuikManager|267 Заявка 50085023/1994237808 Покупка Цена=158060 Объем=1 Сост=Active Бал=1
2013/02/12 13:56:31.370|Warning|LQS_RIH3@RTS_SPBFUT00066|Заявка 50085023 в процессе перерегистрации на заявку 50085024.
2013/02/12 13:56:31.408|       |QuikManager|267 Заявка 50085023/1994237808 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:31.409|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085023 больше не активна.
2013/02/12 13:56:31.410|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085023 перерегистрирована на заявку 50085024.
2013/02/12 13:56:31.410|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:31.410|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:31.410|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:31.410|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085024 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:31.410|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085024 с ценой 158060 на цену 158060. 
2013/02/12 13:56:31.410|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085024 (0x17FA8E4) на заявку (0x15F60FB).
2013/02/12 13:56:31.410|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085025 на Buy с ценой 158060.
2013/02/12 13:56:31.409|       |QuikManager|211 Заявка 50085024/1994237816 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:31.694|       |QuikManager|211 Заявка 50085024/1994237816 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:31.696|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085024 больше не активна.
2013/02/12 13:56:31.700|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085024 перерегистрирована на заявку 50085025.
2013/02/12 13:56:31.700|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:31.700|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:31.700|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:31.700|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085025 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:31.700|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085025 с ценой 158060 на цену 158060. 
2013/02/12 13:56:31.700|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085025 (0x15F60FB) на заявку (0x2818AA5).
2013/02/12 13:56:31.700|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085026 на Buy с ценой 158060.
2013/02/12 13:56:31.699|       |QuikManager|290 Заявка 50085025/1994237824 Покупка Цена=158060 Объем=1 Сост=Active Бал=1
2013/02/12 13:56:31.948|       |QuikManager|290 Заявка 50085025/1994237824 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085025 больше не активна.
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085025 перерегистрирована на заявку 50085026.
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085026 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085026 с ценой 158060 на цену 158060. 
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085026 (0x2818AA5) на заявку (0x3AB2874).
2013/02/12 13:56:31.950|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085027 на Buy с ценой 158060.
2013/02/12 13:56:31.949|       |QuikManager|249 Заявка 50085026/1994237839 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:32.170|       |QuikManager|249 Заявка 50085026/1994237839 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085026 больше не активна.
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085026 перерегистрирована на заявку 50085027.
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085027 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085027 с ценой 158060 на цену 158060. 
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085027 (0x3AB2874) на заявку (0x74064B).
2013/02/12 13:56:32.171|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085028 на Buy с ценой 158060.
2013/02/12 13:56:32.170|       |QuikManager|220 Заявка 50085027/1994237855 Покупка Цена=158060 Объем=1 Сост=Active Бал=1
2013/02/12 13:56:32.349|       |QuikManager|220 Заявка 50085027/1994237855 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085027 больше не активна.
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085027 перерегистрирована на заявку 50085028.
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085028 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085028 с ценой 158060 на цену 158060. 
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация проскальзывания заявки 50085028 (0x74064B) на заявку (0x34FB1DB).
2013/02/12 13:56:32.351|       |LQS_RIH3@RTS_SPBFUT00066|Перекотирование зарегистрировано для заявки 50085029 на Buy с ценой 158060.
2013/02/12 13:56:32.350|       |QuikManager|179 Заявка 50085028/1994237868 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:32.385|Warning|LQS_RIH3@RTS_SPBFUT00066|Заявка 50085028 в процессе перерегистрации на заявку 50085029.
2013/02/12 13:56:32.571|       |QuikManager|179 Заявка 50085028/1994237868 Покупка Цена=158060 Объем=1 Сост=Done Бал=1
2013/02/12 13:56:32.573|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085028 больше не активна.
2013/02/12 13:56:32.573|       |LQS_RIH3@RTS_SPBFUT00066|Заявка 50085028 перерегистрирована на заявку 50085029.
2013/02/12 13:56:32.573|       |LQS_RIH3@RTS_SPBFUT00066|Сброс счетчика ошибок регистрации с 0 до нуля.
2013/02/12 13:56:32.573|       |LQS_RIH3@RTS_SPBFUT00066|Цена текущей 158060 и лучшей 158060.
2013/02/12 13:56:32.573|       |LQS_RIH3@RTS_SPBFUT00066|Лучший бид 158060 и лучший аск 158090.
2013/02/12 13:56:32.573|       |LQS_RIH3@RTS_SPBFUT00066|Котирование заявки 50085029 на Buy с ценой 158060 объемом 1.
2013/02/12 13:56:32.573|       |LQS_RIH3@RTS_SPBFUT00066|Перерегистрация заявки 50085029 с ценой 158060 на цену 158060. 
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3378/</id>
    <title type="text">ClosePosition не работает на FORTS</title>
    <published>2013-02-12T10:18:25Z</published>
    <updated>2013-02-12T10:18:25Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;pre&gt;&lt;code class="language-csharp"&gt;_strategy.ClosePosition()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;ошибка&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;отсутствует информация о планках
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;После добавления столбцов&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MinPrice);
trader.SecuritiesTable.Columns.Add(DdeSecurityColumns.MaxPrice);
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;2013/02/12 14:05:32.584|Error  |SS_RIH3@RTS_SPBFUT00066|Заявка 50652554 (0x375CCB7) не была принята по причине StockSharp.Quik.ApiException: Код ошибки Failed Сообщение Ошибка создания заявки. [FORTS] &amp;quot;Цена сделки вне лимита&amp;quot;..
&lt;/code&gt;&lt;/pre&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3377/</id>
    <title type="text">Ошибка автоматического создания стаканов</title>
    <published>2013-02-12T08:02:53Z</published>
    <updated>2013-02-12T08:02:53Z</updated>
    <author>
      <name>VassilSanych</name>
      <uri>https://stocksharp.ru/users/6491/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Quik" />
    <content type="html">&lt;p&gt;Не знаю, актуально ли. У меня версия 4.1.7 от 01.15.
Если в квике не было стакана, при запуске Trader.RegisterMarketDepth создаётся стакан с 5-ю столбцами и сыпятся зацикленные ошибки&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-plain"&gt;System.InvalidOperationException: Ошибка построения стакана для SRH3@RTS. ---&amp;gt; System.ArgumentException: Элемент с тем же ключом уже был добавлен.

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Если у появившихся стаканов удалить крайние столбцы (оставить 3 столбца), то при повторном запуске ошибок не возникает.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3376/</id>
    <title type="text">Котирование</title>
    <published>2013-02-12T07:54:23Z</published>
    <updated>2013-02-12T07:54:23Z</updated>
    <author>
      <name>MenDel</name>
      <uri>https://stocksharp.ru/users/6356/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Если запускается котирование на покупку, то почему цена только повышается.
Почему она не понижается?
Допустим BestBid = 100
Мы ставим на 101
Потом со 100 заявку снимают.
В этой ситуации мы должны убедиться что по 101 стоит только наша заявка,
и переставить её на 100, а может и еще ниже.
Актуально для неликвидных рынков.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/3375/</id>
    <title type="text">Версия 4.2</title>
    <published>2013-02-11T21:35:16Z</published>
    <updated>2013-02-11T21:35:16Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="StockSharp" />
    <content type="html">&lt;p&gt;Сейчас в тёмных кузницах S# выплавляется новая версия 4.2. Версия будет содержать ряд революционных изменений, которые я предлагаю обсудить. На вскидку, будут следующие мажорные изменения:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Trader будет переименовал в Connector. Смысл, что SmartTrader и OECTrader - это существующие торговые марки.&lt;/li&gt;
&lt;li&gt;Английская локализация. Уже с этой версий и Студией мы планируем начать себя рекламировать в Валиноре.&lt;/li&gt;
&lt;li&gt;Новая потоковая модель, которая окончательно поставит точки над i в области синхронизации данных и событий.&lt;/li&gt;
&lt;li&gt;Облачное тестирование.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Конечно, будут и другие фичи (как и новые коннекторы), но это, пожалуй, те, что затронут именно существующих пользователей. Понимаю, что у некоторых пользователей изменения вызывают опаску, но у нас как в поговорке &amp;quot;все что ни делается - все к лучшему&amp;quot;. Изменения идут для оптимизации работы с платформой. Надеюсь, предварительная беседа снимет множество будущих проблем с переходом на новые версии.&lt;/p&gt;
</content>
  </entry>
</feed>