Андрей К

Читают

User-icon
503

Записи

127

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

Введение.

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


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

   Ну конечно. Это первое о чем думает домашний трейдер. Кому мол мы там нужны? Там все по блату. Скажу сразу, я тоже жил такой же мыслью. И только когда меня зажало, я начал действовать. Русские, что сказать. Вторая середина 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; Используется для сброса номеров сообщений. 
     На этом наверное буду заканчивать первую часть описания. В нее вошли функции, отвечающие исключительно за связь между клиентом и сервером. Давайте посмотрим теперь немного практики. И еще почертим.

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

Алготрейдинг: Не знаешь броду, не суйся в воду.

Пролог

     «Я собирался не прозевать переход рынка в активное состояние и… прозевал его. К мартовским событиям 2014 года я оказался не готов.» Алексей Каленкович.

Введение

     На протяжении нескольких последних лет, рынок алготрейдинга явно оживает в стране. Это заметно на просторах интернета по тому, как оживился и околорынок в этой тематике. Также заметно, как многие коллеги потянулись программировать, растут кол-во тем на соответствующих интернет ресурсах. Какая то невидимая рука навязывает трейдерам новую моду торговли. Попробуем разобраться.

Алготрейдинг, теория по полочкам

    То, что я буду говорить дальше, будем чисто моим мнением. Опять под кружкой чая, слегка оглядываясь назад, попробую написать несколько, возможно интересных, строк исходя из своего опыта и опыта коллег, которых я способен наблюдать сам. Чтобы вообще начать рассуждать про алготрейдинг дальше, я бы, для начала, постарался его классифицировать. Во-первых, я бы сразу хотел сказать, что алгоритмический трейдинг — это подвид торговли на финансовом рынке. Не отдельная каста, а всего лишь подвид. В свою очередь, алготрейдинг в своей массе можно разделить на:

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

Изучаю FIX протокол с нуля. Рисуем и программируем дальше.

Начало — Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

Вступление

     В прошлой статье я положил начало циклу разработки класса для работы с FIX протоколом. Обсудили его особенности передачи данных. Теперь время немного по программировать. Если профессионально подходить к делу, то нахрапом такие задачи решать нельзя. Надо посидеть с кружкой чая, порисовать схемы программного продукта. Что как будет взаимодействовать. Накидать блок схемы после полученного первого опыта. Наверное многие скажут, что это какой то дедовский способ. Но и программист я из старой плеяды, до сих пор любящий семерку Delphi.

Рисуем

     Напомню, как работают сетевые соединения. Через сокеты связываемся с сервером и начинаем обмениваться сообщениями.
Изучаю FIX протокол с нуля. Рисуем и программируем дальше.     Из опыта первой статьи вы наверное вспомните, что я предложил под каждый блок сообщения делать класс и на основе этих классов строить сообщение. Переспав с этой идеей, сегодня за кружкой чая, я решил остановиться на этой идее. А именно:

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

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

Вступление

     Никогда не увлекался скоростным трейдингом. Всегда хватало терминала. Изучать этот протокол меня побудил набор вакансий. Надо отметить, что я неспешно перебираю хорошие вакансии на рынке. Частному трейдеру очень сложно развиваться в одиночку — психологически, эмоционально, физически. Создавать и развиваться постоянно хочется, поэтому принял решение вливаться в коллектив. За несколько месяцев, мне удалось провести несколько собеседований. На втором этапе я проваливался именно из за не знаний протокола.  Предметную область я примерно представлял. Ну что там сложного? Соединился с биржей по сокетам и начинай обмен сообщениями. Надо отметить, что в этой области есть уже готовые разработки в виде quickfix или готового API от StockSharp (правда платные). Но я принял решение разбираться с нуля, чтобы вникнуть в детали.

Технические аспекты протокола


     Итак. Любой протокол, какой бы он сложный не был, работает примерно одинаково. Мы создаем у себя соединение с сервером, устанавливаем некий туннель между нами и сервером, посредством которого будем обмениваться сообщениями. Протокол — это как раз и есть набор правил, по которым строятся сообщения нужного формата. Если говорить технически, то мы должны создать сокет соединение с сервером на указанный порт.
