facevalue
facevalue личный блог
23 марта 2016, 14:52

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

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

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

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

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. Параллельно, это поднимет уровень конкуренции между курсами по алгопрограммированию.

Мнения?
54 Комментария
  • SergeyJu
    23 марта 2016, 14:57
    Если предположить, по максимуму, что такой учебник купит 500 человек и автор получит 50% цены реализации, что чрезмерно оптимистично, и затраты труда автора оценить 1 000 000 рублей, что очень скромно, розничная цена составит 4 000 рублей за штуку. 
    ИМХО, фантастика.
      • SergeyJu
        23 марта 2016, 15:08
        facevalue, цифра, имхо, завышена. 
        Сколько гуманитариев, как Вы думаете, активно хотят лично программировать свои торговые системы на бирже?

          • SergeyJu
            23 марта 2016, 15:17
            facevalue, и кто Вам мешает нанять автора, напечатать и устроить грамотный маркетинг?
            Только учтите, почти все форексники, кроме разово попавших лохов,  и львиная доля частников на ММВБ — просто игроманы. Что бы они ни звиздели, на самом деле они торгуют ради эмоций и алготрейдинг им разрабатывать нахрен не сдалось. 
            • Eu-Gin
              23 марта 2016, 15:29
              SergeyJu, пошутил?
              • SergeyJu
                23 марта 2016, 15:31
                Eu-Gin, нет.
                • Eu-Gin
                  23 марта 2016, 15:40
                  SergeyJu, чем выше риск, тем больше необходимость в алгоритмизации. сидеть годами в говнопапирках робот не нужен.
                  • SergeyJu
                    23 марта 2016, 15:46
                    Eu-Gin, игроманам он не нужен тем более.
                    • Eu-Gin
                      23 марта 2016, 16:10
                      SergeyJu, а кто не игроман?
                      • SergeyJu
                        23 марта 2016, 16:18
                        Eu-Gin, тот, кто рутинно торгует ради денег.
                        И если для этого надо  программировать — программирует, а не переживает.
                        Все авторы постов про тильт, уровни, прогнозисты туда-пойдет-сюда пойдет, «я же говорил», «давайте торговать вместе», «я вчера дал правильный сигнал», «мне надо было выйти, а я замешкался», «почему нефть растет, кто что думает?» либо игроманы, либо околорыночники. 


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


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

    PS: Мартынов, кстати, не гуманитарий, у него вполне профильное образование с уклоном в программирование.
      • Alexand77
        23 марта 2016, 15:13
        facevalue, ну вот Тимофей сейчас разберется сам с C# до конца и все подробно напишет, с желтой обложечкой и шашечками, как вы любите. Журналистом он уже был, а по диплому — программист. 
      • SergeyJu
        23 марта 2016, 15:19
        facevalue, брокеры в России спонсировали издание большого количества книг. Им это практически не принесло клиентов, а об окупаемости за счет участия в доходах, насколько мне известно, никто и мыслей не имел. Смешно.
          • SergeyJu
            23 марта 2016, 15:29
            facevalue, мне лень.
            Хотите что-то сделать — сделайте.
  • nik
    23 марта 2016, 15:04
    а что вообще забыл гуманитарий на бирже?
  • Translator
    23 марта 2016, 15:24
    Учебник по программированию для торгующих на форексе есть, как и большая коллекция статей и готовых решений с открытым кодом.
    Все на сайте www.mql5.com. Есть даже статьи и разработки по торговле на бирже.
    Главная ошибка начинающих изучать программирование — попытка сразу разбирать код, не заучивая команды языка программирования наизусть.
  • sortarray sortarray
    23 марта 2016, 15:26
    Специфика ведь сильно отличается от того, что можно узнать во всех учебниках по кодингу.

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

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

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

    Вы же когда стихи читаете не выделяете *начало* *конец* и прочую билеберду. Зачем засирать детям мозг, если надо просто посчитать сумму квадратов:)
  • Русский
    23 марта 2016, 18:20
    Регистрируетесь на сайта с вакансиями, вешаете объявление что нужен прогер с такими-то скилами, ставите вилку 150-200 тыс\мес. и вот, вам не надо тратить 5-7 лет на обучение.

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

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

    В итоге, от вагонов денег, вас отделают всего 3 чела, по 200 тыс\мес каждый, разве это дорого?
      • Русский
        23 марта 2016, 20:25
        facevalue, не надо путать дизайнера и программиста… зачем креатив токарю, который делает часть ракеты? Это инженер креативит, а токарь делает… токарь — тот же прогер
  • usertrader
    23 марта 2016, 20:05
    изучайте AmiBroker. и вообще если хотите научиться программировать ( абстрактно )  надо начинать с пирожков и алгоритмов.
      • usertrader
        24 марта 2016, 10:25
        facevalue, ок! по amibroker — идите на amisite.ru. В тырнете есть руководство по языку. Он усечен по сравнению с С#.
        Научиться программировать ( мыслить как программист ) это лучше всего Демидович старый учебник из СССР — факультатив из школы. Там много разборок по задачам с массивами. + блок-схемы. 
        Программирование штука сложная — обучаемо ( хорошим преподом ) 60-70%. Изучение просто языка ничего не дает. Языки в целом одно и то же.  Можно даже на С++ нормально писать — если не лезть в конструкции типа i++. Надо учиться делать именно алгоритмы. Структурное программирование. + булева алгебра.  
  • OakStreet
    23 марта 2016, 20:33
    Правда в том, что гуманитарии (в плохом смысле слова) на бирже не понимающие, зачем другие считали количество пирожков и тангенсы в любом случае и дальше будут платить тем, которые заканчивали физмат и побеждали на задротных олимпиадах.
    И никакие книги это не изменят.
    И это неплохо.
  • Алимат Мирзо
    25 сентября 2016, 18:26
    >> давала бы примеры работы с биржевыми данными

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

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн