18
FIX PROTOCOL

Financial Information eXchange - 32BIT

Embed Size (px)

Citation preview

Page 1: Financial Information eXchange - 32BIT

FIX PROTOCOL

Page 2: Financial Information eXchange - 32BIT

Giriş

FIX Protocol -> Financial Information eXchange Protocol

Bankalar konsorsiyumu ve bağımsız kuruluşlar tarafından oluşturulmuştur.

İletişim modelini/syntaxını belirler.

Alım/satım işlemlerinin iletişimine sunulan bir yaklaşımdır, ürün değildir.

Platform bağımsızdır. Fix'in bir çok programa dilinde implementasyonu mevcuttur.

Son fix versiyonu 5.0'dır.

Detaylı bilgi için : http://www.fixprotocol.org

Page 3: Financial Information eXchange - 32BIT

Neden FIX

FİX bir yaklaşım ve çözüm önerisi olduğundan dolayı kurumlar kendi fix implementasyonlarını gerçekleştirebilirler.

Fix'i implemente etmek kolaydır.

Kolay anlaşılır iletişim modeli ve mesaj modeli.

Var olan fix implementasyonları(fix engine) oldukça başarılı. Fix engine'ler, herhangi bir sorun ve anormal durumlar için loglama/hata detayı gibi konularda iyi.

Hız ve maliyet kazancı.

OMS(order managament system) kullanan sistemler FIX'i öneriyor.

Page 4: Financial Information eXchange - 32BIT

FIX MESAJ YAPISI

Temel olarak 2 tip fix mesajı vardır. Bunlar; Admin ve Application mesajlarıdır.

Admin mesaj : Session level mesaj olarak da bilinir. Alım/Satım işlemini tam olarak ifade etmeyen, sistem üzerinde ki genel işleyiş ve durum hakkında bilgi veren mesaj türüdür. Örnek admin mesajları; Baglantı saglanması, kopması, logon/logoff, heardbeat, reject, sequence reset.

Application mesaj : Application level mesaj olarak da bilinir. Tam olarak alım/satım işlemlerini ifade eder.

Page 5: Financial Information eXchange - 32BIT

FIX MESAJ YAPISI

Her fix mesajı(admin/application) belirli bir yapıdadır ve olmak zorundadır.

Fix mesaj yapısına uygun olmayan mesajlar, FIX engine tarafından reject edilecektir.

Fix mesajı toplamda 3 kısımdan oluşmaktadır;

1 - Header : Fix protokol versiyonunu, fix mesaj'ının byte cinsinden boyutu, mesaj tarihi gibi bilgileri içermektedir. 2 - Body : Order'ı ifade eden asıl verileri içermektedir. 3 - Trailer : Checksum ve benzeri mesajın sistemler arası taşınmasındaki durumu hakkında bilgiler içerir.

Fix mesajının yapısı tag,value ve delimeter olarak 3 kısımdan oluşan field'lardan meydana gelmektedir. Field --> <tag>=<value><delimeter>

tag : numeric bir rakamdır, field için identifier'dır. 1'den 995'e kadar olabilir. Custom tag oluşturulabilir.value : string olan ve field'ın değerini ifade eden kısımdır.delimeter : ASCII SOH(Start Of Header)

Page 6: Financial Information eXchange - 32BIT

FIX MESAJ YAPISI

Örnek fix mesajı;8=FIX.4.2 | 9=178 | 35=8 | 34=10 | 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 |

Mesaj header -> (8) fix protokolünün versiyonu ifade etmektedir. (9) mesaj boyutudur. (35) fix mesajının tipini ifade etmektedir.

Mesaj body -> (40) order type'ı ifade etmektedir.

Mesaj trailer -> (10) checksum.

Page 7: Financial Information eXchange - 32BIT

FIX MESAJ YAPISI

Fix mesajı ayrıca xml tipinde de olabilir. Örn;<?xml version=’1.0’?><!DOCTYPE FIXML SYSTEM ’fixmlmain.dtd’><FIXML><FIXMLMessage>

<Header> ..... </Header> <ApplicationMessage>

<Order><ClOrdID>12345</ClOrdID><HandlInst Value="1"/><Instrument> <Security>

<Symbol>EK</Symbol> </Security></Instrument></Order>

</ApplicationMessage></FIXMLMessage></FIXML>

Page 8: Financial Information eXchange - 32BIT

FIX MESAJ YAPISI

Fix protokolü yandaki tabloda bulunan mesaj tiplerini destekler.

Field 35'in örnek değerleri yanda ifade edilmiştir.

35=5 oldugunda fix mesajının bir logout olma isteği olduğunu ifade etmektedir.

Type Description

0 Heartbeat

1 Test request

2 Resend request

3 Reject