Сообщение в FIX, как и в любом другом протоколе, состоит из нескольких блоков:
  • <Заголовок сообщения>
  • <Сообщение>
  • <Концовка сообщения>
     Наша задача, правильно заполнить эти блоки и отправить на сервер. Заголовок сообщения в свою очередь состоит из следующих данных:
  • <Начало сообщения, версия протокола>
  • <Длина (размер) сообщения>
  • <Тип сообщения>
  • <Идентификатор отправителя>
  • <Идентификатор получателя>
  • <Номер сообщения>
  • <Время отправки>
     Обращу ваше внимание, что я перечисляю обязательные поля. Есть еще и дополнительные. Концовка сообщения должна выглядеть так:
  • <Контрольная сумма сообщения>
     Сами данные заполняются достаточно легко. В виде: <тип поля> = <значение>. Например, <длина сообщения> = 78, то есть мы серверу говорим, что размер передаваемого нами сообщения составляет 78 байт. Стоит обратить внимание, что в протоколе FIX, типы полей кодируются в виде числовых значений. Например,  <длина сообщения> в протоколе передается как цифра 9. Исходя из выше сказанного, наш заголовок сообщения, выглядел бы следующим образом:
  • 8=FIX.4.4 _____ начало сообщения, протокол версии 4.4
  • 9=78 _____ размер сообщения 78 байт
  • 35=A _____ тип сообщения А, что означает попытка на соединение с сервером
  • 49=<ваш идентификатор выдается биржей>
  • 56=FG _____ идентификатор получателя, раздел Forts на бирже
  • 34=1 _____ первое сообщение
  • 52=20160212-11:42:51.812 _____ время отправки сообщения

Организационные вопросы

  1. Наша биржа дает тестовый контур для отработки своих алгоритмов по данному протоколу. Надо всего лишь написать запрос на доступ. Надо признать, тех служба работает отменно. Очень все быстро было организовано. Подробности http://moex.com/s442
  2. Обязательно понадобится описание протокола для нашей биржи ftp://ftp.moex.com/pub/FIX/Spectra/test/docs/spectra_fixgate_ru.pdf
  3. Чтобы вникнуть в тонкости передачи, мне очень помогла эта программа от биржи (позже я покажу как помогла) ftp://ftp.moex.com/pub/FIX/Spectra/Utils/fix_client.zip
  4. Описание самого протокола от создателей (на английском). Мне помог сильно wiki. http://fixwiki.org/fixwiki/FIXwiki
  5. Чтобы найти свои ошибки, мне приходилось перехватывать сообщения рабочего клиента биржи и сверять со своими. Для этого мне понадобился tcp/ip сниффер — программа перехвата сетевого трафика.
  6. Разработку я веду на c#.

К бою. Немного теоретической практики

     На момент изучения протокола, я уверен, многие столкнуться со следующими вопросами:
  • как именно считать длину сообщения
  • как разделять между собой данные
  • как считать контрольную сумму

     Если говорить образно. То, чтобы отправить сообщение на сервер, нам просто нужно сформировать нужную строку со всеми данными и отправить ее на биржу. Ну например:

8=FIX.4.4
;9=78;35=A;49=FG;56=tgFhcfx901U05;34=1;52=20160212-11:42:51.812
;98=0;108=3000;141=Y;10=047;

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

     Если быть внимательным, то мы увидим, что кол-во символов в строке у нас 100, а в заголовке сообщения мы передаем, что 78 (9 = 78). По правилам протокола FIX, длину сообщения нужно считать без учета концовки и первых двух полей заголовка. А именно:

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     С длиной сообщения разобрались. Теперь про разделитель. Пока в моем скрине это ";". В документациях западных написано что это символ SOH. Чтобы однозначно ответить на этот вопрос, я запустил прилагаемого клиента биржи и сниффером стал перехватывать сообщения между клиентом и биржей. Кстати, программа ведет логи, и их общение выглядит так (зеленое — передача запроса на биржу, красное — ответ от биржи):
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
     Зачеркнул свой идентификатор, прошу понять правильно. Ну а перехват сообщения выглядит так:
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Зеленым я отметил именно разделители. Как вы уже видите, это просто в шестнадцатеричном виде код 01. То есть, в нашу строку в виде разделителей, нужно вставлять код 01. Также я отметил для себя последовательность полей в сообщении. Почему то в другом порядке у меня вызывало ошибки (возможно тут я не прав)
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Ну и контрольная сумма. Контрольная сумма считается над всем сообщением, за исключением концовки. То есть в расчет берется только заголовок и само сообщение. Для этого, мы переводим каждый символ в его Ascii код и вычисляем их сумму. Полученную сумму делим по модулю 256. Это и будет контрольной суммой сообщения. При этом, значение должно быть трехзначным. Если мы получаем 2 знака, то подставляем 0 слева (например, если контрольная сумма = 68, то должны передать значении 068).

