Блог им. facevalue

...Разбиваясь головой об код

Третья неделя хаотичного боя с освоением программирования. Большое спасибо Тимофей Мартынов за скурпулезное описание пути гуманитария в дебри кодинга. ) Реально ободряет.

Но задался я вопросом, а почему нет до сих пор труда по поводу «Алготрейдинг для начинающих»? То, что есть в сети, мягко говоря не соответствует действительности. Нет книги, которая бы рассматривала примеры не со стоимостью пирожков на количество гостей, а сразу — СРАЗУ — давала бы примеры работы с биржевыми данными. Специфика ведь сильно отличается от того, что можно узнать во всех учебниках по кодингу. Нафига мне пирожки с гостями? Или тангенсы с квадратными корнями?

ИМХО, что должно быть в таком учебнике, может кто психанет да напишет. )))

1. Языки, на которых программируют алгоритмы. Кто, когда, где, зачем, почему. Короткая вводная. Мол, R для дата майнинга, что такое C# и C++, причины их доминирования, новые языки в алготрейдинге — python/ruby, специфические языки, которые есть в платформах типа Метатрейдер или ТОС. В общем, краткая вводная.

За исходную точку возьмем все таки Шарпей. Расскажем как там все популярно и хорошо. В одной книге все бутерброды не съесть. )

2. Работа с файлами данных. Считывание, запись, перезапись, разделители, массивы, вывод полученных данных в консоль. Простые примеры StreamReader/StreamWriter, простые примеры работы с переменными, массивами. Никаких блеать умных слов. Просто к примеру вычленяем клоузы под дням и складываем их куда-то, потом показываем.

Работа с тиковыми данными и с HLOC. ОТДЕЛЬНОЕ ВНИМАНИЕ такому зверю как DayTime. ) Рак мозгов для начинающих, хотя на простом примере можно показать разницу между временем МСК и UTC. Должна податься идеология «Как сварить правильную котировку и время», особенно если данные выгружались с кастомным временем. Простой пример какой-то по этому поводу для понимания особенностей работы с временными переменными. Очень Важно. Например, посчитать почасовую дельту между двумя инструментами, где дельта расчитывается с нуля в начале каждого часа и только в рыночное время. Например, ES vs NQ, или RI vs SI. Полученные данные складываем опять таки куда-то с учетом особенностей времени для использования в дальнейших примерах.

3. Математика и операции с данными. Простой пример построения средней. Более сложный пример расчета какого-то индикатора с разбором кода. Расчет разницы значения средней по отношению к началу дня/недели/месяца с синусами, косинусами и тангенсами с котангенсами. Для математиков. Что-то для «вспушивания» мозговых нейронных связей гуманитарного мозга. )))

4. Создание графического интерфейса. Примеры с кнопочкой загрузить файл с котировками, и выполнить с ним операции из раздела 2 и 3.

5. Культура построения алгоритма в коде. Считаю, что это должна быть отдельная глава, в которой нужно научить адепта строить правильно блок-схемы и думать на языке школьного АЯ. Здесь неплохо рассказать ему, что можно все впихнуть в один код, и это приемлемо для быстрого бектестра. Но для построения рабочего алгоритма «на века» нужно дробить код на разные куски. Тут вот и про библиотеки можно было бы поговорить. Опять же, простой пример какой-то: создаем один код, который тупо читает клоузы и отдает их в другой код, который считает эту среднюю. Для такого примера, конечно, модульность лишняя, но для понимания сути и процесса передачи значений Очень Правильно. Пригодиться потом в разделе работы с реал-таймом.

6. Работа с реал-таймом. Тут дремучий лес для меня, но хотелось бы а) понять идеологию работы с данными на примере российского брокера и американского, для понимания разницы. б) объяснить адепту, что значат кучи данных, которые приходят вместе с тиком. Потому что многие не в курсе, вычисляют много всякой херни, которая приходит и так. Не знаю про РФ, но IQFeed отдает с каждым тиком все что хочешь, и бид, и аск, и ATR, и новости (акции), и биржевой/небиржевой ли тик, маркет/премаркет/постмаркет. Кто сталкивался, тот понимает о чем речь. С фьючерсами прилетает не так много, но разительно больше чем HLOC.

Ну и простой пример, пишем код коннекта и получения данных с детальным описанием что там происходит. Складываем полученные данные в отдельное место. Краткая аннотация по Базам Данных, но без углублений. На первых порах НАХЕР НИКОМУ НЕ НУЖЕН ЭТОТ MySQL. ))) Используем гармонично усложняемые примеры из предыдущих глав.

*Да-да, есть куча всяких коннекторов, которые качают данные. Но для меня это кот в мешке. Хочу Сам! Можно рассмотреть примеры API каких-то популярных брокеров и платформ. Например, Interactive Brokers и Альфы. Куда смотреть, с чем кушать. Простой пример.

По построению биржевых БД я бы вообще отдельную книжку для специалистов запустил. Потому что это аДЪ и кровь каждого даже прожженного программиста, если он не работал никогда с биржевыми данными.

7. Торговая логика и ее особенности. Разница в бектесте, с примером простого бай-селл на пересечении, или развдижке дельты на исторических клоузах, которые мы уже сложили в предыдущих примерах. Торговая логика в реал-тайме. Тут с примерами будет сложнее, если нет подключения к реал-тайму, но в таком случае можно было бы сделать какой-то симулятор, который с сервера отдавал бы псевдо-реалтайм, на базе которого адепт мог бы проверить особенности торговой логики. А особенности, Их Есть Там. ))) Отправка ордера, получение подтверждений, частичное исполнение, сбой в поступлении котировки и что делать когда котировка проснулась. Тут с примерами будет по-тяжелее, но в принципе это вполне описуемая проблема с решениями.

8. Завершающая глава — Постоение полноценно работающего БАЗОВОГО бектестера и онлайн-робота на базе примеров, которые были использованы выше. Для онлайна может использоваться все тот же симулятор, если нет рабочего счета и подключения.

ПРИМЕЧАНИЯ — краткая глава о возможностях S#, TSLab, WealthLab, MQL, ThinkScript и прочих.

Такая книга откроет двери для целой армии алготрейдеров, которым Б-г не дал математический склад ума, они не заканчивали физмат МГУ и не побеждали на задротных олимпиадах по шахматам. Структура и изложение должны строиться по примеру книг For Dummies. Параллельно, это поднимет уровень конкуренции между курсами по алгопрограммированию.

Мнения?
★7
54 комментария
Если предположить, по максимуму, что такой учебник купит 500 человек и автор получит 50% цены реализации, что чрезмерно оптимистично, и затраты труда автора оценить 1 000 000 рублей, что очень скромно, розничная цена составит 4 000 рублей за штуку. 
ИМХО, фантастика.
avatar
SergeyJu, Почему только 500? Откуда такая цифра?
avatar
facevalue, цифра, имхо, завышена. 
Сколько гуманитариев, как Вы думаете, активно хотят лично программировать свои торговые системы на бирже?

avatar
SergeyJu, Посмотрите на армию форексников. Их сотни тысяч. Алготрейдинг с каждым годом приобретает популярность, в геометрической прогрессии. Рост алготрейдеров = здоровье рынка.

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

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

Но на примерах из реальной жизни — такая книга нужна любому начинающему алготрейдеру.
avatar
facevalue, и кто Вам мешает нанять автора, напечатать и устроить грамотный маркетинг?
Только учтите, почти все форексники, кроме разово попавших лохов,  и львиная доля частников на ММВБ — просто игроманы. Что бы они ни звиздели, на самом деле они торгуют ради эмоций и алготрейдинг им разрабатывать нахрен не сдалось. 
avatar
SergeyJu, Думаю над этим, серьёзно. Потому что как руководитель проектов я повидал кучу кода и знаю проблематику достаточно хорошо. Могу прочитать любой код и понять о чем он, если он написан более-менее качественно. Но вот сам сел за код, и всё. Тупик. Поэтому и захотелось вот такую книгу.
avatar
SergeyJu, пошутил?
avatar
Eu-Gin, нет.
avatar
SergeyJu, чем выше риск, тем больше необходимость в алгоритмизации. сидеть годами в говнопапирках робот не нужен.
avatar
Eu-Gin, игроманам он не нужен тем более.
avatar
SergeyJu, а кто не игроман?
avatar
Eu-Gin, тот, кто рутинно торгует ради денег.
И если для этого надо  программировать — программирует, а не переживает.
Все авторы постов про тильт, уровни, прогнозисты туда-пойдет-сюда пойдет, «я же говорил», «давайте торговать вместе», «я вчера дал правильный сигнал», «мне надо было выйти, а я замешкался», «почему нефть растет, кто что думает?» либо игроманы, либо околорыночники. 


