Блог им. SergeyEgorov

Учебный курс программирования МТС для неумеющих программировать совсем

Меня зовут Сергей Егоров и я в гораздо большей степени программист, нежели трейдер. Программирую я очень давно, а вот с торговлей на бирже познакомился примерно год назад и опять же в основном своем профессиональном качестве, как программист, но теперь разрабатывающий автоматизированные торговые системы для биржи.

К счастью задача меня весьма увлекла и в настоящий момент у меня есть свой собственный небольшой счет, который я тем не менее никогда не торгую руками. Ибо если быть честным с самим собой, как трейдер я весьма слаб и неопытен. Позиции на несколько контрактов на фьючерс на индекс РТС торгует за меня робот, по алгоритмам, которыми со мной милостиво поделились трейдеры, для которых я собственно и разрабатывал торговую систему на базе SmartCom.

В настоящий момент я продолжаю сотрудничать с трейдерами и из нашего общения вынес следующее наблюдение. Как мне показалось, большинство трейдеров хотели бы сами научиться хорошо писать программы. Это на мой взгляд вполне логично, ибо дай человеку рыбу и он будет сыт один день, научи его ловить рыбу и он сможет быть сытым всегда.


Сложилось так, что в течение этого года, мы встречаемся с трейдерами один раз в неделю и примено около трех часов занимаемся практическим программированием, кодируя интересующие их понятия из предметной области биржевой торговли. Я и раньше практиковал обучение программированию, и в работе с трейдерами обнаружил что они, как и другие люди, пытающиеся программировать достаточно объемные системы, рано или поздно сталкиваются с тем, что их код становится сложным, запутанным и работает не так как они ожидают. А сам процесс написания этого кода превращается в череду головоломных рабочих сессий в отладчике, в попытках разобраться в том, где и в какой момент возникают ошибки, и почему после исправления метода Икс, перестал работать метод Игрек. Примерно на этом этапе, многие бросают программировать совсем, ибо не получают ни удовольствия от процесса, ни ожидаемых денег от работающей торговой системы.

Учиться программировать никогда не бывает легко, но сложность в обучении скажем по книжкам в том, что книжки по-большому счету не содержат методических пособий. Они в основном представляют собой либо справочники по синтаксису языка или библиотеки по каким-то конкретным фреймворкам. Книг по методикам «промышленного» программирования не очень много, и они в силу специфики не очень доступны для понимания начинающим. Это опять же из опыта моих личных наблюдений.

Как мне кажется, сейчас мне удалось нащупать нужный формат преподавания практик написания кода, который позволит обучать даже неофитов, не имеющих совершенно никакого опыта, но достаточно самозамотивированных на приобретение новых навыков. В настоящий момент, часть своего времени я посвятил разработке конспектов учебного курса, и думаю что онлайновый трехнедельный учебный курс я мог бы запустить примерно в начале сентября этого года.

В чем основные отличия моего курса, от других?

  1. Поскольку программирование это по большому счету не знания, а навыки, то все занятия исключительно практические. Лекций не будет.
  2. Поскольку значительная часть удовлетворенности программиста проделанной им работой строится на уверенности в том, что его код работает в точности так, как он этого хочет, то курс основывается на автоматизированном тестировании программного кода. Во время обучения мы будем всегда писать сначала тесты, потом код, который должен будет позволить этим тестам выполниться. С самого первого дня.
  3. Поскольку одна из самых больших головных болей программистов — это все время меняющиеся (заказчиками или рынком) требования к его программе, то мы с самого первого дня будем писать код, который можно изменять, не боясь его поломать в какой-либо части. При этом мы будем активно изучать сложившиеся шаблоны проектирования программных систем, которые позволят нам наработать навыки реализации коротких, удобочитаемых, понятных, хорошо тестируемыех, гибких модулей.

Здесь я бы хотел спросить трейдеров, желающих стать в некоторой, нужной им мере, программистами, будет ли им интересен такой курс, и в таком формате? На всякий случай привожу ниже часть программы курса, на первые полторы недели. И ссылку на короткое видео, как в первом приближении это может выглядеть?

Часть программы курса
Неделя 1: Первое знакомство с языком программирования C# и компонентом SmartCom 2.2

Занятие 1: Модульное тестирование исходного кода

  1. Техника модульного тестирования исходного кода, базовые типы и управляющие конструкции языка
  2. Методы, события и делегаты
  3. Реализуем простое приложение Windows Forms с полями ввода адреса сервера, логина и пароля для ознакомления с техникой установки и разрыва соединения с брокером с помощью адаптера SmartCom

Занятие 2: Классы

  1. Создаем класс ConnectionSettings
  2. Модифицируем приложение Windows, перемещая данные для установки соединения внутрь класса ConnectionSettings
  3. Реализуем класс Tick и его методы ToString и ToImportString

Занятие 3: Файл настроек приложения App.config

  1. Добавляем в файл настроек параметры для хранения данных класса ConnectionSettings и реализуем класс для чтения и записи значений файла настроек.
  2. Реализуем фабрику для создания экземпляра объекта ConnectionSettings, данные которого загружаются из файла App.config
  3. Модифицируем приложение Windows, добавляя в него файл настроек App.config, и сохраняя и загружая данные для установки соединения в файл настроек

Занятие 4: Коллекции и циклы

  1. Работаем с коллекцией экземпляров объектов типа Tick
  2. Реализуем коллекцию экземпляров объектов типа Tick используя встроенную обозреваемую коллекцию .NET
  3. Модифицируем приложение Windows, оборудуя его возможностью получать тики для нужного инструмента и отображать их обновление

Занятие 5: Производство объектов из строковых представлений

  1. Для класса Tick оборудуем фабричный метод Parse для создания экземпляра объекта Tick из строкового представления
  2. Реализуем фабрику для импорта Tick-ов из текстового файла
  3. Модифицируем приложение Windows, оборудуя его возможностью загрузки Tick-ов из текстового файла
Неделя 2: Дополнительные возможности языка программирования C#

Занятие 6: Средства управления исходным кодом

  1. Устанавливаем Git и настраиваем локальный репозиторий для проекта
  2. Изучаем техники сохранения и отката изменений исходного кода в локальном репозитории реализуя класс Bar и метод Parse для создания экземпляра объекта Bar из строкового представления
  3. Регистрируемся на bitbucket.org и практикуем техники работы с удаленным репозиторием Git

Занятие 7: Рефлексия и интерфейсы

  1. Знакомимся с механизмами рефлексии типов
  2. Реализуем «контекст рыночных данных» используя интерфейс и механизмы рефлексии
  3. Модифицируем приложение Windows, оборудуя его вместо разрозненных коллекций единым «контекстом рыночных данных» для Tick-ов и Bar-ов
★2
1 комментарий
уоу уоу уоу пацанчик остынь)
avatar

теги блога SergeyEgorov

....все тэги



UPDONW
Новый дизайн