ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 61
Abonament PDF

Protocolul FIX

Iulia Sălăgean
Software Engineer @ Flow Traders



PROGRAMARE

Protocolul Financial Information eXchange (FIX) este un tipar de mesaje utilizat pentru schimbul de informație financiară. A fost creat pentru schimbul de informație în tranzacții și pe piețe, schimb efectuat în timp real.

Când a fost creat inițial, era destinat automatizării comunicării prin telefon. Prima comunicare via FIX s-a realizat între Fidelity Investments și Salomon Brothers. Una din motivațiile din spatele comunicării automate de mașini a fost reducerea numărului de erori cauzate de factorii umani.

Azi, este utilizat intensiv de lumea financiară, de la companiile de brokerage la instituțiile de schimb și vânzări.

Tipuri de mesaje

Există două tipuri de mesaje FIX:

Cum funcționează

Protocolul FIX este o listă de mesaje predefinite ce conține o serie de câmpuri.

Pentru a înțelege un mesaj FIX, destinatarul trebuie să aibă un dicționar care să decodeze mesajul.

Orice mesaj FIX conține o listă de câmpuri delimitate de caractere SOH (ASCII 01). Fiecare câmp include un tag (o etichetă, un număr întreg pozitiv) și o valoare.

Un mesaj FIX conține trei părți:

Să luăm următorul exemplu. În acest exemplu, " | " este folosit în loc de SOH, pentru un grad mai mare de lizibilitate.

8=FIX.4.2 | 9=178 | 35=8 | 49=PHLX | 56=PERS | 52=20071123-05:30:00.000 | 11=ATOMNOCCC9990900 | 20=3 | 150=E | 39=E | 55=MSFT | 167=CS | 54=1 | 38=15 | 40=2 | 44=15 | 58=PHLX EQUITY TESTING | 59=0 | 47=C | 32=0 | 31=0 | 151=15 | 14=0 | 6=0 | 10=128 | 

Aici, 8=FIX.4.2 este primul câmp al mesajului și al headerului. Conține tagul 8, ce corespunde lui BeginString și valorii - FIX.4.2, care este versiunea FIX a acestui mesaj.

Există câteva tooluri care ajută la parsarea unui mesaj FIX. Eu utilizez Fix Parser pentru a analiza mesajul.

Headerul este format din primele câmpuri. Acesta este un mesaj trimis de expeditor cu compID PHLX unui destinatar cu compID PERS. Acest mesaj este un raport de execuție pentru confirmarea schimbărilor unei comenzi existente între un expeditor și un destinatar. În acest caz, PENDING REPLACE reprezintă statusul comenzii. Mesajul mai conține și alte informații și, evident, este mai ușor de citit versiunea parsată comparativ cu mesajul FIX. Un astfel de mesaj poate fi tradus cu un dicționar de date. Acest dicționar poate fi un fișier XML care descrie formatul mesajelor. Aici este un fragment dintr-un dicționar utilizat de QuickFix ( implementarea open source a FIX Engine):

<fix type=”FIX” major=”4” minor=”2” servicepack=”0”>
<header>
  <field name=”BeginString” required=”Y”/>
  <field name=”BodyLength” required=”Y”/>
  <field name=”MsgType” required=”Y”/>
  <field name=”SenderCompID” required=”Y”/>
  <field name=”TargetCompID” required=”Y”/>
</header>
….
<message name=”ExecutionReport” msgtype=”8” msgcat=”app”>
  <field name=”OrderID” required=”Y”/>
  <field name=”SecondaryOrderID” required=”N”/>
  <field name=”ExecID” required=”Y”/>
  <field name=”ExecTransType” required=”Y”/>
   ……
  <field name=”ExecRefID” required=”N”/>
  <field name=”ExecType” required=”Y”/>
  <field name=”OrdStatus” required=”Y”/>
</message>
<trailer>
  <field name=”SignatureLength” required=”N”/>
  <field name=”Signature” required=”N”/>
  <field name=”CheckSum” required=”Y”/>
</trailer>
<fields>
  <field number=”1” name=”Account” type=”STRING”/>
  <field number=”17” name=”ExecID” type=”STRING”/>
  <field number=”20” name=”ExecTransType” type=”CHAR”>
    <value enum=”0” description=”NEW”/>
    <value enum=”1” description=”CANCEL”/>
    <value enum=”2” description=”CORRECT”/>
   <value enum=”3” description=”STATUS”/>
 </field>
……
</fields>
</fix>

Dicționarul descrie conținutul fiecărui mesaj FIX. Headerul se aplică tuturor mesajelor, și trailerului. Descrierea mesajului conține toate câmpurile ce pot fi utilizate pentru acel tip de mesaj. La finalul dicționarului, există o listă de câmpuri, cu descriere și valori posibile pentru tipurile enum.

Utilizarea dicționarului permite oricărei entități să adauge câmpuri customizate.

Istoric

Primii pași pentru a ajunge la nivelul de azi, în ceea ce privește standardizarea comunicării în lumea financiară prin intermediul protocolului FIX, au fost efectuați acum 25 de ani, când comunicarea dintre Fidelity Investments și Salomon Brothers a fost transferată spre aceste date citite și interpretate de mașini.

Fiecare nouă versiune a protocolului a introdus noi tipuri de mesaje și câmpuri pentru a veni în întâmpinarea nevoilor unei game largi de utilizatori.

Versiunea 5.0 a adus o schimbare majoră. A introdus paradigma Transport Independence care separă FIX Session Protocol de Application Protocol. Prin aceasta, mesajele de tip aplicație pot fi trimise prin intermediul oricărei tehnologii de transport, FIX Session Protocol fiind una dintre ele.

Comunitatea Fix Trading

Numită inițial FIX Protocol Ltd, Fix Trading Community a fost creată în 1998 pentru a ajuta la standardizarea protocolului FIX. De asemenea, aceasta ajută la dezvoltarea protocolului pentru a veni în întâmpinarea nevoilor clienţilor. Comunitatea promovează acest protocol drept un limbaj unificat pentru piețele financiare.

Azi FIX Trading Community este o organizație independentă și neutră care promovează și dezvoltă familia standardelor FIX, aici incluzându-se și protocolul FIX. Comunitatea explorează și alte standard de tip open care nu fac parte din propriul patrimoniu, motiv pentru care și-a schimbat numele în Trading Community.

Este o organizație mondială cu membri de pe șase continente, inclusiv firme comerciale, sedii de comercializare, reglementatori, vânzători și alți asociați din industrie. Este o comunitate ce reunește oameni din lumea financiară, o lume caracterizată de competitivitate.

Resurse

  1. http://www.fixtradingcommunity.org/FIXimate/FIXimate3.0/?language=en&version=FIX.4.2

  2. https://fixparser.targetcompid.com/

  3. Tool de parsare a mesajelor FIX

  4. Implementarea open source pentru protocolul FIX

În aceeaşi ediţie ... (61)

▼ TOATE ARTICOLELE ▼

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects