Сентябрь 3rd, 2014

Древо знаний трейдера и алготрейдера 2.0

4 Comments, Must-read, by Алексей Ван, .

Древо знаний трейдера и алготрейдера. Версия 2.0

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

Это пост является органичным развитием и эволюцией  идей описанных в этой(http://smart-lab.ru/blog/155908.php) и этой(http://smart-lab.ru/blog/159151.php) статьях, хоть и несёт в себе законченную мысль.

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

Структура статьи:

1. Изменения к предыдущему дереву

2. Введение

3. Дерево знаний

4. Трейдинг

4.1 Технологии торговли

4.2 Финансы и кредит

4.3 СистемоСтроение

4.3.1 Физ Мат

4.3.2 Стратегии

4.3.3 Методологии исследования рынка

5 Роботостроение

5.1 Языки встроенные в торговые платформы

5.2 Визуальные редакторы

5.3 Программирование

6 Итого

Profit…

Паника

Рис. 1 Паника

More

Всем привет!

Уже несколько лет слышу, что у многих, в составе торгового робота есть СМС рассылка. Это создаёт несколько положительных моментов, от неустанного контроля позиции и оперативного получения сигналов, до спокойной, без нервотрёпки, возможности выйти из дома, во время сессии.

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

Представляю OpenSource микро библиотеку для отправки СМС и электронных писем.

Берите, пользуйтесь.

Качаем по ссылке:

 

Что в архиве:

  1. Библиотека
  2. Исходники библиотеки
  3. Исходник примера использования
  4. Этот пост вместо инструкции
  5. Открытая лицензия

More

Ты программист и выбираешь Api для подключения к бирже!? Это статья для тебя… В ней я опишу свой скромный опыт написания ботов с подключением через SmartCom и Quik. Попробую сформулировать своё отношение к одному и второму способу, а также опишу их сильные и слабые стороны БубноТанцы Господа. Я работаю по старинке и пишу свои приводы. Не пользуясь универсальными Api вроде StockSharp или TsLab. Поэтому любителям этих ваших модных Платных_Закрытых_Библиотеко_Каракасов просьба идти мимо. И мне это не предлагать!

Поскольку статья получилась довольно ядовитая, сначала опишу хорошие стороны одного и второго Api.

Хорошо:

Главная положительная черта Quik Api это надёжность. Единожды настроенное подключение TRANS2QUIK.dll не отсохнет и не повиснет. С DDE немного сложнее, но если правильно принимать и обрабатывать потоки, соединение также стабильно.

SmartCom хорош в плане простого и понятного интерфейса, человеко — ориентированностью, а также высокой скоростью выставления заявок (но тут всё не просто).

More

Пару месяцев назад завершил одну интересную программу, которая самостоятельно ищёт прибыльные свечные паттерны . Решил было спрятать под подушкой, но недавно передумал. Пока доделывал, появилось несколько HFT идей. Буду заниматься ими, а эту подарю миру.

Паттерн2

Программу не выложу, но про идею расскажу подробно. Берите, реализуйте, кто может. Буду только рад. Удалось обнаружить такое огромное количество паттернов, что на всех программистов хватит.

Plan:

  1. Что такое свечной паттерн;
  2. Алгоритм поиска паттернов;
  3. Подводные камни;
  4. Оптимизация, многопоточность;
  5. Альтернативы.

More

 

 Языки

Рис. 1 Классная ворованная у Яндекс картинка, после изучения которой можно дальше не читать

    Как программисту, начавшего с C# и использующего его в своих проектах, мне довольно просто набросать список преимуществ этого языка перед остальными. Однако многие из этих преимуществ являются спорными и не один год вызывают холивар среди программистов. Поэтому призываю не воспринимать всё как чистую монету. Читайте, учитесь, составляйте своё мнение. А вот моё:

Итак, сначала о том, какие true языки программирования применяются для создания роботов, в порядке увеличения популярности:

  • Delphi;
  • VBA;
  • C++;
  • C#.

 

Delphi, он же Objective Pascal   язык, попытка угнаться за мощностью подходов к программированию С++, обеспечив при этом более высокую отказоустойчивость и читаемость. Изначально разрабатывался специально как вводный язык для начинающих программистов. Поэтому был одним из самых простых в освоении и популярным до появления C#. Которым ныне почти совсем вытеснен из ниши простых и мощных. Самый редкий выбор для программиста МТС.

VBA   встроенный язык офисных приложений от Microsoft. Простой в освоении. Медленный и печальный. Выбор VBA обусловлен возможностью стандартного вывода данных о торгах из Quik в Excel, который в свою очередь и поддерживает этот самый язык. Такое положение вещей вызывает у начинающего алготрейдера уверенность в том, что дописав пару скриптов в Excel он получит готового робота. Возможно, так и есть, но здесь надо знать о том что «Чудо» на VBA не напишешь. Ну и скорости данной технологии поражают воображение (в плохом смысле). Свежих бенчмарков гугл не предоставил, но вот википедия подтверждает: http://ru.wikipedia.org/wiki/Visual_Basic

    C++   быстрый и сложный.

Язык не является лидером по популярности среди алготрейдеров, потому как сложен при освоении и является избыточным для программирования МТС.

Несмотря на то, что он действительно быстрее своих конкурентов, необходимо понимать, что основные задержки доступа к торгам появляются на стороне брокера и интернет провайдера, не зависимо от того какой язык использовать. Поэтому прирост производительности в 10 — 30 % разменянный на 500 — 1000 часов дополнительно времени на обучение не всегда оправдан.

С каждым годом С++ теряет своё преимущество в скорости перед C#. Это связано с агрессивным развитием платформы  .net, которая год от года становиться быстрее.

Программирование на С++ входит в обязательную дисциплину HFT арбитражеров \ фронтраннеров. Ну и размещая МТС на сервере биржи, рассчитывая потягаться с условным Фишманом (собирательный образ злого HFT алготрейдера) необходимо задуматься над тем, что неплохо бы было иметь соответствующее ПО.

Но опять же, ходят слухи) что для многих стратегий внутри минуты скорость не является главным фактором прибыли. Надо ещё ВНЕЗАПНО! знать в какую сторону пойдёт рынок.

 

С#  структурированный и упрошённый наследник С++.

Самый распространённый язык для программирования торговых роботов и программного обеспечения для трейдинга в России.

Вот некоторые причины его популярности:

  1. Низкий порог входа. Незамысловатая ООП архитектура и пакет «all inclusive» поставляемый вместе с VS;
  2. Абсолютное спокойствие Microsoft по поводу пиратов и соответственно мгновенное появление Visual Studio Ultimate (это такая программа для создания других программ) на файлообменниках в годном виде и самой последней версии.
  3. Наличие хорошей учебной литературы по теме и отличной поддержкой со стороны интернет сообщества. Тут вообще интересная штука. Пока учился в институте не раз замечал что по C# любую информацию найти гораздо проще чем по С++, хотя первый появился много позже;
  4. Наличие библиотек для трейдинга на C#. Сток Шарп например.

Некоторые причины его ненавидеть:

  1. .net. Т.е. пожизненная привязка к Windows со всеми вытекающими.
  2. Платность. Хотя в России это не актуально, думается, что вероятность прекращения ада в этой стране не равна нулю и быть может выучив сейчас С# через пять лет придётся платить деньги, за то чтобы на нём писать.

 

  Международный троллинг. Мотиватор.

Ненависть

    Перечитывал  недавно перевод статьи Jason Roberts  от механизатора, и поймал себя на мысли, что не согласен вообще со всеми доводами автора. Вот, что ни абзац, то из пальца высосан. В ней, этот самый Jason Roberts, собирая всевозможную клюкву об алготрейдинге, пишет, как ему хорошо работается Web программистом и как ему было плохо, когда он писал роботов.  WTF?! Подумал я, и так появился мотиватор-стёб-антоним ниже. В нём нет ссылок на оригинальные тезисы, т.ч. прочитайте обе статьи…

    Я потратил лучшую часть четырёх лет, примерно с 2009 по 2014 год, гоняясь за синей птицей в алгоритмическом трейдинге и, хотя я до сих пор не купаюсь в золоте как Скрудж Макдак, по дороге я узнал многое о себе, о мире, об экономике, о психологии, о политике, теории счастия Тимофея Мартынова и, конечно же, о том как писать устойчивый, высокопроизводительный код. Я несколько раз писал об этом, и поэтому настало время написать о том (ВНЕЗАПНО!), почему я НИКОГДА не уйду в интернет стартапы и почему посты о том, что кто-то «уходит в интернет стартапы» вызывают у меня ненависть(HATE!).

1. Для того чтобы начать торговать алгоритмически не надо практически никакого капитала, чтобы начать своими силами. Например для того чтобы вести передовые исследования по алготрейдингу, вам нужен компьютер за 500$, а минимальная сумма с которой можно зарегистрировать счёт равна 300$. При этом, зная куда пойдёт рынок в течение следующей минуты, вы станете миллионером и без прямого подключения и золотых перемычек. А какой бизнес ещё можно открыть за 800$?

2. Мне нравится работать в команде с трейдерами, и делать из их стратегий роботов. Это незабываемый опыт, который кроме всего прочего неплохо оплачивается. Любого, даже самого сложного робота можно сделать за три-четыре месяца, а если это нечто простое, то и вовсе за несколько дней. И даже если какой-то конкретный робот не приносит прибыли и не соответствует первоначальным ожиданиям, что конечно расстраивает, лично меня, как программиста и алготрейдера, он делает намного крепче и опаснее.

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

4. Разрабатывая торговых роботов в течение многих лет, и используя популярные языки программирования, вы становитесь весьма и весьма востребованным специалистом. Когда ты один пишешь огромную платформу, у тебя нет других вариантов, кроме как быть профессионалом во всём что касается программирования. Торговые роботы и машинное обучение — это OOAD, Многопоточность, DataMining, BigDataи т.д. Пройдя этот путь до конца, ты становишься одним из самых высокооплачиваемых программистом на рынке.

