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