Андрей К

Читают

User-icon
468

Записи

123

Фишечка-рюшечка для протоколов. Wireshark

Введение

      Для меня в свое время стало огромным сюрпризом, что WireShark поддерживает lua. Это открывает отличные возможности для анализа сетевого траффика. Наверняка, не все об этом знают. Поделюсь некоторыми возможностями.

Для кого и для чего

    Речь пойдет об анализе сетевого траффика. В первую очередь, анализом траффика, пользуются алгоритмисты и разработчики для прямого доступом к рыночным данным. На нашей бирже задействованы целый ряд протоколов, под UDP — это в первую очередь FAST (протокол распространения рыночных данных), под TCP — это транзакционные протоколы FIX, TWIME, мульти протоколы (рыночные данные + транзакции) Bridge, Plaza.
   У таких разработчиков и алгоритмистов должны частенько, или периодически, вставать вопросы, что там вообще происходит с торговыми роботами. Во сколько пришли на сетевую карту данные, во сколько отправил заявки, во сколько получил ответы и тд. Ставить временные метки внутри программы и выводить их на экран бывает не совсем то что надо. Во первых, это своего рода лишние задержки выполнения задач, а это уже отвлечение от боевых условий. Во вторых, если железо поддерживает, лучше всего брать временные метки у железа и смотреть во сколько приходят данные с самого сетевого кабеля и во сколько уходят данные в сам сетевой кабель. Это уже будет хороший и точный уровень расчетов.

( Читать дальше )

Современные железяки в алго.

Вместо введения


Представим ситуацию.

  • Написали код алгоритма. Оказался медленный.
  • Посидели, подумали, перестроили алгоритмы расчета. Ускорился. Мало.
  • Применили мета программирование в сложных расчетах. Получше.
  • Посидели, по профилировали, нашли узкие места в коде. Ускорили. Уже ничего.
  • Применили разные модели распараллеливания кода. Сервисные функции закинули в одно ядро, расчеты раскинули по ядрам. Сидим греем камень. Получше.
  • Максимум попытались убрать места, чтобы код не обращался в ОС
В общем что дальше? Дальше ищем прирост в железе. Вроде логично. Про бытовые моменты писать не буду, процессор там погнать или еще чего. Затрону специфичное оборудование.

Сетевой уровень.


Упрощенно схематично, данные с биржи можно получать примерно по такой схеме
Современные железяки в алго.


Для обычного разработчика тут достаточно много черного ящика. Мол, мое приложение получает данные, а что там и как там происходит, мне не подвластно и закрыто. По запросам западных алготрейдеров, производители пошли на встречу и разработали такое сетевое оборудование, которое такую схему превращает в следующую:

( Читать дальше )

Если полностью начать с нуля.

Если бы вдруг, я сам бы попытался организовать стабильный алготрейдинг с нуля.

  • купил бы б/у сервер. Тысяч за 200-300. Ядер 8 хватит. Почему б/у? Потому что на разработку уйдет месяцев 12-18, через такой срок может выйти новое железо (не только процессоры, но и сетевое железо) и существующее будет не актуально.
  • долго бы искал, но нашел бы программиста за 100т/мес.
  • снял бы офис, не в центре, тысяч 25/мес
  • купил бы пару рабочих станций суммой тысяч на 100.
  • расписал бы поэтапно:
  1. реализаций протокола plaza                                               — 2 мес
  2. реализация протокола fast                                                 — 2 мес
  3. реализация протокола fix                                                   — 2 мес
  4. реализация протокола twime                                              - 2 мес
  5. реализация протоколов bridge                                            - 2 мес
  6. изучение, оптимизация и реализация сетевых железяк        - 2мес
  7. изучение, исследования, биржевой инфраструктуры и опт-я — 1 мес
  8. проектирование, реализация многоядерной архитектуры      - 3 мес
  9. реализация торговых алгоритмов                                       — 3 мес
  10. ИТОГО                                                                             — 17 мес
  • на этапе проектирования использовал бы тестовые доступы к бирже. Вроде говорят тестовый скоро отменят, тогда это минимум 2000/мес
  • после реализации протоколов, разместился бы в колокации. от 25т/мес (тут можно у броков дешевле)
  • на седьмом этапе ушел бы от тестовых доступов и перешел на боевой. Для всех протоколов на вскидку это минимум от 16т/мес
ИТОГО, чтобы закончить реализацию, на вскидку минимум: 300т + 17 * 100т + 17 * 25т + 100т + 7 * 25т + 7 * 16т = 2.8млн

( Читать дальше )

Официальное разъяснение насчет отчета срочного рынка о позициях.

Введение

   На просторах СмартЛаба за последний месяц появлялись сообщения о случаях изменения отчетов «задним» числом о балансе позиций трейдеров на срочном рынке. Этим анализом я занимаюсь примерно 3 года и надо признать, не ожидал такого подвоха и не знал об этом. Участники СмартЛаба сразу стали обвинять Биржу в фальсификации. Понимая немного механизмы внутренние, я примерно представил, почему так происходит, но решил уточнить официально у самой Биржи.

Отсебятина

   Прежде чем кого либо обвинять, я стараюсь разобраться в проблеме. Я решил сравнить свою базу отчетов за 5 лет с имеющимися на текущий день отчетами биржи. Действительно, выявились отклонения. Сразу же я обратил внимание, что дни отклонения примерно крутятся вокруг экспираций и за очень малым исключением вне этих дней. Сразу прикинув, что происходит, я углубился и увидел, что общий открытый интерес позиций за день не меняется, а меняется только баланс позиций между юридическими и физическими лицами. Это очень и очень интересный факт. Приоткрыло мне глаза на кое что в моем анализе. 

( Читать дальше )

Работа в трейдинге.

Введение.

   Если пишу, то пишу крайне по делу. Некие гайды. Наверное созрел и для этого. Все таки кой ни какой опыт на собирался. Готов поделиться и этим. Я знаю, многие ребята, мечтают продвинуться дальше, устроиться куда, но страх препятствий и мысль о непробиваемой стене заставляет их сидеть дальше в частных трейдерах в домашнем кресле. Скажу сразу, любого собеседника — частного трейдера, занимающийся ручным трейдингом, я ставлю сразу в ранг бесприбыльного трейдера. Для чего это я сказал?… Извините, ночь на дворе, теряю уже мысли. А. Я считаю, что любой трейдер, проторговавший дома и принимающий решение дальше развиваться в трейдинге, обязан расти. И мое мнение — расти в коллективе. Там и только там.  Нет, конечно, есть исключения. Решпект например, или Вестников, или… мда, ну в прочем они не хотят публичности, называть их не буду.


Страх и самооценка.

   Ну конечно. Это первое о чем думает домашний трейдер. Кому мол мы там нужны? Там все по блату. Скажу сразу, я тоже жил такой же мыслью. И только когда меня зажало, я начал действовать. Русские, что сказать. Вторая середина 2015г была для меня не айс. Я принял решение окончательно уходить от скальпирования, потому что уже угорел. + Ушли деньги со срочного рынка, я перестал что либо вообще там видеть. Было тяжко и я плавно проедал со своей семьей все наработанное раннее несколькими годами. Ах да. Проедал и довносил, естественно же. Вообщем, русского прижало. Действуем.

Действуем.

  Я буду продолжать писать в полушутливой форме. Но где то там внизу, оформлю это все в план действий. Хотяяя. Чего шутить. Рубим с плеча сразу. Для началу, вам нужно решить. Какие у вас сильные стороны. Какие слабые. Обязательно должны решить, кем вы хотите работать в идеале в итоге. Ну например, вы с программистским уклоном и вы не против где то там, что то там по программировать для рынка. Или вы любите рыться в отчетах, цифрах, составлять какую то аналитику, а торговать вообще не можете. Ну или например, вам нравится, когда вам говорят сходить купить, вы идете покупаете. А в конце строите дневные отчеты. Скажу сразу. В том что я увидел и вижу, желание — прийти и управлять счетом компании — это вообще не вариант для диванного трейдера. Хотя, если вы считаете уже себя исключительно сформировавшимся трейдером и вам есть, что показать, вы можете просто дальше не читать и сразу идти разговаривать в компанию, например АТОН =)). Но сразу скажу, не все так просто. Везде сидят хитрее вас люди и много где будет подвох.

  Вообщем. Наконец то определились с пунктом 1. Это — кто я, где я и что я. Это очень важно. Скажу про себя, я пришел к этому, спустя аж 2 месяца поисков. Если бы я подумал об этом сразу, а не «лишь бы попасть куда нибудь», это сильно бы срезало время и качество поиска.
  Далее. Далее у нас пункт 2. Нужно засесть на крупные порталы вакансий и начать изучать похожие для вас. Они есть и будут всегда. Да. Спустя год, я уже знаю, есть сезонные факторы, летом например их нет. Вот сейчас они пошли. В начале года они тоже активно шли. Не торопитесь составлять свое резюме. Это очень важно. Каким бы умным не были, какое бы учреждение не закончили, сколько бы опыта не было, а ни по одной вакансии вы не пройдете. Ну вот так. Подобрав за 3-4 недели набор вакансий, вы уже будете понимать, что хотят в этой предметной области. Ну например для программистов хотят знать основные протоколы биржи. Как вариант. Для помощников трейдеров плюсом будет знать блумберг (убейте, не знаю почему, ни разу не использовал), возможно даже и язык SQL. Честно говоря, давно было, это что первое пришло на память. 

  Пункт 3. Естественно готовимся. По всем нужным пунктам. Расскажу сразу. У меня было как то 2 собеседования, я одно завалил по скайпу (а это второй этап собеседования), а одно завалил уже при личном общении (а это один из последних этапов). И все потому, что я просто не сделал ни пункт 2, ни пункт 3. После этого я поумнел быстро. На одну вакансию я тогда просто мечтал попасть. Был зол на себя и сел готовиться.
  Пункт 4. Когда вы уже поверхностно, за недельку пробежали глазами весь материал, можно пробовать составлять резюме. Забегу вперед. Теперь я точно знаю. Мое резюме было провальным. Даже смешно на него сейчас смотреть. Нет, не смешно. Стыдно. Как представлю, что это читали. Поэтому пункту рекомендаций не будет. Знаю только одно, что резюме нужно заточить под требования вакансии. И отобразить в нем то, что вы умеете и что хочет от вас работодатель. Но тут вилка. Реально вы будете знать, каким должно быть отличное резюме, это когда уже отработаете в индустрии хотя бы месяца 4.
Пункта пять наверное не будет. Все остальное нужно выделить в отдельную главу.

Процесс

   Здесь конечно вы получите больше всего опыта трудоустройства в индустрии =)). Забегу вперед. Работу я искал 3 месяца. Отправил 146 резюме только на одном портале (146 — это говорит о том, что вакансии все таки есть). Да кстати. Как я уже сказал, меня тогда поприжало. И я спаммил своим резюме везде где только можно. Внимание!!! Я даже писал А. Герчику, А. Веденееву, Кселиус, В. Олейнику (в личку), абсолютно всем брокерам, абсолютно всем проп. компаниям которые можно найти в инете (а их оказывается не мало), обеим биржам. Как я уже сказал, резюме мое — и смех и грех. Какое резюме — таков и ответ. То есть пустота =)). Хотя нет, на Бирже я собеседовался. Слава Богу, они меня не взяли =))
К чему нужно готовиться:
    — вся работа только в Москве. Даже не в Питере. В Москве ее валом. Поэтому нужно готовиться к переезду.
    — к полному безразличию. С провинции вы никому не нужны. Я даже пошел на хитрость и написал, что я с Питера. Тогда стали звонить хотя бы форексники. Вы знаете, когда ни одного звонка, ты даже рад и им. Просто хотя бы поболтать
    — обращаясь в крупные компании или банк, вы должны быть готовы, что ваше резюме попадает в кадровое. Там молодые девочки, ничего не понимающие в специальности, проверяют ваше резюме на предмет совпадения с вакансией и решают, передавать ли его дальше. Так же вы должны быть готовы тут встретиться с враньем. Они будут говорить, что передали его начальнику на стол и теперь только он решает. А сами выкинули его в корзину рабочего стола. Я точно знаю.  Кстати про начальников. Я даже находил ФИО начальников отделов банков и писал им в фейсбуке… ну очень хотелось устроиться =)))
    — вы должны быть готовы к пустышкам. Я так думаю, компании хотят набрать банк резюме и размещают вакансию.  Вы думаете, что вот вот вы уже трудоустроены, а на самом деле чуть не так. Возможно, часть смартлабовцев тут себя узнает =))