avatar
SergeyJu, ну а при чем тут форекс? лудоманы есть везде
avatar
Eu-Gin, я что, только про форекс написал?
Нет!
Дело не в том, что лудоманы есть везде. Дело в том, что почти все частные торговцы, почти все смартикописатели — или лудоманы или околорыночники. И никто из них обсуждаемую автором книжку покупать не станет. 


avatar
SergeyJu, Каждый волен думать то, что он хочет и публиковать это в паблик. Есть люди, которые выкладывают свои вью, и при этом торгуют публично. Кому-то комфортно сидеть в замкнутом пространстве и не показываться на глаза даже маме. Это уже к психотипам вопрос и личным предпочтениям. Да и игроман игромаму рознь.
avatar
facevalue, мне это не интересно. Я высказал МНЕНИЕ, почему у такой книги будет маленький сбыт. Можете думать, что я не прав, как Вам угодно.
avatar
SergeyJu, Стало интересно. Поднял вопрос отдельно.
avatar
facevalue, я видел. 
Проблема в том, что не каждый лудоман и околорыночник сознается в этом.
Пройдитесь по сегодняшним топикам. 
Реклама обучения, флуд про свои позиции, всякие волфиксы, селфи «я и рынок», офтопики. Ни одного содержательного поста по алготрейдингу за весь день. Вчера было одно сообщение, которое обсуждали три с половиной инвалида умственного труда, причем давно находящиеся в теме. И всё!
avatar
SergeyJu, 0,00000000000000000000001%
avatar
facevalue, приведу простой пример. ms access  - охренительная штука для начинающих и не очень. У скольких стоит (стоял до недавнего времени) он на компах, у 99%. А книг по VBA  в продаже уже много лет нет. И не купишь. Спроса нет. А здесь и подавно не будет.
avatar
SergeyJu, да, откуда цифра 500? купят человек 10 остальные скачают и будут поливать говном…
Бабёр-Енот, с потолка, вестимо.
avatar
Мнение? По тем пунктам, в которых не сильны, наймите спецов. Книга эта будет в виде собрания сочинений. По-хорошему, это набор разношёрстных книг, т.к. области совершенно разные, специфика разная и т.п. Вывод — зачем собирать винегрет?
Бобровский Дмитрий, Ну почему винегрет? Области разные, согласен, но специфика применения весьма конкретная. Нужно уйти от модели общего образования, когда 90% информации не нужно даже для развития. Нужно получить Конкретные Знания для решения Конкретных задач. Нахера мне генератор случайных чисел, или вычисление квадратного уравнения? Я хочу сразу решать прикладные задачи, а не в школу возвращаться.
avatar
facevalue, скажите, Вы сможете построить дом без фундамента? Ну, или, там, создать ракету, не зная ничего об аэродинамике, газодинамике и т.п.?
Тут тот же принцип — для того, чтобы «решать прикладные задачи», необходимо иметь теор.минимум как минимум, а лучше — крепкий фундамент математической, алгоритмической и иной базы. 
Хотите изучать программирование — берите книги по R, C#, C++, читайте мануалы. Хотите понимать теор.вер. и стохан — университетские учебники в помощь. Вы вольны сами фильтровать поток входящей информации. А волшебных таблеток/книжек и т.п. в природе не существует.
Бобровский Дмитрий, Хороший вопрос, я думал над ним. И нашел ответ. Вы когда ребенку покупаете Лего, вы требуете с него знание теории пластмасс, литейного производства, знания истории создания компании и особенностей производства гигиеничных поастмасс? Нет. Тоже самое с алготрейдингом. Мне нужно знать только то, из чего я потом буду собирать алгоримы. Все остальное меня на данном этапе не интересует. Я хочу открыть коробку, увидеть инструкцию и построить дом. Тоже самое со строительством. Я не собираюсь строить Москва-сити, с инфраструктурами и наворотами. Мне нужен крепкий модульный дом, и я хочу знать как его быстро собрать. Да, потребуются какие-то знания, но мне не нужно быть для этого инженером МосГорСтроя. Достаточно весьма узкого набора знаний, которые позволят мне без ошибок и проблем собрать модульный дом. А вот после него я уже хочу решать, буду я строить Москва-сити, или буду строить еще один модульный дом. Понимаете логику?
avatar
facevalue, ок, тогда проведу следующую аналогию: Метасток vs Wealth-Lab, Wealth-Lab vs S#.
Смысл в том, что в любом случае Вам будет необходимо развиваться от простого к сложному. По мере потребности усложнения логики торговли Вам будет становиться тесно в рамках тех систем, в которых находитесь, придётся лезть в терра инкогнито, изучая что-то новое, т.к. текущий уровень знаний, тех.базы и опыта не даст Вам реализовать новые идеи. Аналогия с Лего полностью уместна и тут — если Ваша задача просто построить домик, то конструктора за глаза. Что-то посерьёзнее — придётся учиться пилить и строгать, а если хотите полноценный дом, то придётся начинать с основ по архитектуре, по теплоизоляционным материалам, принципам разнесения коммуникаций, учиться мешать цемент, изучать основы профессии каменщика. И т.п. Если же нет кирпичей и Вам придётся их делать, то ещё придётся осваивать основы и этого направления и т.п.
В алготрейдинге тот же принцип — кому-то хватит Метастока и скользящих, кому-то уже Wealth-Lab нужен, например, и чуть более продвинутые системы оформления стратегий. И так по нарастающей. Не хватает «кирпичей» в виде, например, готовых решений по работе с QUIK или шлюзом — учим «мат.часть» по изготовлению «кирпичей» (в виде Си/Си++, организацию и принципы работы стека TCP/IP и т.п., делаем «кирпичи» сами). То же самое, например, и в случае индикаторов — не хватает нам скорости скользящих (не подходят имеющиеся «кирпичи»), так берём и изучаем основы Цифровой Фильтрации как минимум в той части, которая касается фильтров НЧ и ВЧ, потом либо берём готовые реализации фильтров Чебышева или эллиптического, или же опять же реализуем собственный вариант «кирпичей». И т.д., и т.п.
Я к чему это всё — Ваша предполагаемая книга будет страдать от того, что невозможно определить необходимый уровень погружения в материал. 
Бобровский Дмитрий, Спасибо за развернутый ответ. Согласен глобально полностью. Но задача такой книги была бы в том, чтобы человек на старте не копал матчасть, а получил сразу необходимые знания без воды. Потом да, копай сколько душа пожелает. Вот только основы языка программирования я бы хотел рассматривать не на примерах генератора случайных чисел, а на конкретном примере, который потом понадобится мне при формировании уже своих кирпичей. В чем ведь преимущество направленного образования от общего? В том, что если я захочу узнать что такое михохондрии, то я пойду в гугл и прочитаю. А вот как правильно работать с DayTime мне нужно не для общего развития, а для практического применения. И задача такой книги была бы (или будет) в пошаговом вводе в область алготрейдинга посредством не общего образования, а направленного. Причем, поднятые мною вопросы как раз и являются теми «Основами экономической теории» для первого курса всех родов войск. Такой курс сокращал бы путь в алготрейдинг минимум на год.
avatar
facevalue, такие есть. Например, эта: http://levup.org/viewtopic.php?t=8794
На мой взгляд, тут надо делать слоями. По аналогии с кругами Ада.))) На 5-7м кругах уже просто давать толстые списки книг, учебников и статей, которые необходимы будут к прочтению. Ну, чтива лет на 5-7))
Бобровский Дмитрий, Там только FORTS. Но посмотрю. Спасибо!
avatar
Вот пусть гуманитарии и занимаются написанием книжек For Dummies — они же им в первую очередь нужны. А у тех, кто заканчивал мехмат МГУ и побеждал на задротных олимпиадах мозги не заточены под разжевывание очевидных для них вещей, да и с мотивацией как то не очень. Зачем вообще заниматься не профильной для себя деятельностью, как написание книги для непрофильных людей, тех «которым Б-г не дал математический склад ума»?

