Третья неделя хаотичного боя с освоением программирования. Большое спасибо
Тимофей Мартынов за скурпулезное описание пути гуманитария в дебри кодинга. ) Реально ободряет.
Но задался я вопросом, а почему нет до сих пор труда по поводу «Алготрейдинг для начинающих»? То, что есть в сети, мягко говоря не соответствует действительности. Нет книги, которая бы рассматривала примеры не со стоимостью пирожков на количество гостей, а сразу — СРАЗУ — давала бы примеры работы с биржевыми данными. Специфика ведь сильно отличается от того, что можно узнать во всех учебниках по кодингу. Нафига мне пирожки с гостями? Или тангенсы с квадратными корнями?
ИМХО, что должно быть в таком учебнике, может кто психанет да напишет. )))
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. Параллельно, это поднимет уровень конкуренции между курсами по алгопрограммированию.
Мнения?
ИМХО, фантастика.
Сколько гуманитариев, как Вы думаете, активно хотят лично программировать свои торговые системы на бирже?
Так что я думаю, что при правильном маркетинге такая книга разойдется массовым тиражом.
И по поводу гуманитариев — стремление к алготрейдингу у гуманитариев бывает выше, чем у математиков. Именно по причине гуманитарного склада ума, не способного думать статично и квадратно. Это умеют делать алгоритмы. Поэтому именно гуманитарии сядут за освоение такой книги.
Но на примерах из реальной жизни — такая книга нужна любому начинающему алготрейдеру.
Только учтите, почти все форексники, кроме разово попавших лохов, и львиная доля частников на ММВБ — просто игроманы. Что бы они ни звиздели, на самом деле они торгуют ради эмоций и алготрейдинг им разрабатывать нахрен не сдалось.
И если для этого надо программировать — программирует, а не переживает.
Все авторы постов про тильт, уровни, прогнозисты туда-пойдет-сюда пойдет, «я же говорил», «давайте торговать вместе», «я вчера дал правильный сигнал», «мне надо было выйти, а я замешкался», «почему нефть растет, кто что думает?» либо игроманы, либо околорыночники.
Нет!
Дело не в том, что лудоманы есть везде. Дело в том, что почти все частные торговцы, почти все смартикописатели — или лудоманы или околорыночники. И никто из них обсуждаемую автором книжку покупать не станет.
Проблема в том, что не каждый лудоман и околорыночник сознается в этом.
Пройдитесь по сегодняшним топикам.
Реклама обучения, флуд про свои позиции, всякие волфиксы, селфи «я и рынок», офтопики. Ни одного содержательного поста по алготрейдингу за весь день. Вчера было одно сообщение, которое обсуждали три с половиной инвалида умственного труда, причем давно находящиеся в теме. И всё!
Тут тот же принцип — для того, чтобы «решать прикладные задачи», необходимо иметь теор.минимум как минимум, а лучше — крепкий фундамент математической, алгоритмической и иной базы.
Хотите изучать программирование — берите книги по R, C#, C++, читайте мануалы. Хотите понимать теор.вер. и стохан — университетские учебники в помощь. Вы вольны сами фильтровать поток входящей информации. А волшебных таблеток/книжек и т.п. в природе не существует.
Смысл в том, что в любом случае Вам будет необходимо развиваться от простого к сложному. По мере потребности усложнения логики торговли Вам будет становиться тесно в рамках тех систем, в которых находитесь, придётся лезть в терра инкогнито, изучая что-то новое, т.к. текущий уровень знаний, тех.базы и опыта не даст Вам реализовать новые идеи. Аналогия с Лего полностью уместна и тут — если Ваша задача просто построить домик, то конструктора за глаза. Что-то посерьёзнее — придётся учиться пилить и строгать, а если хотите полноценный дом, то придётся начинать с основ по архитектуре, по теплоизоляционным материалам, принципам разнесения коммуникаций, учиться мешать цемент, изучать основы профессии каменщика. И т.п. Если же нет кирпичей и Вам придётся их делать, то ещё придётся осваивать основы и этого направления и т.п.
В алготрейдинге тот же принцип — кому-то хватит Метастока и скользящих, кому-то уже Wealth-Lab нужен, например, и чуть более продвинутые системы оформления стратегий. И так по нарастающей. Не хватает «кирпичей» в виде, например, готовых решений по работе с QUIK или шлюзом — учим «мат.часть» по изготовлению «кирпичей» (в виде Си/Си++, организацию и принципы работы стека TCP/IP и т.п., делаем «кирпичи» сами). То же самое, например, и в случае индикаторов — не хватает нам скорости скользящих (не подходят имеющиеся «кирпичи»), так берём и изучаем основы Цифровой Фильтрации как минимум в той части, которая касается фильтров НЧ и ВЧ, потом либо берём готовые реализации фильтров Чебышева или эллиптического, или же опять же реализуем собственный вариант «кирпичей». И т.д., и т.п.
Я к чему это всё — Ваша предполагаемая книга будет страдать от того, что невозможно определить необходимый уровень погружения в материал.
На мой взгляд, тут надо делать слоями. По аналогии с кругами Ада.))) На 5-7м кругах уже просто давать толстые списки книг, учебников и статей, которые необходимы будут к прочтению. Ну, чтива лет на 5-7))
PS: Мартынов, кстати, не гуманитарий, у него вполне профильное образование с уклоном в программирование.
Хотите что-то сделать — сделайте.
Все на сайте www.mql5.com. Есть даже статьи и разработки по торговле на бирже.
Главная ошибка начинающих изучать программирование — попытка сразу разбирать код, не заучивая команды языка программирования наизусть.
не думаю, что сильно отличается. Назовите отличия.
ИМХО, глупейший подход. Тем более Вы ратуете за гуманитариев, а призываете к тотальной формализации. Для любого человека гораздо прозрачней выглядит что-нибудь в духе
Range 1 to(10) map(x, x * x) reduce(+)
Вы же когда стихи читаете не выделяете *начало* *конец* и прочую билеберду. Зачем засирать детям мозг, если надо просто посчитать сумму квадратов:)
Выбираете из кучи кандидатов, кого выбрали, говорите ему «хочу кнопку БАБЛО!» он делает, все!
Но 120% что придется взять еще пару математиков, тоже на з\п в 150-200тыс\мес. и ими сказать «хочу кнопку БАБЛО!», они месяц-два мозгами покипят, и скажут программисту что делать...
В итоге, от вагонов денег, вас отделают всего 3 чела, по 200 тыс\мес каждый, разве это дорого?
По Ами — да, я с ним и с ТСЛабом остановился. Но все равно. Я бы купил курс и по Ами, если бы он был построен по вышеописанному плану. Потому что без навыков программирования подойти к снаряду тяжело. А идея как раз в том, чтобы а) получать навыки программирования б) СРАЗУ решать какие-то задачи, которые нужы СЕЙЧАС. Без пирожков.
Научиться программировать ( мыслить как программист ) это лучше всего Демидович старый учебник из СССР — факультатив из школы. Там много разборок по задачам с массивами. + блок-схемы.
Программирование штука сложная — обучаемо ( хорошим преподом ) 60-70%. Изучение просто языка ничего не дает. Языки в целом одно и то же. Можно даже на С++ нормально писать — если не лезть в конструкции типа i++. Надо учиться делать именно алгоритмы. Структурное программирование. + булева алгебра.
И никакие книги это не изменят.
И это неплохо.
Платформы для девелоперов можно брать отсюда (R | Api) и прочие: http://getanyplatform.com