Третья неделя хаотичного боя с освоением программирования. Большое спасибо
Тимофей Мартынов за скурпулезное описание пути гуманитария в дебри кодинга. ) Реально ободряет.
Но задался я вопросом, а почему нет до сих пор труда по поводу «Алготрейдинг для начинающих»? То, что есть в сети, мягко говоря не соответствует действительности. Нет книги, которая бы рассматривала примеры не со стоимостью пирожков на количество гостей, а сразу — СРАЗУ — давала бы примеры работы с биржевыми данными. Специфика ведь сильно отличается от того, что можно узнать во всех учебниках по кодингу. Нафига мне пирожки с гостями? Или тангенсы с квадратными корнями?
ИМХО, что должно быть в таком учебнике, может кто психанет да напишет. )))
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