PS: Мартынов, кстати, не гуманитарий, у него вполне профильное образование с уклоном в программирование.
avatar
Alexand77, Базово согласен. Мотивацию должен создать тот, кто заинтересован в массовом приходе новых алготрейдеров на рынок. Скорее всего, это должен быть какой-то брокер. Я тоже не верю в то, что такой труд напишет рядовой программист. Потому что банально понадобится журналист-интерпретатор. )))
avatar
facevalue, ну вот Тимофей сейчас разберется сам с C# до конца и все подробно напишет, с желтой обложечкой и шашечками, как вы любите. Журналистом он уже был, а по диплому — программист. 
avatar
Alexand77, И правильно сделает. Потому что понимает, что приход свежей крови всегда полезен для рынка.
avatar
facevalue, брокеры в России спонсировали издание большого количества книг. Им это практически не принесло клиентов, а об окупаемости за счет участия в доходах, насколько мне известно, никто и мыслей не имел. Смешно.
avatar
SergeyJu, Книги российских брокеров, простите, это мягко говоря антиреклама. Покажите хоть одну по делу.
avatar
facevalue, мне лень.
Хотите что-то сделать — сделайте.
avatar
а что вообще забыл гуманитарий на бирже?
avatar
nik, А Вам какая разница? ))) Прирост трейдеров = прирост ликвидности. Второе, гуманитарий зачастую может увидеть алгоритмы, которые математический мозг увидеть не способен в виду особенностей статичного квадратного мышления.
avatar
Учебник по программированию для торгующих на форексе есть, как и большая коллекция статей и готовых решений с открытым кодом.
Все на сайте www.mql5.com. Есть даже статьи и разработки по торговле на бирже.
Главная ошибка начинающих изучать программирование — попытка сразу разбирать код, не заучивая команды языка программирования наизусть.
avatar
Специфика ведь сильно отличается от того, что можно узнать во всех учебниках по кодингу.