Вообще жути нагнал. Ну да. Когда ты не подготовленный, это все сильно удручает, возможно кто то и свесит руки. Ко мне обращалось несколько так же простых ребят с регионов, с просьбой поделиться опытом. Вы знаете, все в ваших руках. Время показывает, все реально. Ребята тоже трудятся.

 

Цифры и все таки...

Да. Вроде заголовок такой громкий сделал. А по факту получили обобщенный текст про все профессии. Давайте про самое интересное. Ночь на дворе. Я еще сижу на работе и пытаюсь структурировано закончить.

1) Вы студент 4-5 курс и мечтаете о работе.
Да не вопрос. Банки любят набирать на практику. Это я говорю не как изучивший вакансии. У меня получилось пройти собеседование в n банков, я видел их просто там. Сбер мне еще запомнился. Супер условия. Набирал студентов на практику. Платили около 20 первый испытательный + с последующим трудоустройством сразу на 35-40т. На начинающего помощника трейдера.

2) Вы уже поторговали. Пару лет. Квик, блумберг, ексель, биржевые отчеты… все с закрытыми глазами делаете. Ваш путь в помощники трейдера (джуниор). Это в Мск 50-60т руб. В Питере до 50. Нужны в банки обычно. Это самое реальное, на что можно претендовать. Потом все зависит от вас. Нужно рыть зубами.

3) Вы программист. Не совсем уверенный в силах, так как  вроде c++ знаете, а кодите все на mql. Ну это тоже джуниор. 50т руб. Дальше все от вас зависит.

4) Вы очень толковый программист. За спиной у вас стоят разработки, вы уверенный, вы можете доказать, обосновать, но никогда еще не работали для рынка. 80-100т руб.

5) Вы программист, отработали в индустрии. Со многим на короткой ноге. Различные тонкости можете рассказать во сне. От 150т руб. 

Про проп и предложения поторговать чужие средства компании не знаю. Не сложилось. Почему то в последний момент представители таких компаний пропадали. Я даже не успевал себя презентовать. И вообще думаю, это не для диванного трейдера. Слава Богу, меня не повело по этой стезе, а то пришлось бы отдавать долг, как инвесторам  =)).


Вместо выводов...

Бесконечно завидую ребятам, которые спустя лет 6 трейдинга, так же и остались частным трейдером. Я не Шмог =)). У меня наверное все впереди. НО. Я теперь придерживаюсь следующего мнения. Что частный трейдер обязан развиваться. Как бы он хорошо не торговал. А я кстати торговал (скальпировал) очень даже до 2015. И обязан развиваться он в коллективе, в индустрии. Здесь знания катятся как снежный ком с горы на человека. Это раз. А два — у вас появляется постоянный доход, например оклада. Хорошо конечно, если вам удается еще договориться о проценте с разработок (а такое везде практикуется). Так вот постоянный доход… Тогда ваша торговля нереально стабилизируется =)) Таков мой опыт. Я закончил, извините если что не так.

Допишу чуть чуть.
Этапы собеседования обычно так:
— скайп беседа с агентством (если вакансию распространяет агенство)
— первое знакомство по скайпу с представителем компании
— если да, то расширенная скайп беседа со специалистами
— если да, собеседование личное. Придется ехать уже.

ps. Забыл совсем. Домой наверное хотелось. Если просто хотите работать рядом с рынком, идите на Московскую Биржу. Вакансий валом, разных, интересных, сложных, не сложных. Самое то.

По следам .Net Core 1.0

