обучение. StockSharphttps://stocksharp.ru/handlers/atom.ashx?category=tag&id=обучение&type=forum&page=10Copyright @ StockSharp Platform LLC 2010 - 20242024-03-29T05:07:56Zhttps://stocksharp.ru/images/logo.pnghttps://stocksharp.ru/topic/3384/4 семинар2013-02-13T09:59:55Z2013-02-13T09:59:55ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru<span style="font-size:120%"><b>Запись урока: </b></span><br /><br /><span style="font-size:120%"><b>Часть 1 </b></span><br /><br />[vk]http://vk.com/video_ext.php?oid=-66674957&id=167886046&hash=bed15957c2efd528&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>Часть 2 </b></span><br /><br />[vk]http://vk.com/video_ext.php?oid=-66674957&id=167886048&hash=bb4f7d12f349b7c0&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>Темы занятия:</b></span><br />1. События, операции подписывания/отписывания, вызов события.<br />2. Создание приложения Windows Forms, элементы форм (<a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.button.aspx" title="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.button.aspx"><span style="color:darkred">Button</span></a>, <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.textbox.aspx" title="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.textbox.aspx"><span style="color:darkred">TextBox</span></a>, <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.checkbox.aspx" title="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.checkbox.aspx"><span style="color:darkred">CheckBox</span></a>, <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.tabcontrol.aspx" title="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.tabcontrol.aspx"><span style="color:darkred">TabControl</span></a>, <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.combobox.aspx" title="http://msdn.microsoft.com/ru-ru/library/system.windows.forms.combobox.aspx"><span style="color:darkred">ComboBox</span></a>), обработчики событий формы.<br />3. <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/2w8f0bss.aspx" title="http://msdn.microsoft.com/ru-ru/library/2w8f0bss.aspx"><span style="color:darkred">Обработка исключений</span></a> и <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/z4c5tckx.aspx" title="http://msdn.microsoft.com/ru-ru/library/z4c5tckx.aspx"><span style="color:darkred">их иерархия</span></a>.<br />4. Начало работы с библиотекой StockSharp (ConsoleSample).<br /><br /><span style="font-size:120%"><b>Домашнее задание:</b></span><br />1. Нарисовать часть иерархии исключений, чтобы представлять, кто на ком стоит.<br />2. Реализовать срабатывание алгоритма в примере SampleConsole не по ожиданию 1000мс, а по событию изменения стакана.<br /><br /><span style="font-size:120%"><b>Полезные материалы:</b></span><br />1. <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADxQZTy2o4Oc4lLYgR71i6gL0YolyelOyoqJYSlnXfW2ruYuIG5hJcI00DN3WLOTPXRz4C4-leNz9sg68Uy0ZpY" title="http://zerich.ru/internet-trading/platforms/quik/">Здесь можно подать заявку на демо-счет.</a><br />2. <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAA2Dytq3nNHUYJvxjEs-wKgkJXr_oJ7jts4m8P_n-Pl23fiGWJVyrTByyq-RIJdG6w" title="https://www.box.com/stocksharp/1/841005838">Скачать библиотеку StockSharp</a> (достаточно архива StockSharp_4.x.xx_Sources.zip)<br />3. <a href="http://www.stocksharp.com/doc/html/5c13da7b-b6e4-4fd4-958a-66c93c58b941.htm" title="http://www.stocksharp.com/doc/html/5c13da7b-b6e4-4fd4-958a-66c93c58b941.htm"><span style="color:darkred">Настройка Quick для StockSharp</span></a><br /><br /><span style="font-size:120%"><b>Решение домашней задачи:</b></span><br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_8ac42b391cfb46a8a8dca5b1702213e4');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_8ac42b391cfb46a8a8dca5b1702213e4' style='display:none'><br />Необходимо:<br />1. Дописать:<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
using (var waitHandleQuotesChanged = new AutoResetEvent(false))</pre>
</div></div><br />2. Находим строки с расчетом середины спреда и указываем подписывание на новое событие.<br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
// запоминаем первоначальное значение середины спреда
var firstMid = _security.BestPair.MiddlePrice;
Console.WriteLine("Первоначальное значение середины спреда {0:0.##}", firstMid);
///////////////////////////////
//Подписываемся на событие
_depth.QuotesChanged += () =>
{
waitHandleQuotesChanged.Set();
};
//////////////////////////////
while (true)
{
var mid = _security.BestPair.MiddlePrice;
Console.WriteLine("Текущее значение середины спреда {0:0.##}", mid);
// если спред вышел за пределы нашего диапазона
if ((firstMid * (1.0m + delta) <= mid) ||
(firstMid * (1.0m - delta) >= 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();
}
</pre>
</div></div><br /></div><br /><br /><b><span style="font-size:120%">Вложения</span></b><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmgzHwBS6gmZ6H1CH1BJ_rN_4qYbIz0eRYJiis-L8IAwA" title="https://vk.com/doc-66674957_276915055">Исходные коды</a>https://stocksharp.ru/topic/3383/3 семинар2013-02-13T09:48:41Z2013-02-13T09:48:41ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru<span style="font-size:120%"><b>Запись урока: </b></span><br /><br /><span style="font-size:120%"><b>Часть 1 </b></span><br /><br />[vk]http://vk.com/video_ext.php?oid=-66674957&id=167886014&hash=485c6ef5d7844e6f&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>Часть 2 </b></span><br /><br />[vk]http://vk.com/video_ext.php?oid=-66674957&id=167886016&hash=d5a74cd8c3f76bb9&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>Темы занятия:</b></span><br /><br />1. Сущность и основные принципы ООП (см. стр. 42 Шилдта или <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAEaGmvoumqQV_3sIYeBdThYsD1oiuIli87Mns2dDNxwB3WvjYOD8o-ervjE2W00e1km20Juu8RzI9EZB1EnESmF8IdsIlwmLKvyj0nMKn6DhehXk8msfwdHLhG4uHKgM06PGSMr1ej7Z9xweE65CDMBCXV_vUPuac88FGewCq4Kx80Rz0TWj2nUBh12drok0PrSZ6wnmQT9-QfeVFyAptcAUutHPeQcR9kr_fdcGK2p_p34qoDyZ7k64vxB4AV88OcqjnSa8IinYtpFFYmWkYyO0ZQ_H-u_smZKtq2_8z2Tkt7occNADG-EpBVDZwQuzQ" title="http://ru.wikipedia.org/wiki/%25CE%25E1%25FA%25E5%25EA%25F2%25ED%25EE-%25EE%25F0%25E8%25E5%25ED%25F2%25E8%25F0%25EE%25E2%25E0%25ED%25ED%25EE%25E5_%25EF%25F0%25EE%25E3%25F0%25E0%25EC%25EC%25E8%25F0%25EE%25E2%25E0%25ED%25E8%25E5">Википедия об ООП</a>): <br /><ul><li><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAEaGmvoumqQV_3sIYeBdThBhiuItNCcGsIy35jEdFoiZXQ3aXlNfa4zBy7TaPyAeIuEMDQiyYLwCkldWIRb-c0Uxlhn2YurGg0LQXasJHt4e5jyiKgPuqv-x19qj5Nu5ctTFY4aGqxeS6YabHAawOkvydwFM1ryAtR9yD6CHgicg" title="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">Абстракция</a>;<br /><li><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAEaGmvoumqQV_3sIYeBdThBhiuItNCcGsIy35jEdFoiXLaZId9kxBXUEvvIJvceuYVBLPvttFO4cog0nhNo7yAsqkVkzG2o2JzKf2jbEPMdLzt-1dhuBIpfQE6lSyBACxACEUO9D9SCyCKxkO7DWLC_oIw9_XIy5l0XpglcE4UXBllvX34Wg9gppZHVwiGfKmD9ZyEezKoJ2wzKkmXEnNSKgByin4fLa20AAc4dwjY1K_qJT_8sG6kSXljvHXSGar7vhaYobd566aOwSXRlNC2" title="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)">Инкапсуляция</a>;<br /><li><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAEaGmvoumqQV_3sIYeBdThBhiuItNCcGsIy35jEdFoiQzZC8tOVdfGLMiH0m6nl2W3BR5kNGpWIkJ5UTTe6zImaFFHONYVLcEwRrdRrZUY8fLp769joj1yWKOdC-NTKx6SfnQXfbY3twqN9RjWllNADT2r6y1lXWC3dT9ARknTHgytLmmB1bpzGzzZGnwBNmIKFKK0D249_MFBtIjsFq_FBEsrgp8F6DjvAPQ0qQsijY9REzC9WUzJUxvRnZD9l28Z883j3urtcPQI9uIWhaTp" title="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)">Полиморфизм</a>;<br /><li><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAEaGmvoumqQV_3sIYeBdThBhiuItNCcGsIy35jEdFoibE-1nyOyIX2-LU89_083OeAOrK_DtzFSV_DLvBgtfyGLlJJakrAI2-yKxyL8LmA7-1N5pK6IfJyTSm0E_Az-1ewPh6EZlTZooROhm0eGcJer1VK4LbxYJVTqf-tADh2xGqvLg6AurtqjijWsVpPpXX6KxotAMx7pRaFUC2EXen_IrGV-76xlATq56aWmwU_4EvT84OQ6NzCE47Rz-kzRm2oSw1vI63yAcZV1P01RnVg" title="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)">Наследование</a>.</ul>2. Тестирование программы средствами Visual Studio 2010.<br />3. Использование очередей – класс Queue. (см. <a target="_blank" href="http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx" title="http://msdn.microsoft.com/en-us/library/system.collections.queue.aspx">Справочник C#</a>)<br />4. Классы: уровни доступности (см. <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/ba0a1yw2.aspx" title="http://msdn.microsoft.com/ru-ru/library/ba0a1yw2.aspx">Справочник C#</a>), статические и нестатические методы (см. <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/98f28cdx.aspx" title="http://msdn.microsoft.com/ru-ru/library/98f28cdx.aspx">Справочник C#</a>), интерфейсы (стр. 375 Шилдта)<br />5. Делегирование (см. стр. 473 Шилдта) и лямбда-выражения (см. стр. 488 Шилдта).<br /><br /><br /><span style="font-size:120%"><b>Домашнее задание:</b></span><br />1. Прочитать о следующих методах LINQ:<br /> <ul><li>Take(), TakeWhile(), Skip(), SkipWhile(); <br /> <li>First(), FirstOrDefault(), Min(), Max(); <br /> <li>OrderBy(), OrderByDescending(), ElementAt(); <br /> <li>ToList(), ToArray(), ToSet();<br /> <li>При желании – GroupBy().</ul>2. Написать тесты к классу SmmIndicator по аналогии с SmaIndicator.<br />Тесты оформить в виде MSTest, если стоит полная версия Visual Studio или в виде самодельной функции)<br /><br />3. Разработать расширяющий метод (Extension method) для IEnumerable<int>, выполняющий подсчёт выражения:<br />КубическийКорень(Сумма(Аi * i))<br />Пример использования метода в коде:<br />var mas = new [] {5,6,7,8,9};<br />double res = mas.MyMagicMethod();<br />// res == кубкорень(5*0 + 6*1 + 7*2 + 8*3 + 9*4);<br /><br /><br /><span style="font-size:120%"><b>Полезные материалы:</b></span><br />1. <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/bb383977.aspx" title="http://msdn.microsoft.com/ru-ru/library/bb383977.aspx">Методы расширения</a>.<br /><br /><span style="font-size:120%"><b>Решение домашней задачи:</b></span><br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_cc9a1b7059c54b45baf6c346655e4fbf');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_cc9a1b7059c54b45baf6c346655e4fbf' style='display:none'><br /><em><b>1. Тест для SmmIndicator:</b></em><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
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) > 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) > 0.000001m)
throw new Exception();
ind.Add(8);
if (!ind.IsReady)
throw new Exception();
if (Math.Abs(105m - ind.Value * ind.Value) > 0.000001m)
throw new Exception();
}
}</pre>
</div></div><br /><b><em>2. Расширяющий метод:</em></b><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public static double MyMagicMethod(this IEnumerable<int> 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) => a*i).Sum(), 1.0 / 3);
}</pre>
</div></div><br /></div><br /><br /><b><span style="font-size:120%">Вложения:</span></b><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmgzHwBS6gmZ6H1CH1BJ_rN_4qYbIz0eRYJiis-L8IAwA" title="https://vk.com/doc-66674957_276915055">Исходные коды</a>https://stocksharp.ru/topic/3382/2 семинар2013-02-13T09:41:11Z2013-02-13T09:41:11ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru<span style="font-size:120%"><b>Запись урока: </b></span><br /><br /><span style="font-size:120%"><b>Часть 1 </b></span><br /><br />[vk]http://vk.com/video_ext.php?oid=-66674957&id=167885989&hash=05201124f4ff1c84&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>Часть 2 </b></span><br /><br />[vk]http://vk.com/video_ext.php?oid=-66674957&id=167885995&hash=c70bf43c89e43ea0&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>Темы занятия:</b></span><br />1. Контроль версий при помощи TortoiseHg.<br />2. Отличие фундаментальных (int, double и т.д.) типов данных от нефундаментальных (DateTime, TimeSpan). Работа с датой-временем (см. справочник C# <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/system.datetime.aspx" title="http://msdn.microsoft.com/ru-ru/library/system.datetime.aspx"><span style="color:darkred">DateTime</span></a> и <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/system.timespan.aspx" title="http://msdn.microsoft.com/ru-ru/library/system.timespan.aspx"><span style="color:darkred">TimeSpan</span></a>).<br />3. Массивы: цель использования, инициализация (стр. 178 Шилдта или см. справочник C# <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/0a7fscd0.aspx" title="http://msdn.microsoft.com/ru-ru/library/0a7fscd0.aspx"><span style="color:darkred">"массивы"</span></a>).<br />4. Контейнеры list<>: принцип работы, отличие от массивов (см. справочник C# <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/6sh2ey19.aspx" title="http://msdn.microsoft.com/ru-ru/library/6sh2ey19.aspx"><span style="color:darkred">List<></span></a>).<br />5. Работа с файлами (FileStream - стр. 441, StreamReader - стр. 451, или см. доп. файл во вложениях).<br />6. Создание пользовательского класса.<br />7. Методы (стр. 155 Шилдта), конструкторы (стр. 166 Шилдта) и свойства класса (стр. 313 Шилдта) (либо по классам см. доп. файл во вложениях).<br /><br /><br /><span style="font-size:120%"><b>Домашнее задание:</b></span><br />1. Модифицировать метод SmaIndicator.Add() таким образом, чтобы избавиться от цикла при подсчёте.<br /><br />2. Изробразить любым доступным способом иерархию классов:<br /><ul><li>List, Set, Dictionary, <br /><li>SortedList, SortedSet, SortedDictionary,<br /><li>LinkedList, Queue, Stack, HashSet</ul><br />3. Прочитать в книге главу, посвящённую классам (глава 6).<br /><br /><span style="font-size:120%"><b>Полезные материалы:</b></span><br />1. <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/ms173160.aspx" title="http://msdn.microsoft.com/ru-ru/library/ms173160.aspx">Исключения.</a><br />2. Оператор цикла foreach - стр. 139 Шилдта<br /><br /><span style="font-size:120%"><b>Решение домашней задачи:</b></span><br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_e833249c05e84bcc88d6eb8690a716b1');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_e833249c05e84bcc88d6eb8690a716b1' style='display:none'><br /><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
public void Add(decimal newValue)
{
// 1. Получить старое значение суммы
decimal sum = Value * _buffer.Count;
// 2. Добавить в неё новое значение (+ в буфер)
sum += newValue;
_buffer.Enqueue(newValue);
// 3. Вычесть самое старое значение (- из буфера), если надо
if (_buffer.Count > Length)
sum -= _buffer.Dequeue();
// 4. Получить новое среднее
Value = sum / _buffer.Count;
// (sum*Len+x-y)/Len => sum + (x-y)/Len
}</pre>
</div></div><br /></div><br /><br /><b><span style="font-size:120%">Вложения:</span></b><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmgzHwBS6gmZ6H1CH1BJ_rN_4qYbIz0eRYJiis-L8IAwA" title="https://vk.com/doc-66674957_276915055">Исходные коды</a>https://stocksharp.ru/topic/3381/1 семинар2013-02-13T09:35:45Z2013-02-13T09:35:45ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru<span style="font-size:120%"><b>Запись урока: </b></span><br /><br /><span style="font-size:120%"><b>Часть 1 </b></span><br /><br />[vk]http://vk.com/video_ext.php?oid=-66674957&id=167885987&hash=d536573735784063&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>Часть 2 </b></span><br /><br />[vk]http://vk.com/video_ext.php?oid=-66674957&id=167885988&hash=edabb2295af7cb8b&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>Рекомендованный учебник: </b></span><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACAnc4zGVqA7O2wLVPsKrYbm2sv6Uhbt8yrc360PlkauOIfJnLuW-OKJlZZHBE4n3LAG4D5vnJRCAP_sRBgZHW_fq35d5qmVp_9OZpmjBgS3DlNNF3Th_-2WmfqaCGYMOs9oxnTRedEW2k2pg4R8RP7" title="http://the-programmer.ru/load/knigi_po_programmirovaju/c/gerbert_shildt_c_4_0_polnoe_rukovodstvo/72-1-0-1607"><span style="color:darkred"><span style="font-size:120%">Герберт Шилдт - C# 4.0. Полное руководство</span></span></a> - также учебник прикреплен к теме.<br /><br /><br /><span style="font-size:120%"><b>Темы занятия:</b></span><br />1. Среда программирования Visual Studio 2010, основные возможности .<br /><br />2. Объявление и инициализация переменных, типы данных (см. стр. 67 Шилдта).<br /><br />3. Операторы (см. стр. 97 Шилдта):<br /><ul><li>Арифметические операции(+, -, /, *, %);<br /><li>Инкремент/Декремент (++i, i++, --i, i--);<br /><li>Операции сравнения (==, !=, <, >, <=, >=);<br /><li>Логические операции(&&, ||);</ul><br />4. Условный оператор и оператор ветвления:<br /><ul><li>Оператор if (см. стр. 121 Шилдта);<br /><li>Оператор switch (см. стр. 125);</ul><br />5. Операторы циклов:<br /><ul><li>С предусловием - while (см. стр. 137);<br /><li>С постусловием - do-while (см. стр. 138);<br /><li>Оператор цикла for (см. стр. 129);<br /></ul><br /><br /><span style="font-size:120%"><b>Код с занятия: </b></span>см. Вложения<br /><br /><span style="font-size:120%"><b>Домашнее задание:</b></span><br />1. Прочитать об использовании модификаторов параметра ref и out (см. стр. 223 Шилдта; в Интернет-справочнике C# - <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/14akc2c7.aspx" title="http://msdn.microsoft.com/ru-ru/library/14akc2c7.aspx"><span style="color:darkred">ref</span></a>, <a target="_blank" href="http://msdn.microsoft.com/ru-ru/library/ee332485.aspx" title="http://msdn.microsoft.com/ru-ru/library/ee332485.aspx"><span style="color:darkred">out</span></a>)<br />2. Скачать программу <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAA1QRKB3Xb2sd5y-jGXc2Enonj-OjpLY1qrLsFuAr1yzzret1QNubsN-Wi6PkGS_58" title="http://tortoisehg.bitbucket.org/"><span style="color:darkred">TortoiseHg</span></a>.<br />3. Дописать метод IsLeap для определения високосности года (см. <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAAEaGmvoumqQV_3sIYeBdThYsD1oiuIli87Mns2dDNxwADv9naFt-S8sqsqzJFxEW4a_uSfAB9w-VRpyORjX31M76fZsN8OK7mpvp81XYGhbFWSAQ6gx2KbiwDB8BVPQJs" title="http://ru.wikipedia.org/wiki/%25C2%25E8%25F1%25EE%25EA%25EE%25F1%25ED%25FB%25E9_%25E3%25EE%25E4"><span style="color:darkred">статью на Википедии</span></a> - "Год является високосным в двух случаях: либо он кратен 4, но при этом не кратен 100, либо кратен 400." Другой <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADMPpYbXsGIqEEEcIKiEVegYklb75mKKBXdPGcG8vgDWu32ha3wwLnPE3i3Rh-yMkVjImAIb2uO-qY39EzzAOXO" title="http://www.kakprosto.ru/kak-53486-kak-opredelit-visokosnyy-god"><span style="color:darkred">пример алгоритма расчета</span></a>).<br />4. Дописать в функцию DayInMonths параметр "год", учесть его для февраля на основании разработанного метода.<br /><br /><span style="font-size:120%"><b>Полезные ссылки:</b></span><br />1. <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACea69Yubj4rTHN-y05qrso-iDxxf0jymUP8bAGqox8n5lDr4yANJrcrz7QT7lgxRwoFZBYql0DwNvYjcIH63Uc" title="http://www.rsdn.ru/article/mag/200401/codestyle.XML%20"><span style="color:darkred">Соглашение по оформлению кода C#</span></a>.<br />2. <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADaUgqeUiMvqHjAqLN3xr_ck2nkzkKKdLfZxP4NaQVjWg" title="http://stackoverflow.com/"><span style="color:darkred">Форум для получения быстрых ответов</span></a>.<br />3. <a target="_blank" href="http://msdn.microsoft.com/ru-ru/goglobal/bb896001.aspx" title="http://msdn.microsoft.com/ru-ru/goglobal/bb896001.aspx"><span style="color:darkred">Культуры.</span></a><br /><br /><span style="font-size:120%"><b>Пример решения домашней задачи.</b></span><br /><div class='spoilertitle'><input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_4fe8493efcff40ef90501189ccd9a76f');" title='Показать спойлер' /></div><div class='spoilerbox' id='spolier_4fe8493efcff40ef90501189ccd9a76f' style='display:none'><div class="code"><strong>Код</strong><div class="innercode"><pre class="brush:csharp">
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) && (year%100 != 0)) || (year%400 == 0))
// return true;
//else
// return false;
return ((year%4 == 0) && (year%100 != 0)) || (year%400 == 0);
}
static int DaysInMonth(Month month, int year) //параметр "год" добавлен
{
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;
// Используется тернарный оператор:
// ÷ñÒ1795808949êÖ0õæ÷http://ru.wikipedia.org/...арная_условная_операция
÷ñÒ1795808949êÖ1õæ÷
}
return 0;
}
static void Main(string[] args)
{
int year;
Month feb = Month.Feb; // переменная типа Month, в которой хранится Month.Feb,
// т.е. указан месяц февраль из перечисления enum
bool YearIsValid; // переменная для проверки корректности введенного года
do
{
Console.Write("Введите год: ");
string strYear = Console.ReadLine(); // считываем год
YearIsValid = int.TryParse(strYear, out year); // преобразуем в число и проверяем правильность преобразования
//из строкового формата в числовой в переменную year
} while (!YearIsValid);
Console.WriteLine("В феврале этого года {0} дней.", DaysInMonth(feb, year));
}
}
}</pre>
</div></div></div><br /><br /><b><span style="font-size:120%">Вложения:</span></b><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmgzHwBS6gmZ6H1CH1BJ_rN_4qYbIz0eRYJiis-L8IAwA" title="https://vk.com/doc-66674957_276915055">Исходные коды</a>https://stocksharp.ru/topic/3369/5 семинар ноябрь 20122013-02-11T09:12:05Z2013-02-11T09:12:05ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru[vk]http://vk.com/video_ext.php?oid=-66650972&id=167477586&hash=7df12d810218dfda&hd=3[/vk]<br /><br /><b><span style="font-size:120%">План:</span></b><br /><ul><li>Доработка QuoteExternal<br /><li>Класс Strategy и его особенности<br /><li>StrategyRule</ul><br /><br /><span style="font-size:120%"><b>Вложения:</b></span><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmnJzaYxCX7CcOTTGUgmwW4K6boIgOFrOs1M2za5Et_H8" title="https://vk.com/docs?oid=-66650972">Проекты</a>https://stocksharp.ru/topic/3367/Обучение по видео-урокам!2013-02-10T14:15:08Z2013-02-10T14:15:08ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru<span style="font-size:120%"> Уважаемые слушатели курсов!<br /><br />Выкладываю простой ролик в формате нового обучения ( записи на <a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAACY0DI6Aiy4677_bA7DE6T34f-2_10eZQN1zMTaQ9Vw4F_Gt2wuE9EYNS-1ms2R2qI" title="http://www.youtube.com/StockSharp">канале StockSharp</a>).<br /><br /><iframe width="640" height="390" src="//www.youtube.com/embed/rhTYWGs0E3I" frameborder="0" allowfullscreen></iframe><br /><br /><a href="http://stocksharp.com/forum/yaf_postsm26208_SimpleIntroStrategyRules-rar.aspx#post26208" title="http://stocksharp.com/forum/yaf_postsm26208_SimpleIntroStrategyRules-rar.aspx#post26208">проект, вложенный в основной .sln Lessons </a><br /><br /><span style="color:green"><b>Плюсы новых видео-уроков на Vimeo:</b></span><br />1)Минимальная потеря качества видео и аудио <br />2)Подготовленная, отформатированная запись<br />3)Только самая нужная информация( исходя из третьего пункта)<br />4)Видео можно просматривать на любых устройствах, в том числе и портативных<br /><br /></span>https://stocksharp.ru/topic/3364/2 семинар январь 20132013-02-08T16:43:20Z2013-02-08T16:43:20ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru[vk]http://vk.com/video_ext.php?oid=-66650972&id=167477568&hash=d9d0035f1a9811b1&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>План семинара:</b></span><br /><ul><li>Делегаты<br /><li>CallBack<br /><li>лямбда выражения<br /><li>делегаты типа Func,Action<br /><li>Linq запросы с использованием лямбда выражений<br /><li>Работа с событиями<br /><li>Создание своих собственных событий<br /><li>Разбор примера написанного на первом уроке.</ul><br /><br /><span style="font-size:120%"><b>Вложения:</b></span><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmnJzaYxCX7CcOTTGUgmwW4K6boIgOFrOs1M2za5Et_H8" title="https://vk.com/docs?oid=-66650972">Проекты</a>https://stocksharp.ru/topic/3363/1 семинар январь 20132013-02-08T16:39:56Z2013-02-08T16:39:56ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru[vk]http://vk.com/video_ext.php?oid=-66650972&id=167477456&hash=8025606dff021856&hd=3[/vk]<br /><br /><b><span style="font-size:120%">План семинара:</span></b><br /><ol><li>Общие концепции работы со S#.<br /><li>Настройка торговой платформы.<br /><li>Создание первого простого привода.</ol><br /><br /><span style="font-size:120%"><b>Вложения:</b></span><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmnJzaYxCX7CcOTTGUgmwW4K6boIgOFrOs1M2za5Et_H8" title="https://vk.com/docs?oid=-66650972">Проекты</a>https://stocksharp.ru/topic/3361/4 семинар январь 20132013-02-08T12:09:46Z2013-02-08T12:09:46ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru[vk]http://vk.com/video_ext.php?oid=-66650972&id=167477580&hash=41a04af82b354dcb&hd=3[/vk]<br /><br /><b><span style="font-size:120%">План:</span></b><br /><ul><li>Обработка он-лайн данных(стаканы)<br /><li>Работа с выводом информации WPF<br /><li>Создание первых стратегий*</ul><br /><br /><span style="font-size:120%"><b>Вложения:</b></span><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmnJzaYxCX7CcOTTGUgmwW4K6boIgOFrOs1M2za5Et_H8" title="https://vk.com/docs?oid=-66650972">Проекты</a>https://stocksharp.ru/topic/3360/3 семинар январь 20132013-02-08T07:06:54Z2013-02-08T07:06:54ZСамунджян Артемhttps://stocksharp.ru/users/675/info@stocksharp.ru[vk]http://vk.com/video_ext.php?oid=-66650972&id=167477572&hash=80046d776ed0b8f2&hd=3[/vk]<br /><br /><span style="font-size:120%"><b>План:</b></span><br /><ul><li>ООП<br /><li>Работа с пользовательскими библиотеками<br /><li>Готовые решения<br /><li>Обработка он-лайн данных в S# ( стаканы)</ul><br /><br /><span style="font-size:120%"><b>Вложения:</b></span><br /><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADXjL5CL3VluFBlkphAxfOmnJzaYxCX7CcOTTGUgmwW4K6boIgOFrOs1M2za5Et_H8" title="https://vk.com/docs?oid=-66650972">Проекты</a>https://stocksharp.ru/topic/3023/Спасибо за индивидуальное обучение2012-09-20T06:09:34Z2012-09-20T06:09:34ZManager75https://stocksharp.ru/users/6115/info@stocksharp.ruНесколько месяцев назад я решил расширить свой кругозор и попробовать свои силы в алготрейдинге. Торговля на рынке акций не является для меня основным заработком, поэтому нет много времени сидеть у мониторов и активно торговать руками. Тем не менее торговля на рынке очень интересное и отчасти захватывающее занятие, почему бы не попробовать переложить свои мысли на робота. Никакого ранее опыта в программировании на C# у меня не было. Я договорился с Алексеем на курс для новичков и занимался с Артемом в индивидуальном порядке. Такая форма обучения на мой взгляд наиболее продуктивная. Артем прекрасный учитель. Он тщательно рассказывает каждую тему и помогает разобраться во всех вопросах. Одно крупное (3-х часовое) занятие в неделю и домашняя работа помогли приобрести первые навыки программирования на C# и использования библиотеки S#. Конечно же этого далеко не достаточно, чтобы свободно программировать дальше самому хороших роботов. Поэтому я обратился к Алексею и Артему с просьбой, через обучение помочь мне сделать проект, в котором попробовать совместить технический анализ и объемно-вертикальный анализ (см. рисунок). Артем провел ряд занятий со мною, в которых обучая постепенно создал проект, где на тиковом тайфрейме, т.е. в режиме реального времени, формируется вертикальный объем. Очень хорошо, что теперь я понимаю и читаю код, который мы написали. Теперь есть возможность распознать крупные объемы и совместить их с другими элементами Библиотеки S#. По итогам обучения в целом я доволен, потому что приобрел новые знания, которые еще пока не привели к готовому роботу, но сделали эту цель более доступной. Артем и Алексей очень внимательно относятся к своим клиентам, это не бесплатно, но если Вы хотите получить знания для своих будущих проектов, то это стоит того. Теперь немного о том, чего не хватает. Все обучение качественное, но оно все построено по принципу: "В билиотеке есть вот это, а есть вот это". Это очень полезно, но на конечном этапе обучения я бы порекомендовал показывать какой-то (пусть не прибыльный) зато целостный и законченный робот. Код которого содержит все ньюансы многопозиционных входов и выходов из позиции с отслеживанием всех ошибок в нужных местах и как следствии срабатывании необходимых обработчиков событий. Где видно, как планомерно позиция формировалась, умело обходя все исключительные ситуации, и этапами закрывалась. Если бы в руки учеников на конечном этапе обучения попадал такой грамотный пример готового кода робота, то для только что новоиспеченных программистов это был бы хороший образец. В нем Вы, как профессионалы, показали бы какую структуру робота, и что именно необходимо предусмотреть в разных классах проекта, чтобы сбылась мечта: робот работает и не глючит! Мне кажется, что такое обучение давало бы большую уверенность новичкам, как им двигаться дальше самостоятельно.https://stocksharp.ru/topic/2521/Благодарности от компаний2012-03-23T12:04:19Z2012-03-23T12:04:19ZStockSharphttps://stocksharp.ru/users/341/info@stocksharp.ru<em><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAAA20EJK5ns3ev2ciPL4unSPas4LKnHFMRS8VlhLF3kXqA" title="http://esbt74.ru/">ОАО "Челябэнергосбыт"</a>:</em><br /><a href='https://stocksharp.ru/file/101815/blagodarnost_png/' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="https://stocksharp.ru/file/101815/blagodarnost_png/?size=500x500" alt=""/></a><br /><br /><em><a target="_blank" rel="nofollow" href="https://stocksharp.ru/away/?u=AQAAAAAAAADWOqetw_1Z8YEGrzcAUnD5e1sUeMMJocb5I9tGSpMrnw" title="http://www.olma.ru/">Инвестиционная фирма "ОЛМА"</a></em>:<br /><a href='https://stocksharp.ru/file/102435/290513-page-001_jpg/' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'><img src="https://stocksharp.ru/file/102435/290513-page-001_jpg/?size=500x500" alt=""/></a>