SergeyEgorov

Читают

User-icon
58

Записи

37

Вебинары-практикумы "C# для начинающих"

На прошлой неделе мы обсуждали формат идеального подхода к обучению программированию. Тема оказалась несколько более популярной, нежели мне изначально представлялось, поэтому на следующей неделе (предположительно 5 февраля 2014) стартует серия консультационных вебинаров-практикумов для тех, кто по какой-либо причине считает что ему неплохо было бы в первом приближении познакомиться с современными подходами к разработке компьютерных программ.

На вебинары приглашаются слушатели (зрители-участники), не имеющие опыта программирования совсем, или к примеру не имеющие такового успешного опыта. Поскольку наша цель коммунизм приобретение первичных навыков, присущих профессиональным программистам, то лекций не будет, все занятия будут практическими от начала и до конца.

Писать код будем на языке C#, используя бесплатную среду разработки Microsoft Visual Studio Express для Windows Desktop. Все сущности и понятия, реализуемые во время занятий, конечно же будут в основном из предметной области алгоритмической торговли.


( Читать дальше )

Об обучении программированию (алготрейдингу)

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

Сначала общеизвестный своей банальностью постулат, без которого увы все равно не обойтись: У разных людей, разные способности к обучению программированию (или к примеру игре на укулеле). В связи с этим, у всех обучающихся, стремящихся к одному и тому же уровню овладения навыками программиста, пути достижения этого уровня будут разными. Рассмотрим две традиционные крайности, чтобы расставить ориентиры между которыми будем размышлять.

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


( Читать дальше )

Разрабатываем простейший бэктестер (часть завершающая)

Собираем из нескольких запчастей наш элементарно-концептуальный консольный бэктестер. Наш план вполне удался и у нас появилась возможность тестировать придуманные и реализованные нами обработчики на исторических данных без дополнительных программ и переписывания кода алгоритмов.

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


Программируем простейший бэктестер (часть 4)

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


Программируем простейший бэктестер (часть 3)

Целеустремленно и неотвратимо продолжаем кодировать компоненты для простейшего бэктестера. Тема сегодняшнего видео — обработчик, который фиксирует прибыль, генерируя сигнал на закрытие позиции, когда цена достигает границы, определенной нами в настройках. Как мы и договаривались обработчик щелкает каждый раз, когда в контекст торговых данных падает новая свечка (Bar).


Программируем простейший бэктестер (часть 2)

Продолжаем двигаться по пути строительства коммунизма простейшего собственного бэктестера.

Поскольку оказалось что инструмент для загрузки свечей (Bar) из текстовых файлов уже существует в проекте ru.sazan.trader, то в этом видео мы смотрим как реализовать пробойный обработчик на открытие позиции, который как мы и договаривались реагирует на добавление новых свечей в контекст торговых данных.


Программируем простейший бэктестер (часть 1)

Один из самых частых вопросов, который начинающие программисты-трейдеры задают мне в почту или скайп это — «Как написать бэктестер?». Глобализовать задачу не хочется, дабы она не умерла из-за потери концентрации и мотивированности, поэтому пойдем поступательно, от простейшего, к простому и за несколько итераций реализуем набор алгоритмов, которые позволят тестировать торговые стратегии, базирующиеся на свечках (Bar). Первый бэктестер должен будет уметь исполнять рыночные заявки, по цене закрытия самого последнего бара, присутствующего в контексте торговых данных, для нашего финансового инструмента. Примерный план действий такой:

  1. Реализуем класс, который эмулирует сделки для наших заявок.
  2. Реализуем класс, который последовательно читает свечки из текстового файла и добавляет их в контекст торговых данных.
  3. Реализуем к примеру пробойный обработчик на открытие позиции.
  4. Реализуем обработчик на закрытие позиции.
  5. Реализуем консольное приложение, которому можно будет передавать имя текстового файла с историческими данными и которое будет выполнять бэктест для этих данных.

Видео по первому пункту:


Алготрейдинг без программирования?

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


Как получить информацию о сделках?

Продолжаем рассматривать контекст торговых данных (ru.sazan.trader.Data.TradingDataContext). В этом видео показано как пользоваться вызовами методов расширения GetTrades для того, чтобы получить коллекцию (IEnumerable<Trade>) сделок для торгуемой стратегии или для конкретной заявки.

Кроме того, в видео показано как пользоваться одним из методов, позволяющих эмулировать комплект, содержащий сигнал (Signal), заявку (Order) и сделку (Trade), которые могут потребоваться в тестовых классах для проверки правильности срабатывания обработчиков на вход и выход.


Учебный курс Введение в Финансовую Инженерию

Обнаружил в онлайн университете Hexlet интересный учебный курс на русском языке Введение в Финансовую Инженерию. Особенно позабавила четвертая лекция «Случайное поведение активов», где автор называет технический анализ псевдонаукой :-).
Кроме всего прочего автор еще показывает как программировать на C++ под PlazaII.

теги блога SergeyEgorov

....все тэги



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