1.   什么是FIX
Financial Information eXchange(FIX)金融信息交换协议的制定是由多个致力于提升其相互间交易流程效率的金融机构和经纪商于1992年共同发起。这些企业把他们及他们的行业视为一个整体,认为能够从对交易指示,交易指令及交易执行的高效电子数据交换的驱动中获利。FIX由此诞生,一个不受单一实体控制的开放消息标准,一个能够被调整组建适用于任何一个企业的商务需求的协议。
FPL(FIX Protocol Limited)认为FIX的优势在于:
  • 就商务流程而言,FIX为机构,中间商,以及其他市场参与者提供了一个减少不必要的电话沟通和琐碎的文档传递方法,为面向特定个体传递高质量的信息提供便利。
  • FIX为于技术专家提供了一个开放的标准,对他们开发的努力和实践产生了影响,使他们能高效地创建同一个更大范围的参与者之间的联系。
  • FIX可以为卖主提供一条现成的通往行业的信息存取路径,减少了市场营销的难度,增加了潜在的客户群。  
开放性已成为FIX成功的关键。出于开放的原因,当在鼓励各方参与标准制定时,FIX保留了参与者需求的不确定性。同时FIX避免“过标准化over-standardization”。它不受限于一个简单类型的载体,及一个简单的安全协议。它把决定权交给使用它的多个企业。FPL希望这种鼓励在非标准化领域的努力能够促进技术的完善。 
FIX现已被许多企业和销售商使用。它已经成为行业内的推荐的消息协议。FIX已经从最初的买方-到-卖方的证券交易中得到发展。现在被广泛的用于交易市场,及其它市场参与者。除了证券交易,FIX现在支持4种产品:Collective Investment Vehicles (CIVs)集成投资工具(?), Derivatives金融衍生产品,Fixed Income(?),Foreign Exchange外汇交易(?)。
FIX协议是一个消息标准,促进与安全交易相关的信息交换,在希望进行自动通信的交易对手间进行使用。该消息协议将支持各种商务功能。 FIX最早用于支持美国国内的委托人间基于直接信息流转的证券交易。随着协议本身的发展,增加了大量的支持多边界交易的、衍生工具及其它产品的数据域。同样,该协议被扩展允许第三方参与于交易对手间的信息传递。随着FIX后续版本的发布,期待它的功能将继续得到发展。

FIX协议包含2个层次:会话层和应用层。会话层与数据的通信相关;而应用层定义了商务相关数据内容。

2006年10月,FPL发布了FIX5.0。FIX5.0引入TI(the transport independence )传输无关框架。TI将FIX会话层从应用层协议中分离出来。在TI框架下,应用层协议消息可以通过任意合适的传输技术进行传送,在这里,FIX会话层协议是FIX应用层消息的可选传输传输协议之一。两个协议层的版本标注将会有所不同,FIX X.Y为FIX应用层协议版本;FIXT X.Y为FIX会话层协议版本编号。

2.   FIX5.0新增特性概述

2.1.TI——the transport independence

上图描述了在TI框架下传输机制的变化。它能够用于承载所有FIX应用层协议的消息。

2.2.Application Versioning
2.3.Service Pack Mangement
2.4.Extension Pack Mangement
Flexibility Provided by FIX 5.0 FIX 5.0 提供的灵活性

3.   FIX协议语法概述
目前,FIX协议存在2种语法格式。
1 “标记=值”语法格式
2 “FIXML语法”语法格式
同一个商业信息流适用于任何一种语法。
3.1.普通FIX语法规则(Common FIX Syntax Rules)
普通FIX语法规则,是对“标记=值”和“FIXML”2种语法都适用的一般规则。
3.1.1   Data Type
  • int:整型 没有小数点,逗号,可以包含正负号的数字序列。注,int的值前面可以包含0。(如 “00023” = “23”).
Examples:         723 in field 21 would be mapped int as |21=723|.
-723 in field 12 would be mapped int as |12=-723|
  • float: 浮点数。可包含小数点和正负号的数字序。累计总长度为15个数字。前面可以有0,小数末尾可加零,或截尾
  • String: 字符串。是大小写敏感的。
  • char: 字符。除分界符号SOH外的字符。大小写敏感。.
  • data: 原始数据。 没有格式和内容限制。之前紧接有一个长度域。长度域应制定data数据域包含的字节数(不好含分界符所占字节)。数据中可能包含分界符字节,所以需要用data类型数据长度来辅助区别。
3.1.2 Pattern Data Type 结构数据
结构化数据用于建立和提供数据域的有效值是否基于FIX数据类型或其它结构数据类型一些限制
3.1.3 Required Fields 必选数据域
协议每个消息由必选、可选和条件必选(根据其他域的不同)数据域构成。系统应当设计成可支持只提供必选和条件必选数据域的相关操作。
3.1.4 FIX “Tag=Value” SYNTAX “标记=值”语法
3.1.4.1 Message Format消息格式
FIX消息的一般格式为:一个标准头+消息体+一个标准的尾部
每个消息由一个包含多个 ,由分界符隔开的,“标记=值”数据域的流构成。标记为TagNum数据类型。所有的标记都有一个特定的值。可选域可以不出现。无值消息将会产生一个Reject消息。
1.        FIX消息的一般格式为:一个标准头+消息体+一个标准的尾部
2.        消息头的前三个域为
BeginString(tag #8)+BodyLenth(tag#9)+MsgType(tag#35)
3.      标准消息尾的最后一个域为CheckSum(tag#10)
4.      在重复数据组内的数据域必须按照FIX规范文档中规定的顺序明确定义。Noxxx域,xxx表示循环组的计数,必须放置在循环组数据内容的的前面。
5.      一个特定的tag 数应当是唯一的。如果重复,将被认为是一个违反规范文档的错误。错误应当向FIX Global Technical Committee报告
此外,某些数据类型为Multiple CharValue的数据域,可以包含多个由空格隔开,由一个SOH技术的多个部分。
在同一个消息里,包含明文部分和密文部分的数据的数据域也是可能的。通常用于验证和认证。比如3.1.4.2 3.1.4.2 Field Delimiter: 域分界符
数据域分界符,在FIX一个消息内的所有数据域由一个分界字符标记结尾。用ASCII码的“SOH”(#001,hex:0x01)进行间隔。所有消息由“8=FIX.x.y<SOH>”标记开始,最后由“10=nnn<SOH>“标记结束。3.1.4.3 Repeating Groups:循环组
允许在一个循环组里出现重复的数据域。372=x<SOH>为循环组的第一个域   
·        如果使用循环组,循环组的第一个域是必选项,作为新循环组的一个分界。该第一域紧跟在NoXXX后面,然后,当NoXXX值大于0时,变成当条件必选。
·        NoXXX域(比如,NoTradingSessions,NoAllocs)定义了循环组实例的数量,对一个循环组只出现一次,且必须在循环组内容之前。
·        如果在一个循环组中的一个域是必选的,则NoXXX是必选的。如果所有循环组中的成员是可选的,则NoXXX域也应该是可选的。
·        如果一个循环组域被列为必选,则它必须出现在该循环组的每一个实例中。
·        循环组在消息中被设计成通过缩排,和à符号进行定义。一些循环组可以在其他循环组中级联出现。可大于一层的级联。
Example of nested repeating group
Portion of New Order - List message showing a nested repeating group for allocations for each order. Note the NoAllocs repeating group is nested within the NoOrders repeating group and as such each instance of the orders repeating group may contain a repeating group of allocations.
73
NoOrders
Y
Number of orders in this message (number of repeating groups to follow)
-〉
11
ClOrdID
Y
Must be the first field in the repeating group.
-〉
526
SecondaryClOrdID
N
-〉
67
ListSeqNo
Y
Order number within the list
-〉
583
ClOrdLinkID
N
-〉
160
SettlInstMode
N
-〉
component block <Parties>
N
Insert here the set of "Parties" (firm identification) fields defined in "COMMON COMPONENTS OF APPLICATION MESSAGES"
-〉
229
TradeOriginationDate
N
-〉
1
Account
N
-〉
581
AccountType
N
-〉
589
DayBookingInst
N
-〉
590
BookingUnit
N
-〉
591
PreallocMethod
N
-〉
78
NoAllocs
N
Indicates number of pre-trade allocation accounts to follow
-〉
-〉
79
AllocAccount
N
Required if NoAllocs > 0. Must be the first field in the repeating group.
-〉
-〉
467
IndividualAllocID
N
-〉
-〉
component block <NestedParties>
N
Insert here the set of "Nested Parties" (firm identification "nested" within additional repeating group) fields defined in "COMMON COMPONENTS OF APPLICATION MESSAGES"
-〉
-〉
80
AllocQty
N
-〉
63
SettlmntTyp
N
-〉
64
FutSettDate
N
Takes precedence over SettlmntTyp value and conditionally required/omitted for specific SettlmntTyp values.
Rest of the message not shown
3.1.4.4 User Defined Fields: 用户自定义域
为给用户提供最大的灵活性,FIX协议允许用户自定义域。 这些域在认同的参与者之间实现、应用,并且应注意避免冲突。
Tag数在5000 到9999保留用于用户自定义域。这些tag值用于企业联盟的信息交换。可以通过FIX网站进行注册。
10000以上保留用于单一企业内部使用。不用注册。
3.1.4.5 Precautions when using UNICODE 使用UNICODE的注意事项

如果使用UNICODE编码,则SOH可能出现在编码内容中。所以一个FIX引擎必须使用EncodedLen值去摘取正确长度的字节数据。

3.1.5 FIXML SYNTAX FIXML语法
FIXML Highlights重要信息
·       FIXML是创建FIX消息的XML字典
·       使用同样的FIX数据字典和商业逻辑。
·       主要关注FIX应用层消息,不对会话层进行规范
·       能被封装在FIX会话层协议和其他协议,如果MQ TIBCO SOAP等协议当中。
3.1.5.1Background背景
1998年,FPL FIXML工作组开始引入XML格式,并发布白皮书支持一个改进方法将FIX协议迁移到XML格式。工作组在1999年1月15日,发布了一个初始版本FIXML DTDs。当前版本的DTDs基于FIX4.1,4.2和4.3版。FIXML Schema 基于FIXML,紧接着在FIX4.4后发布。
1.     FIX and FIXML Version and Comparison using New Order Single Message
一个“新指令消息(New Order)”的FIX和FIXML不同伴本的比较。
FIX tag=value Version
The following is a FIX 4.2 New Order Single message in classic tag-value pair format:
以下是FIX4.2版本New Order单一消息的经典“符号-值”格式表示
8=FIX.4.2^9=251^35=D^49=AFUNDMGR^56=ABROKER^34=2^52=20030615-01:14:49^11=12345^1=111111^63=0^64=20030621^21=3^110=1000^111=50000^55=IBM^48=459200101^22=1^54=1^60=2003061501:14:49 38=5000^40=1^44=15.75^15=USD^59=0^10=127
注意:^为SOH分界符
此消息长度为195字节。.
FIXML 4.2 Version
基于FIXML 4.2 DTD 的
<FIXML>
<FIXMLMessage>
<Header>
<PossDupFlagValue="N"/>
<PossResendValue="N"/>
<SendingTime>20020103-12:00:01</SendingTime>
<Sender>
<CompID>AFUNDMGR</CompID>
</Sender>
<Target>
<CompID>ABROKER</CompID>
</Target>
</Header>
<ApplicationMessage>
<Order>
<ClOrdID>1968</ClOrdID>
<Account>4130287</Account>
<HandlInstValue="1"/>
<ExDestinationValue="L"/>
<Instrument>
<Symbol>IBM</Symbol>
<SecurityID>459200101</SecurityID>
<SecurityIDSourceValue="1"/>
</Instrument>
<SideValue="2"/>
<TransactTime>20021120-12:13:12</TransactTime>
<OrderQtyData>
<OrderQty>1000</OrderQty>
</OrderQtyData>
<OrdTypeValue="2"/>
<Price>93.25</Price>
<CurrencyValue="USD" />
</Order>
</ApplicationMessage>
</FIXMLMessage>
</FIXML>
长度为684字节,是FIX tag=value消息的3倍多。实际上,3-5倍
FIXML 4.4 Schema Version
FIXML 4.4 Schema.
<FIXML>
<OrderClOrdID="123456"
                   Side="2"
                    TransactTm="2001-09-11T09:30:47-05:00"
                    OrdTyp="2"
                    Px="93.25"
                    Acct="26522154">
         <HdrSnt="2001-09-11T09:30:47-05:00"
                 PosDup="N"
                 PosRsnd="N"
                 SeqNum="521">
             <SndrID="AFUNDMGR"/>
             <TgtID="ABROKER"/>
         </Hdr>
         <InstrmtSym="IBM"
                    ID="459200101"
                    IDSrc="1"/>
<OrdQtyQty="1000"/>
</Order>
</FIXML>
长度为348,比原始FIX tag=value消息长70%相对前一个格式,就可阅读性而言,没有重要数据丢失。
Sample Message Content 消息内容实例
The following table is included to help clarify the message content shown above
Tag/Attribute
Meaning
<FIXML>
Root element
      <Order
                    ClOrdID="123456"
                    Side="2"
                    TransactTm="2001-09-11T09:30:47-05:00"
                    OrdTyp="2"
                    Px="93.25"
                    Acct="26522154">
New order
Client’s order ID
Sell order
Transaction time
Limit order
Limit price
Customer’s account
            <InstrmtSym="IBM"
                     ID="459200101"
                     IDSrc="1"/>
Stock symbol
Stock CUSIP
(ID source=CUSIP)
            <OrdQtyQty="1000"/>
Order quantity
      </Order>
Close of order
</FIXML>
Close root element
FIXML 4.4 Schema设计目标
FIXML消息设计目标
这些设计目标是指FIXML的实例文档。
·       W3C.FIXML的实现应当遵照W3C的XML技术标准。
·        FIXML的实现应当是适合在大容量数据传输场景的实现。其目标应用:
·        Order(指令)路由
·        交易报告和交易后处理
·        产品(证券)信息分配
·        市场创建的低容量应用。Market making for lower volume applications ???
·        应当做到带宽占用的最小化。少于FIX tag=value格式长度的1.5倍。
·        在遵循前面原则的基础上,仍维持FIXML消息的可读性。
·        同FIX 4.4 tag=value相同,在FIXML里支持FpML产品规范。
·        支持FIX tag=value消息的翻译相互转换。
·        提供对ISO15022的相互参照,包括每个消息,元素和组件。
·        维持可扩展性和客户个性化
·         增加自定义消息的能力。
·        在消息、组件块 和重复组中添加自定义域的能力.
·        FIXML的实现应当提供所有层次的传输无关性。
·        FIXML的实现应当能够支持FIXML版本识别。
Design Objectives for the Schema Document
Schema文档的设计目标
·        FIXML Schema 应当使用当前事实上的,最好的XML Schema行业应用实践来实现。
·        FIMXL Schema 应当采用完全支持FIXML4.4 Schema版本方式来实现。
·        支持版本的识别。
·        提供足够的meta-data来识别FIX 域名称,组件类型,tag编号,ISO 15002库的交叉饮用。
·        保持与FpMLSchema的互操作和兼容。

杨航收集技术资料,分享给大家

The FIXML Schema shall be based upon and be compatible with the current version of XML schema:Hhttp://www.w3.org/2001/XMLSchemaH

杨航收集技术资料,分享给大家



金融信息交换协议(FIX)v5.0相关推荐

  1. 金融信息交换协议(FIX)

    原文地址: http://blog.csdn.net/great3779/article/details/8585518 随着网络的使用,目前所有大型的金融机构都已经实现了自动化和数字化.当中肯定少不 ...

  2. 国内交易所协议FIX STEP FAST Binary

    FIX - Financial Information eXchange protocol 金融信息交换协议  是适用于实时证券.金融电子交易的数据通信标准.它是把各类证券金融业务需求流程格式化,使之 ...

  3. 量化投资学习——交易所的信息交换协议

    1.FIX协议简介 FIX(Financial Information eXchange Protocol,金融信息交换协议)是由国际FIX协会组织提供的一个开放式协议,目的是推动国际贸易电子化进程, ...

  4. MQTT协议详解及v5.0实践——实践类

    本文主要包含了以下内容: 1)MQTT协议演进历史及协议特点,总结和分析MQTT协议族的优缺点,分析和总结了为什么相比于其他协议,MQTT适合IoT,业内支持现状等. 2)阿里云IoT MQTT3和5 ...

  5. 巨杉数据库 v5.0 Beta 正式发布!

    2020年疫情的出现对众多企业运营造成了严重的影响.面对突发状况,巨杉利用长期积累的远程研发协作体系,仍然坚持进行技术创新,按照已有规划推进研发工作,正式推出了巨杉数据库(SequoiaDB) v5. ...

  6. ThinkPHP V5.0.5漏洞_ThinkPHP漏洞分析与利用

    一.组件介绍 1.1 基本信息 ThinkPHP是一个快速.兼容而且简单的轻量级国产PHP开发框架,遵循Apache 2开源协议发布,使用面向对象的开发结构和MVC模式,融合了Struts的思想和Ta ...

  7. [译]Node v5.0.0 (Stable)

    原文:https://nodejs.org/en/blog/release/v5.0.0/ 你好Node.js v5!没错,我们刚刚才发布了Node.js v4,但这次的新版本并不意味着v4版本要离我 ...

  8. 语言解析ssl包_HPSocket v5.0.1:支持 IPv6 及多 SSL 证书

    HP-Socket v5.0.1:支持 IPv6 及多 SSL 证书 HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适 ...

  9. 数据驱动安全架构升级---“花瓶”模型迎来V5.0(二)

    三."花瓶"模型V5.0 "花瓶"模型V5.0是从安全事件防护的角度,设计安全保障架构的.事前制定策略,部署防护措施,提高攻击门槛,阻断常规的入侵攻击:事中监控 ...

最新文章

  1. 用 vue 写小程序,基于 mpvue 框架重写 weui
  2. java float内存结构_Java后端开发岗必备技能:Java并发中的内存模型
  3. python 操作redis之——HyperLogLog (八)
  4. 【产品】腾讯产品经理总结:toB的产品经理和toc产品经理区别
  5. ad中那个快捷键是重复上一部_十大快捷键:让PPT制作效率飞起!(附下载)
  6. LeetCode 1860. 增长的内存泄露(等差数列)
  7. java .net 3des_Java.net3DES差异及互通
  8. 【译】Redis喜提新数据结构:Redis Streams
  9. ACCESS的十种数据类型分别对应的添加语句
  10. C++ 标准库 —— random
  11. C语言:计算1*2*3*....*100,即求100!。
  12. 常用的php类、方法、函数 注释标记
  13. webpack手动搭建vue环境时,main.js引入一直报Uncaught SyntaxError: Unexpected identifier
  14. 用c语言实现窗口化,c怎么窗口化只能开挂吗
  15. kingsoft的服务器信息,Win10系统kingsoft是什么文件夹?可以删除吗?
  16. rtx3080ti和3090差距 rtx3080ti和3090哪个性价比高
  17. mysql navicate查询_Mysql Navicate 基础操作与SQL语句 版本5.7.29
  18. PostgreSQL 彻底解决膨胀问题
  19. ORA-00257: archiver error. Connect internal only, until freed 处理方法
  20. SDOI2014 Round1 day2

热门文章

  1. c语言用指针实现打开和关闭文件,我用rewind函数没把指针直到开始,关闭文件然后打开就行。帮忙看看...
  2. linux中可以安装不同版本的gcc么,在linux下安装多个版本的GCC
  3. linux ll 文件大小单位_该如何改善 Linux 系统性能?
  4. 《MySQL——外部检测与内部统计 判断 主库是否出现问题》
  5. leetcode 77. 组合 思考分析
  6. Opencv实战【3】——图像修复与图像锐化(darling in the franxx)
  7. wait()和waitpid()的参数解析
  8. C++ 泛型编程模板 之 函数模板初步01
  9. 有两个链表a,b,设结点包括学号,姓名。从a链表中删去与b链表中有相同学号的那些结点。
  10. C++智能指针(一)智能指针的简单介绍