A Financial Information eXchange ( FIX ) protokoll (pénzügyi információcsere protokoll) egy olyan adatátviteli protokoll , amely a tőzsdei kereskedés résztvevői közötti valós idejű adatcsere nemzetközi szabványa.
A FIX protokoll specifikációt 1992-ben hozták létre, hogy a Fidelity Investments és a Salomon Brothers közötti tőzsdei kereskedéssel kapcsolatos információkat továbbítsa . Chris Morstatt programozó és Jim Leman (üzleti) a Salomontól, valamint Jacques Perold üzletember és Robert Lamoureux programozó a Fidelitytől készítette. A protokoll kezdetben csak a bróker-kereskedők és intézményi ügyfeleik közötti adatcserét szolgálta. Akkoriban a pályázatokról és azok lebonyolításáról szóban, telefonon nyújtottak tájékoztatást. A Fidelity rájött, hogy a bróker-kereskedőtől származó információ rossz kereskedőhöz kerülhet, vagy egyszerűen elveszhet, amint mindkét beszélgetőpartner leteszi a telefont. Az ötlet az volt, hogy a verbális kommunikációt felváltsa a számítógépek közötti adatátvitel. Ezek az információk elemezhetők, tárolhatók és döntéshozatalhoz felhasználhatók. Például az az eljárás, amikor egy bróker-kereskedő felhív egy másikat azzal a szándékkal, hogy vásároljon vagy eladjon egy részvénycsomagot, a FIX protokollban tükröződik az IOI üzenetek cseréjében.
A FIX Kereskedelmi Közösség szerint a FIX protokoll de facto globális szabvánnyá vált a tőzsdei kereskedési piacon a kereskedés előtti és végrehajtási szakaszban történő üzenetváltáshoz. Fokozatosan kiterjed a kereskedés utáni szakaszra, valamint más értékpapír-osztályokkal való kereskedésre is: devizapiacon , adósságpiacokon és származékos piacokon [1] . A FIX protokollt a legtöbb legnagyobb bank és elektronikus kereskedési rendszer, valamint a világ legnagyobb tőzsdéje támogatja .
A FIX Trading Community egy non-profit szervezet, amely a protokoll specifikációjának tulajdonosa és karbantartója. 2009-től a specifikáció nyilvános volt .
A FIX üzenetek tag=value mezőkből állnak. A mezőket az SOH - Fejléc kezdete (0x01) ASCII-kód választja el. A címke a mező száma. Például a 48-as címke a securityID rövidítése, és az értéklánc tartalmazza a biztonsági azonosítót (ticker).
Az üzenet 3 részből áll: fejlécből, törzsből és végből. Az üzenet utolsó mezője az ellenőrző összeg (10-es címke).
A FIX protokoll kötelező és választható mezőket határoz meg. Ebben az esetben az üzenettörzsön belüli mezők sorrendje nem fontos, bár az implementációknál megszokott, hogy bizonyos hagyományokhoz ragaszkodnak a címkék egymás utáni sorrendjében.
A 4.4-es verzióig a fejléc három kötelező címkét tartalmaz: 8 ( BeginString), 9 ( BodyLength) és 35 ( MsgType).
A FIXT.1.1 / FIX.5.0-tól kezdve a fejlécben öt kötelező és egy opcionális címke van meghatározva: 8 ( BeginString), 9 ( BodyLength), 35 ( MsgType), 49 ( SenderCompID), 56 ( TargetCompID) és 1128 ( ApplVerID- ha van, akkor kötelező 6. pozícióra állítva).
Az üzenet "törzsének" tartalma az üzenet típusától függ, amit a fejlécben jeleznek (35, MsgType).
Az utolsó címke mindig a 10-es címke, amely az üzenet ellenőrző összegét tartalmazza. Ezt az összeget mindig háromjegyű számként fejezzük ki, amelyet a specifikációban leírt speciális képlet alapján számítanak ki (például 10=002).
Példa az "Új rendelés" FIX üzenetre. Az egyértelműség kedvéért függőleges sávok helyettesítik az SOH szimbólumot:
8=FIX.4.2 | 9=178 | 35=D | 34=123123 | 49=BROKER11 | 56=PHLX | 52=20071123-05:30:00.000 | 11=ATOMNOCCC9990900 | 55=MSFT | 167=FUT | 54=1 | 38=15 | 40=2 | 44=15 | 59=0 | 10=128 |Az üzenet a következőképpen olvasható: FIX formátumú üzenet 4.2 (8=FIX.4.2), üzenet hossza 178 bájt (9=178), üzenet típusa "új rendelés" (35=D), üzenet száma 123123 (34=123123) , BROKER11 brókertől (49=BROKER11) a philadelphiai tőzsdére (56=PHLX), elküldve (52-es címke), ATOMNOCCC9990900 megbízási szám a bróker kereskedési rendszerében (11=ATOMNOCCC9990900) vásárlásra (54=1) határidős ügyletek (167) ) a cég részvényeire a Microsoft (55=MSFT) 15 tétel (38=15) mennyiségben 15 (44=15) limitált (40=2) áron, a megbízás a kereskedési nap végén jár le ( 59=0).
A FAST protokoll a FIX üzenetek bináris formátumú kódolására szolgál .
A FIX protokoll a kereskedési rendszerek közötti kereskedési munkamenetek adatcseréjére szolgál. A FIX üzenetek XML reprezentációját FIXML -nek nevezik ; az XML -hez hasonlóan önleíró.
A FIX egy TCP -n keresztüli munkamenet réteg protokoll . Értékpapírokkal való kereskedés során a FIX népszerűbb, mivel a FIXML üzenetek általában sokkal hosszabbak.
Az üzenetek két szintre oszthatók: vezérlés és alkalmazás. A vezérlési szint határozza meg a FIX szekció alapvető paramétereit: kapcsolatot létesít, bezárja, visszaállítja a hiányzó üzeneteket. Az alkalmazás szintje az adatok küldéséhez és fogadásához kapcsolódik: kérések (kérések), azok végrehajtása (tranzakciók) (végrehajtások és kitöltések), meghibásodások (elutasítások), piaci információk (piaci adatok), aktuális állapotra vonatkozó információk kérése (státuszkérések), stb.
A FIX protokollnak több verziója is van, amelyek a protokoll fejlesztésével és különböző értékpapír-osztályok támogatásával jelentek meg. A protokoll legújabb verziója az 5.0.SP2. A különböző kereskedési rendszerek különböző protokollokat támogatnak, és néha több protokollt is párhuzamosan. A FIX protokoll 4.2-es verziója (2000. március) volt a legelterjedtebb a kereskedési rendszerek között, még mindig vannak 4.1-es (1998. április) vagy akár 4.0-s (1997. január) protokollal dolgozó tőzsdék és brókerek, például a Sydney Derivatives Exchange [2]. .
A protokoll implementálásakor az adott kereskedési rendszer ( tőzsde , bróker , elektronikus kereskedési platform ) fejlesztői nem követhetik szigorúan a specifikáció kiválasztott verzióját, és saját kiegészítő címkéket (egyéni címkéket) is hozzáadhatnak, újradefiniálhatják a jelentést és a szerepkört. egyes másodlagos címkék esetén bizonyos címkék jelenlétét kell megkövetelni, amelyek nem kötelezőek a specifikációban. Ebben az esetben a fejlesztők benyújtják a FIX [3] [4] [5] [6] megvalósításának jellemzőit leíró dokumentációjukat , hogy az ügyfelek testreszabhassák kliensprogramjaikat ezekhez a szolgáltatásokhoz.