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

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个层次:会话层和应用层。会话层与数据的通信相关;而应用层定义了商务相关数据内容。

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

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)”的FIXFIXML不同伴本的比较。
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的实现应当遵照W3CXML技术标准。
·        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

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

 



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/388591.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

观光公交

【问题描述】 风景迷人的小城 Y 市&#xff0c;拥有 n 个美丽的景点。由于慕名而来的游客越来越多&#xff0c;Y 市特意安排了一辆观光公交车&#xff0c;为游客提供更便捷的交通服务。观光公交车在第 0 分钟出现在 1 号景点&#xff0c;随后依次前往 2、3、4……n 号景点。从…

linux行命令测网速,Linux命令行测试网速的方法

最近给服务器调整了互联网带宽的限速策略&#xff0c;调到100M让自己网站也爽一下。一般在windows上我喜欢用speedtest.net来测试&#xff0c;测速结果也被大家认可。在linux上speedtest.net提供了一个命令行工具speedtest-cli&#xff0c;用起来很方便&#xff0c;这里分享一下…

Delphi XE2获取汉字拼音首字母

function CnPYIndex(const CnString: string): string;{ 返回中文的拼音首字母}const ChinaCode: array[0..25, 0..1] of Integer ((1601, 1636), (1637, 1832), (1833, 2077), (2078, 2273), (2274, 2301), (2302, 2432), (2433, 2593), (2594, 2786), (9999, 0000), …

图像处理傅里叶变换图像变化_傅里叶变换和图像床单视图。

图像处理傅里叶变换图像变化What do Fourier Transforms do? What do the Fourier modes represent? Why are Fourier Transforms notoriously popular for data compression? These are the questions this article aims to address using an interesting analogy to repre…

HDUOJ 1062 TEXT REVERSE

#include<iostream> #include<stdlib.h> #include <iomanip> #include<stack> using namespace std;int main(){//次数int n 0;while (cin >> n) {//这里需要读一个字符&#xff0c;需要消除换行符的影响getchar();while (n--) {char c;stack&l…

VC++的windows服务

项目建立&#xff1a; VS2008->ATL项目->服务exe 服务部署&#xff1a; 在VS2008中新建的ATL项目&#xff0c;在网上看到的流程中都会有注册服务这一项。 但是对服务的注册都是只给了一个指令&#xff0c;一句话带过&#xff0c;没有给出具体的操作步骤 经过多次试验…

linux中gradle编译慢,【Linux】解决linux下android studio用gradle构建从jcenter或maven下载依赖太慢...

一个简单的办法&#xff0c;修改项目根目录下的build.gradle&#xff0c;将jcenter()或者mavenCentral()替换掉即可&#xff1a;allprojects {repositories {maven{ url http://maven.oschina.net/content/groups/public/}}}但如果你有很多个项目的话&#xff0c;一个一个的改估…

MFC程序需要的函数库及头文件--《深入浅出MFC》

Windows程序调用的函数可分为2部分&#xff1a;C Runtimes Windows API。 C Runtimes&#xff1a; LIBC.LIB -- C Runtime函数库的静态链接版本 MSVSRT.LIB--C Runtime库的动态链接版本&#xff08;如果要链接这一函数&#xff0c;你的程序执行时必须有MSVCRT40.DLL在场&#…

C#DNS域名解析工具(DnsLookup)

C#DNS域名解析工具(DnsLookup) DNS域名解析工具&#xff1a;DnsLookup 输入域名后点击Resolve按钮即可。 主要实现代码如下&#xff1a; private void btnResolve_Click ( object sender, EventArgs e ) {lstIPs.Items.Clear ( ); //首先把结果里的ListBox清空 try {IPHostE…

python.day05

一 字典 定义:dict, 以{},表示.每一项用逗号隔开,内部元素用key:value的形式来保存数据.例如 {"jj":"林俊杰","jay:周杰伦"} 特点:查询效率非常高,通过key来查找元素 内部使用key来计算一个内存地址(暂时),hash算法,key必须不可变的数据类型(ke…

滞后分析rstudio_使用RStudio进行A / B测试分析

滞后分析rstudioThe purpose of this article is to provide some guide on how to conduct analysis of a sample scenario A/B test results using R, evaluate the results and draw conclusions based on the analysis.本文的目的是提供一些指南&#xff0c;说明如何使用R对…

Linux程序实现弹框,jQuery实现弹出框 效果绝对美观

使用到JQeury写的几个比较好的Popup DialogBox,觉得不错。和大家分享下。使用它们结合.net可以实现很好的效果。1.jqpopup:是个可以拖拽,缩放并可以在它上面显示html页面上任何一个控件组合的控件。可以和后面的主页面通信。使用方法:先调用这几个js文件,可以自提供的下载地址下…

Interesting visualization tools for profiling.

Interesting visualization tools for profiling. http://dtrace.org/blogs/brendan/2012/03/17/linux-kernel-performance-flame-graphs/ http://dtrace.org/blogs/brendan/2013/07/01/detecting-outliers/

MySQL的事务-原子性

MySQL的事务处理具有ACID的特性&#xff0c;即原子性&#xff08;Atomicity)、一致性&#xff08;Consistency&#xff09;、隔离性&#xff08;Isolation&#xff09;和持久性&#xff08;Durability&#xff09;。 1. 原子性指的是事务中所有操作都是原子性的&#xff0c;要…

codeforces CF438D The Child and Sequence 线段树

$ \Rightarrow $ 戳我进CF原题 D. The Child and Sequencetime limit per test: 4 secondsmemory limit per test: 256 megabytesinput: standard inputoutput: standard outputAt the childrens day, the child came to Pickss house, and messed his house up. Picks was ang…

大型网站架构演变

今天我们来谈谈一个网站一般是如何一步步来构建起系统架构的&#xff0c;虽然我们希望网站一开始就能有一个很好的架构&#xff0c;但马克思告诉我们事物是在发展中不断前进的&#xff0c;网站架构也是随着业务的扩大、用户的需求不断完善的&#xff0c;下面是一个网站架构逐步…

linux的磁盘磁头瓷片作用,Linux 磁盘管理

硬盘物理结构以下三张图片都是磁盘的实物图&#xff0c;一个磁盘是由多块堆放的瓷片组成的&#xff0c;所以磁头的结构也是堆叠的&#xff0c;他要对每一块瓷片进行读取&#xff0c;磁头是可以在不同磁道(在瓷片的表现为不同直径的同心圆&#xff0c;磁道间是有间隔的)之间移动…

多层插件开发框架

先来几张效果图&#xff1a; 1.基于DATASNAP构建的中间件&#xff0c;中间件已经经过实际项目的检验&#xff0c;单台中间件可支持几千客户端&#xff0c;中间件可集群 2.中间件支持同时连接ACCESS\SQL SERVER\MYSQL\ORACLE。。。多种数据库系统 3.中间件同时支持TCP/IP,HTTP&a…

unity3d 可视化编程_R编程系列:R中的3D可视化

unity3d 可视化编程In the last blog, we have learned how to create “Dynamic Maps Using ggplot2“. In this article, we will explore more into the 3D visualization in R programming language by using the plot3d package.在上一个博客中&#xff0c;我们学习了如何…

linux无法设置变量,linux – crontab在作业之前无法设置变量

我的crontab看起来像&#xff1a;rootslack13x64:~# crontab -l -u dnd# some variablesSHELL/bin/bashPATH/bin:/usr/bin:/usr/local/bin:/home/dnd/binMAILTOroot# Actual jobs40 20 * * * /home/dnd/cron_jobs/some_job.sh55 23 * * Fri /home/dnd/cron_jobs/other_job.py作…