не думаю, что сильно отличается. Назовите отличия.
avatar
по поводу примера из Вашей ссылки. 
Пример вычисления суммы квадратов:

ИМХО, глупейший подход. Тем более Вы ратуете за гуманитариев, а призываете к тотальной формализации. Для любого человека гораздо прозрачней выглядит что-нибудь в духе

Range 1 to(10) map(x, x * x) reduce(+)

Вы же когда стихи читаете не выделяете *начало* *конец* и прочую билеберду. Зачем засирать детям мозг, если надо просто посчитать сумму квадратов:)
avatar
sortarray sortarray, Возможно. Спасибо за мнение. В принципе, озвучил как предположение. ИМХО, конечно, лучше сразу вкладывать время в то, чем будешь пользоваться.
avatar
Регистрируетесь на сайта с вакансиями, вешаете объявление что нужен прогер с такими-то скилами, ставите вилку 150-200 тыс\мес. и вот, вам не надо тратить 5-7 лет на обучение.

Выбираете из кучи кандидатов, кого выбрали, говорите ему «хочу кнопку БАБЛО!» он делает, все!

Но 120% что придется взять еще пару математиков, тоже на з\п в 150-200тыс\мес.  и ими сказать «хочу кнопку БАБЛО!», они месяц-два мозгами покипят, и скажут программисту что делать...

В итоге, от вагонов денег, вас отделают всего 3 чела, по 200 тыс\мес каждый, разве это дорого?
avatar
Алексей Иванов, Ооо, только не это! Пройдено. Программисты в большинстве своем вообще не склонны к творчеству. 99%. Он не понимает, почему код и его логика могут меняться три раза в день, а на следующий день весь код надо удалить, за исключением корневых модулей. ))) Программист мыслит категориями ТЗ и почасовой оплаты. Я не против, только недостаток творческой составляющей портит весь банкет. Это, кстати, the only one reason, почему я САМ хочу начать кодить. Реально единственная — полное отсутствие твореского гена у платных разработчиков софта.
avatar
facevalue, не надо путать дизайнера и программиста… зачем креатив токарю, который делает часть ракеты? Это инженер креативит, а токарь делает… токарь — тот же прогер
avatar
Алексей Иванов, Немного непонятно мне сравнение. Токари частенько как раз очень творческие люди. Выточка деталей под какую-то хрень, которую не придумали даже в НАСА — это как раз про токарей. А если говорить о системном процессе большой машины — один придумал, отправил, второй выточил, вернул, первый посмотрел, не понравилось, вернул с доработками, второй опять напилил (хотя видит, что х*ня полная), вернул, первый опять… И так по кругу. Нерабочая версия. Недаром сейчас все толковые стартапы на дух не переносят кодеров-«токарей». Алгоритмический трейдинг тем более. Если, конечно, задача не стоит поторговать пересечение машек. Именно по этой причине очень мало успешных роботописателей. Они токари. Причем оху*но высокооплачиваемые. Политика прогресса давно требует перемен. ;) Убедился на последнем проекте. «Токарей» выгнали нах, взяли правильного одного с тройным бюджетом, и ВУАЛЯ! Так что об этом я отдельно готов написать.
avatar
изучайте AmiBroker. и вообще если хотите научиться программировать ( абстрактно )  надо начинать с пирожков и алгоритмов.
avatar
usertrader, С пирожками пробовал. Именно поэтому с абсолютной уверенностью заявляю — лучше потратить время на школьный АЯ, больше толку, чем от пирожков.

По Ами — да, я с ним и с ТСЛабом остановился. Но все равно. Я бы купил курс и по Ами, если бы он был построен по вышеописанному плану. Потому что без навыков программирования подойти к снаряду тяжело. А идея как раз в том, чтобы а) получать навыки программирования б) СРАЗУ решать какие-то задачи, которые нужы СЕЙЧАС. Без пирожков.
avatar
facevalue, ок! по amibroker — идите на amisite.ru. В тырнете есть руководство по языку. Он усечен по сравнению с С#.
Научиться программировать ( мыслить как программист ) это лучше всего Демидович старый учебник из СССР — факультатив из школы. Там много разборок по задачам с массивами. + блок-схемы. 
Программирование штука сложная — обучаемо ( хорошим преподом ) 60-70%. Изучение просто языка ничего не дает. Языки в целом одно и то же.  Можно даже на С++ нормально писать — если не лезть в конструкции типа i++. Надо учиться делать именно алгоритмы. Структурное программирование. + булева алгебра.  
avatar
Правда в том, что гуманитарии (в плохом смысле слова) на бирже не понимающие, зачем другие считали количество пирожков и тангенсы в любом случае и дальше будут платить тем, которые заканчивали физмат и побеждали на задротных олимпиадах.
И никакие книги это не изменят.
И это неплохо.
avatar
OakStreet, Зарабатывать зарплату может конечно и будут физматики, но глобально деньги в конечном итоге зарабатывает гуманитарий, который платил за работу. Так что это с какой стороны посмотреть. Если со стороны ЗП в 5000 евро и кредита на 20 лет в пределах МКАД, то да, физмат рулит. А если посмотреть из Милана после продажи проекта, то как бы… Для меня поход в программирование скорее больше похож на дауншифтинг.
avatar
>> давала бы примеры работы с биржевыми данными

Платформы для девелоперов можно брать отсюда (R | Api) и прочие: http://getanyplatform.com
avatar

теги блога facevalue

....все тэги



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