5. Любая торговля на фондовом рынке это попытка найти его неэффективность, а так же  выровнять её, и нет ничего приятнее, чем наблюдать за гармонизацией рынка твоим алгоритмом, получая за это заслуженное вознаграждение(Secret). Если иметь ввиду микротрендовиков и скоростных арбитражеров, то роботы на данном таймфреме это первый эшелон защиты от «дурака» и  подушка безопасности для инвесторов. Правильный робот не просто зарабатывает деньги, он помогает финансовой системе, создавая ликвидность и прочный заслон от проскальзываний и невменяемых, с пеной у рта нажимающих не на те кнопки. И осознание того, что именно ты создаёшь устойчивость огромной системе — огромная награда, о которой надо помнить и гордиться этим.

6. Мир алготрейдинга настолько скрытный, что порой диву даешься от того, что у нас на виду почти нет грозных Альфа-алготрейдеров, которые бы были примером для других и с высока говорили другим что правильно, а что нет. Занимаясь алготрейдингом и при этом периодически публикуя результаты своих исследований, ты здорово рискуешь им стать.

P.S. Если я все-таки разбогатею на алготрейдинге, часть меня все еще готова дать Web стартапу еще один последний шанс. Так вот :)

ЗЫ, Серьёзно:

    Пытаюсь быть толерантным к алготрейдерам из TSLab, S#.Studio и прочих визуальных редакторов, однако сегодня изменю себе и брошу в них камень. Вы уж извините, истина важнее. Большинство профитов доступных для trueпрограммиста, недоступны «алготрейдеру из визуальных редакторов», и это действительно путь в никуда. Перетаскивая кубики в редакторе можно «просрать» несколько(1…2…3…4…5) лет, и оказавшись у разбитого корыта, тебя не возьмут «тестировать движок для 7-ых Героев», ты пойдёшь работать на стройку. И будешь таскать цемент с нулевого на восьмой этаж, целый день )).

Вспомни об этом, если захочешь стать алготрейдером и поставь цель максимум!

Февраль 8th, 2014

Рецензия на Design Patterns

No Comments, OOD, by Алексей Ван, .

    Дочитал на днях книгу «Приёмы объектно-ориентированного проектирования. Паттерны проектирования», от  «банды четырёх»: Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес. Думаю надо написать пару строк об этом, потому как впечатления неоднозначные.

Прочти меня

Прочти меня

Первое: Очень сложно читается. Заставлял себя приобщаться понемногу довольно продолжительное время. Вероятно, если бы не моя изначальная убеждённость в невероятной важности прочтения именно этой книги по объектному дизайну приложений, ничего бы не вышло. Наверняка где-то есть весёлый вариант того же самого, но выдаваемый в более приемлемой форме. Буду искать…

Второе: Несмотря на крайнюю нудность, вероятно, почти каждый программист всё же должен прочитать эту книгу, т.к. она отражает ход мыслей нескольких поколений архитекторов от программирования.

Обязательна к прочтению:

·         Всем, кто собирается писать приложения/библиотеки длиннее 5000 тыс. строк.

·         Всем, кто собирается участвовать в любом виде (тестировщиком там или разносчиком пиццы) в проекте по созданию приложения/библиотеки длиннее 5000 тыс. строк.

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

   

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

    А теперь самое главное: Буду ли я применять что-то из этой книги в своих проектах?

    - Однозначно да. Ведь на самом деле и до прочтения пользовался несколькими паттернами вычитанными на форумах и в Вики, а где-то придумывал велосипед, вместо того чтобы взять готовое.

    Однако всему своё время и поспешное прочтение даже содержания может не дать результатов или отбить желание быть программистом. Т.к. концепции, затрагиваемые в книге, предполагают, что читающий владеет одним из ООП языков программирования на высоком уровне.

Собственно Сабж: http://www.ozon.ru/context/detail/id/2457392/

На Педивикии: http://ru.wikipedia.org/wiki/Design_Patterns  - Здесь ребята потрудились на славу, каждый паттерн расписан и снабжен примерами на нескольких языках программирования.

Ну и в общем МАСТ РИД для программиста в трейдинге, хотя это тебе не Маги рынков.

Январь 26th, 2014

Hello Word

No Comments, Без рубрики, by Алексей Ван, .

    Во втором институте на занятиях по Web программированию меня учили HTML, CSS, PHP. Мы, всей группой упорно исписывали по три-четыре листа А4 за пару. Зубрили язык разметки, его связь с таблицами стилей и как это всё взаимодействует между собой на сервере, генерируется и динамически обрабатывается при помощи PHP. Не счесть тех часов, которые были мной потрачены на изучение этих языков программирования. И вот несколько недель назад я решил завести блог… И знаете, сколько этих знаний мне пригодилось?

Абсолютно НИЧЕГО.

    Этот блог создан за несколько часов при помощи CMS Word Press, что сэкономило мне несколько сотен часов жизни, и я могу начать писать о том, что мне интересно уже сейчас, не отвлекаясь на создание сайта. Поэтому, как и миллионы других счастливых обладателей своих блогов, я начну с записи благодарности интернет сообществу поддерживающему и развивающему CMS Word Press:

  «Ребята, вы все молодцы! Word Press это круто! Спасибо!»