К бою. Начало программирования

     В законченном виде, разработка будет составлять готовый класс, для работы с протоколом. Теперь начинаю строить его по кирпичикам. Для начала, я создал несколько классов:
  • класс для работы с заголовками
  • класс для работы с сообщением подключения к серверу (onLogon)
  • класс для работы с концовкой
    Каждый класс включает в себя поля, которые передаются и некоторые методы для их обработки.
    Класс для работы с заголовками. Пока просто выглядит так: 
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#     Как видим, первый метод строит нужную строку из полей. Обратите внимание, там присутствует наш разделитель в виде спец символа \u0001. Второй метод вычисляет размер заголовка (чтобы потом высчитывать размер сообщения). Надо обратить внимание, что при передачи времени, миллисекунды должны указываться в трехзначном формате (даже если миллисекунды = 52, то передаем 052). Следующие классы строятся по аналогии.
Класс создания сообщения на подключение (инициализация сессии)
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
Класс создания концовки сообщения
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#

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

//Получаем ip сервера
IPAddress ipAddr = IPAddress.Parse(server);
IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, port);
//Создаем заголовк
HeaderMessage msHeader = new HeaderMessage
{
BeginString = «FIX.4.4»,
MsgType = «A», //Тип сообщения на установку сессии
SenderCompID = "",
TargetCompID = «FG»,
MsgSeqNum = 1
};
//Создаем сообщение на подключение onLogon
LogonMessage msLogon = new LogonMessage
{
EncryptMethod = 0,
HeartBtInt = 3000,
ResetSeqNumFlag = true
};

//Вычисляем длину сообщения
msHeader.BodyLength = msHeader.GetHeaderSize() + msLogon.GetMessageSize();
//Создаем концовку сообщения
TrailerMessage msTrailer = new TrailerMessage(msHeader.ToString() + msLogon.ToString());

//Формируем полное готовое сообщение
string fullMessage = msHeader.ToString() + msLogon.ToString() + msTrailer.ToString();
Console.WriteLine(«Сообщение для отправки {0}»,fullMessage);

//Создаем сокет для подключения
sSender = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
//Подключаемся
sSender.Connect(ipEndPoint);
Console.WriteLine(«Сокет соединился с {0} », sSender.RemoteEndPoint.ToString());


byte[] msg = Encoding.UTF8.GetBytes(fullMessage);
//Отправляем сообщение
int bytesSent = sSender.Send(msg);
Console.WriteLine(«Отправил {0} байт», bytesSent.ToString());


//Получаем ответ от сервера
byte[] bytes = new byte[1024];
int bytesRec = 0;
bytesRec = sSender.Receive(bytes);
Console.WriteLine(«Ответ от сервера: {0}», Encoding.UTF8.GetString(bytes, 0, bytesRec));


Все таки приложу и в виде картинок. Так наглядней. Кликабельно.
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
В результате мы запросили у сервера подключение с нашим логином. И получили от него ответ.
Изучаю FIX протокол с нуля. Разбор протокола, первый код на c#
По мере развития, буду продолжать с теоретической частью. Если модераторы перенесут в раздел «Алго», я не против.

Продолжение Изучаю FIX протокол с нуля. Рисуем и программируем дальше.

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

....все тэги



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