﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">3 семинар</title>
  <id>~/topic/3383/3-seminar/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-15T10:43:55Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=3383" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/23995/</id>
    <title type="text">Запись урока: Часть 1 [vk]http://vk.com/video_ext.php?oid=-66674957&amp;amp;id=167886014&amp;amp;hash=485c6ef5d7844e...</title>
    <published>2013-02-13T09:48:41Z</published>
    <updated>2014-03-06T09:16:30Z</updated>
    <author>
      <name>Самунджян Артем</name>
      <uri>https://stocksharp.com/users/675/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <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&lt;int&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>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/25199/</id>
    <title type="text">UsilaDobry: С чем может быть связано расхождение в значениях линий Болленжера в моем коде и в термин...</title>
    <published>2013-04-06T08:56:37Z</published>
    <updated>2013-04-06T08:56:37Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(25198)" rel="nofollow" target="_blank"&gt;UsilaDobry&lt;/a&gt;:&lt;/strong&gt;
С чем может быть связано расхождение в значениях линий Болленжера в моем коде и в терминале Alfa-Direct?
Два варианта, либо в Alfa-Direct этот индикатор реализован с каким-то нюансом, либо Вы ошиблись в алгоритме.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/25198/</id>
    <title type="text">С чем может быть связано расхождение в значениях линий Болленжера в моем коде и в терминале Alfa-Dir...</title>
    <published>2013-04-06T08:38:26Z</published>
    <updated>2013-04-06T08:38:26Z</updated>
    <author>
      <name>UsilaDobry</name>
      <uri>https://stocksharp.com/users/28825/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;С чем может быть связано расхождение в значениях линий Болленжера в моем коде и в терминале Alfa-Direct?
Мой код расчета:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;        MeddleBB = sum / _buffer.Count;
        decimal variance = 0;
        foreach (int x in _buffer)
            variance += (decimal)Math.Pow((double)(x - MeddleBB), 2); 
        StdDev = (decimal) Math.Sqrt((double)(variance / (Length - 1)));
        TopBB = MeddleBB + (D * StdDev);
        LowerBB = MeddleBB - (D * StdDev);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;В результате у меня получается на пятиминутках 01.04.2013 в 11:35 верхняя - 140814, средняя 140527, нижняя 140239.
В терминале AD: верхняя - 140943; средняя - 140578; нижняя - 140212.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/25195/</id>
    <title type="text">UsilaDobry: В ДЗ после 3-го семинара надо было изучить ряд методов класса IEnumerable, среди которых...</title>
    <published>2013-04-06T03:22:11Z</published>
    <updated>2013-04-06T03:22:11Z</updated>
    <author>
      <name>IvanB</name>
      <uri>https://stocksharp.com/users/26984/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(25192)" rel="nofollow" target="_blank"&gt;UsilaDobry&lt;/a&gt;:&lt;/strong&gt;
В ДЗ после 3-го семинара надо было изучить ряд методов класса IEnumerable, среди которых метод ToSet(). Его в библиотеке MSDN нет.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Несколько замечаний:
Если быть точным, то IEnumerable не просто класс, а интерфейс (или чисто абстрактный класс).
Нужно изучить не только интерфейс IEnumerable, а методы, которые перечислены в задании, а они реализованы не в IEnumerable (т.к. это интерфейс, в нем не может быть реализаций, а в данном случае и объявлений методов которые приведены в задании).&lt;/p&gt;
&lt;p&gt;Ну в общем Вы правы, что метода ToSet() нет в стандартном .NET, в частности в версии 4.5. Это было специально добавлено в задание, чтобы ученики могли ориентироваться в .NET, получили некоторый опыт в этом.&lt;/p&gt;
&lt;p&gt;Если все-таки необходимо преобразовать в коллекцию ISet&amp;lt;&amp;gt;, то можно воспользоваться готовыми расширениями LING, например MoreLINQ, или самому реализовать это расширение для IEnumerable&amp;lt;&amp;gt;.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/25192/</id>
    <title type="text">В ДЗ после 3-го семинара надо было изучить ряд методов класса IEnumerable, среди которых метод ToSet...</title>
    <published>2013-04-05T15:12:00Z</published>
    <updated>2013-04-05T15:12:00Z</updated>
    <author>
      <name>UsilaDobry</name>
      <uri>https://stocksharp.com/users/28825/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;В ДЗ после 3-го семинара надо было изучить ряд методов класса IEnumerable, среди которых метод ToSet(). Его в библиотеке MSDN нет.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>