Андрей К
Андрей К личный блог
19 февраля 2016, 14:30

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

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

Обсуждения

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

Выставление заявок

     Итак по делу. В рабочую торговую неделю было сложно изучать (на экспирациях предел внимания). Только вечерами. Что я понял.
  • В документации от самой биржи есть масса недочетов. Быть может я их сформирую и отправлю им на исправление. (ну например, в одном месте говорится, что поле Account — три символа, в другом 7 символов). Более того, я привык ответы находить сам, и в поисках очередного, наткнулся на документацию западного брокера, 1 в 1 напоминающую документацию нашей биржи. Сложилось мнение, что ммвб взяли ее, перевели, немножко адаптировали, но не до исправили.
  • так же и работает клиент, взятый на ftp. Он работает хорошо, но нужно теперь знать тонкости. Иногда он может отправить сообщения не в том формате.
  • в общем как вы поняли, на этом этапе, все методом тыка.
  • и это тоже плюс. Попутно выяснил для себя массу нюансов протокола, пытаясь побороть ошибки.  
    Этим самым методом, я вывел набор полей, которые нужно отправить, чтобы заявка состоялась, а именно (далее будут поля только для Forts):
  • стандартный заголовок сообщения
  • TransactTime — время отправки ордера в формате yyyymmdd-hh:mm:ss.fff
  • ClOrdId — пользовательский id ордера. Можете придумать Random. Я просто передаю hhmmssfff
  • OrdType — тип ордера. На Forts (в отличии от ммвб) по маркету не принимает. Только Limit
  • Account — код торгового счета. (обновлено. Благодаря пользователю на форуме ММВБ, стало ясно, что Account = последним трем символам присвоенного SenderCompId. Обсуждение тут
  • Side — тип сделки. (1 — Buy, 2 — Sell)
  • Symbol — инструмент. Подходят коды вида RIH6
  • Price — цена
  • OrderQTY — объем сделки
  • Концовка сообщения
    Это список минимальных полей, чтобы ордер принялся системой. Далее про тонкости на тестовом контуре биржи. Когда я регистрировался, мне выдали только SenderID и TargertID, никакого Account я не знал. Перерыв весь интернет, я подумал, что тех служба мне что то недорассказала. Я им написал. Как всегда сработали отменно. Очень быстро ответили и выдали мне код счета. Весь последующий день я пытался подобрать нужные поля и данные. Получал много ошибок в ответ (либо вообще пустоту), но в итоге все замыкалось на получении ответа с текстом «Insufficient client funds». Опять перерыв интернет и ничего не найдя, я написал в тех службу биржи с просьбой попробовать начислить виртуальных денежных средств на счет. Тех служба опять сработала быстро, расширив мне лимиты.
В итоге я отправляю заявку и получаю успешный ответ:
Изучаю FIX протокол с нуля. Пытаюсь выставить заявки. Первые обсуждения.
Вот такой нюанс и очередной опыт. Более подробно напишу на выходных.
53 Комментария
  • AlexShul
    19 февраля 2016, 14:36
    К вакансиям, говорите, готовитесь… Поржал, спасибо.
  • Aberkromb Garell
    19 февраля 2016, 14:58
    круто!
  • sortarray sortarray
    19 февраля 2016, 15:04
    Сам по себе призыв к «неизобретению велосипедов» есть ни что иное, как призыв к обмазыванию обертками над обертками над обертками с ног до головы:) Это мантра для дебилов, которая в то же время выгодна дебилам, так как сами они мало что могут:) Ваш подход правильный не только с точки зрения проф роста, но и с точки зрения архитектуры. За ад зависимостей рано или поздно придется платить. Мнимая простота реализации всегда оборачивается сложностью.

    ЗЫ прошу не холиварить, это сугубо ИМХО, никому ничего не навязываю.
  • Garry36.6
    19 февраля 2016, 15:19
    Сильно.

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

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