4 Sequence reset

5 Logout

6 Indication of interest

7 Advertisement

8 Execution report

9 Order cancel reject

A Logon

B News

C Email

D Order single

E Order list

Page 9: Financial Information eXchange - 32BIT

FIX Network

İki uç sistemin fix modeli ile haberleşebilmesi için öncelik bir session başlatmaları gerekmektedir.

Session'da iki rol bulunmaktadır. Bunlar session'u kabul eden acceptor ve session isteğinde bulunan initiator'dur.

Her iki taraf da kendi taraflarında bir session başlatır ve daha sonra iki session birbirleri ile anlaşarak ikili bir session başlatırlar.

Sesion kurulurken iki taraf da kendilerini ifade eden bir id ile el sıkışırlar.

Session acceptor ve initiator da; SenderCompID ile kendisini ifade eden bir id ve TargetCompID ile de session başlatacağı karşı tarafın id'sini ifade eden bir değer barındırmaktadır.

Session başladığı zaman normal şartlarda her fix mesajına atanan bir sıra numarası olan sequence number 1 olarak başlamaktadır.

Page 10: Financial Information eXchange - 32BIT

FIX FAST

FAST'in açılımı FIX Adapted for STreaming.

FIX tarafından geliştirilen veri sıkıştırma algoritmasıdır.

FIX iletişiminde mesajları sıkıştırarak network'un daha az kullanılmasını sağlar.

FIX mesajlarının xml formatında olduğu durumlar için ideal'dir.

Page 11: Financial Information eXchange - 32BIT

FIX Engine

FIX engine, bu protokolünü implemente eden sistemdir.

Kurumlar kendi fix implementasyonlarını gerçekleştirebilirler.

Fix engine seçerken aşağıdaki maddelere dikkat edilmelidir;

1 - Desteklediği FIX versiyonları.

2 - FIX mesajlarında yer alan tag'lerin ne kadarının desteklendiği.

3 - Performans, throughput verileri.

4 - Community.

Page 12: Financial Information eXchange - 32BIT

FIX Connection

Session başlatmak için initiator MsgType olarak 'A' değerini gönderir. Fix engine mesajı validate ederek valid bir istek ise Logon ACK göndererek session başlamış olur.

Page 13: Financial Information eXchange - 32BIT

FIX Connection

FIX mesajında yer alan sequence number'ın invalid olması durumunda FIX engine bir hata döner. Örnek case'de session başlatmak isteyen initiator'de yer alan seqeunce number'ın acceptor'de yer alan sequence number'dan büyük olduğunu varsayalım;

Bu durumda FIX engine, logon ack ile birlikte MsgType olarak 2 değerini içeren ve yeniden istek yapmasını belirten bir mesajla birlikte sorunu ifade eden alanları da mesaja ekleyerek initiator'e gönderir.

Page 14: Financial Information eXchange - 32BIT

FIX Connection

İkinci case'de session başlatmak isteyen initiator'de yer alan seqeunce number'ın acceptor'de yer alan sequence number'dan küçük olduğunu varsayalım;

Bu durumda FIX engine, logon ack ile text mesaj olarak beklenenden küçük bir değerle istek yapıldığını belirtir ve aradaki bağlantıyı koparır.

Page 15: Financial Information eXchange - 32BIT

FIX Heartbeat

Acceptor ve initiator olarak her iki taraf da birbirlerine session'u ayakta tutmak için heartbeat mesajı gönderirler. Genellike 30 ve 60 sn aralıklarla heartbeat mesajı gönderilir.

Heartbeat mesajı için mesaj içerisinde MsgType alanına 0 değeri girilmelidir.

Page 16: Financial Information eXchange - 32BIT

FIX Engine

Bazı fix enginler asagıda yer almaktadır. Fix engine secerken onceki slaytda yer alan maddeler dikkate alınarak secilmelidir;

FIX Antenna C++, QuickFIX, QuickFIX/J

Page 17: Financial Information eXchange - 32BIT

FIX Tools

FIX ile çalışırken faydalı olabilecek tool'lar aşağıda yer almaktadır.

Fix dictionary : http://www.onixs.biz/fix-dictionary/

Fix wiki : http://fixwiki.org/fixwiki/FIXwiki

Valid fix : http://www.validfix.com/fix-analyzer.html

Mini-FIX : Fix client/server gui tool -> http://elato.se/minifix/

Fiximülator : http://fiximulator.org/

Fix sumulator : http://www.b2bits.com/trading_solutions/fix-tools/fix-client-simulator.html

Fix mesaj parser : //fix.aprics.net/.net/ https://fixparser.targetcompid.com/

Page 18: Financial Information eXchange - 32BIT

Kapanış

Teşekkür Ederim.- Alican Akkuş