Для начала, хотел бы сказать спасибо пользователю crazyFakir для отслеживания темы c# в Линукс. Последняя его заметка рассказала нам об официальном релизе шарпа в Линукс.

  Для чего?

      Ну наверное для того, чтобы расширить возможности c++. Это не говорит о том, что с++ не все силен, просто нам теперь дают возможность более быстро решать задачи в виде большого количества оберток с заглавной вывеской .Net. Я честно пытался решить массу задач на c++, но бросил эти затеи, оставшись на c# под Windows. Игра в данном случае не стоит свеч.

  Когда использую C#

     Шарп использую для обслуживания трейдинга. Я очень много выкачиваю данных для анализа. А именно:
  • Выкачивание cme отчетов и парсинг pdf. Складирование все БД;
  • Парсинг yohoo, nymex для ведения истории ОИ опционов американских акций;
  • Парсинг micex на предмет все возможных данных, складирование все в БД;
  • Выкачивание и парсинг с ftp micex, складирование все в БД;
  • Парсинг всевозможных банковских курсов валют;
  • … другой разбор рыночных данных.


( Читать дальше )

Изучаю FIX протокол с нуля. Пытаюсь выставить заявки. Первые обсуждения.

Начало положено тут 
Продолжил тут
Затем тут

Обсуждения

     Сегодня будет без введения. Мои первые публикации вызвали небольшие обсуждения, как в комментариях, так и в личных беседах. Если классифицировать, то можно подвести некие итоги:
  • занимаюсь ерундой, до меня уже давно все создано. Прежде чем, что либо начать, конечно же я изучаю положение дел. Я прекрасно изучил, что уже есть конкретные разработки. Но я уже говорил, что я готовлюсь к хорошим вакансиям и хочу знать досконально протокол. Человек я щепетильный, мне важно знать каждую мелочь. Другого метода изучения я не придумал. 
  • мой код не оптимален. Хоть я и не услышал конкретные доводы, но все же склонен к такой мысли. Код только строится и конечно будет еще дорабатываться.
  • выбрал не ту платформу. Тут самое интересное. Были интересные беседы. Но надо заметить. Я не отвечаю на позывы типа: «си ерунда, бери  то-то». Я считаю это не профессиональным. Но все же интересные моменты были. Итог:
      — Для скоростного трейдинга желательно уходить на Linux. Основной довод — несовершенство windows многозадачности. Лишним доказательством будет являться набор постоянных вакансий на рынке, где требуются именно Linux программисты. Также вы должны заметить, какое внимание Linux оказывается на будущей конференции алготрейдеров (27 февраля).
    — Желательное использование Си и Java. Ничего пока не могу сказать. Но стоит заметить, как и в беседах было подчеркнуто, так и в вакансиях на рынке, западные компании требуют именно java программисты. 
  • в любом случае, направление движения изучения вырисовывается, за что, спасибо собеседникам
  • в личных беседах я увидел заинтересованности в изучении протокола. Думаю статьи и дальше будут полезны. Литературы доступной с разжевыванием мало. А интерес смотрю есть.
  • получил несколько предложений поработать вместе. Оказывается СЛ читают интересные люди. Это радует.


( Читать дальше )

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

Начало положено тут
Продолжение тут

Вступление

     Разработка обертки протокола, только на первый взгляд, кажется простым. Нахрапом такую задачу не взять. Тут, как я уже говорил, важно посидеть с кружкой чая, полистать документацию, построить различные схемы, структуры. На основе этого, разработать логику обертки, иерархию классов и тд. Разберем иерархию команд протокола. Для анализа была взята документация самой биржи.

Теоретически аспекты. Разложим немного по полочкам.

     Все сообщения протокола можно разложить на несколько тем. Я начну с первой группы:
  1. Сообщения для поддержания связи.
  • Logon; Тип=A; Сообщение для инициализации сессии. Грубо говоря для подключения к серверу
  • Logout; Тип=5; Сообщение для завершения сессии. Сообщаем серверу о прекращении связи
  • Hearbeat; Тип=0; Сообщение для поддержания связи. 
  • Request; Тип=1; Сообщение для поддержания связи. Запрос второй стороны, жива ли первая
  • Reject; Тип=3; Сообщение об ошибке. Получаем его, если мы не правильно оформили свое сообщение
  • Resend Request; Тип=2; Повторный запрос сообщений, в случае утери. Задается интервал номеров сообщений.
  • Sequence Reset; Тип=4; Используется для сброса номеров сообщений. 
     На этом наверное буду заканчивать первую часть описания. В нее вошли функции, отвечающие исключительно за связь между клиентом и сервером. Давайте посмотрим теперь немного практики. И еще почертим.

( Читать дальше )

теги блога Андрей К

....все тэги



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