Highlighted
Jeffey1
4 Germanium

【分享】国际证券电子化交易标准协议介绍

FIX协议是事实上的国际证券电子化交易标准,在国外交易所、机构投资者和投资银行群体中得到了广泛的应用。可是对于许多国内IT从业者甚至金融机构IT从业者对FIX协议确并不熟悉,笔者甚至见过国外QFII投资者向国内证券公司IT人员询问公司交易平台是否支持FIX协议,该员工表示不了解FIX协议的尴尬情况。

随着上交所新交易系统采用兼容FIX协议的STEP国家标准作为交易接入的新标准,国内首家证券公司国信证券被FIX国际协议联盟接纳为该组织正式成员,以及股票和期指程序化交易研究的盛行,未来FIX协议大有在金融机构普及之势。

简介及应用情况

FIX协议是一个免费的开放式通信标准,于1992年由富达投资和所罗门兄弟为提升其相互间交易流程效率而开发。这些企业把他们及他们的行业视为一个整体,认为能够从对交易指示,交易指令及交易执行的高效电子数据交换的驱动中获利。FIX由此诞生,一个不受单一实体控制的开放消息标准,一个能够被调整组建适用于任何一个企业的商务需求的协议。

由于FIX协议解决了金融信息传输业多种标准同时并存,避免混乱和重复使用的问题,到2009年已经有超过10000家机构使用FIX协议,其中包括所有主要证券交易所和投资银行,全球最大的共同基金和货币经理,数千家小型投资公司,领先的期货交易所提供FIX连接,主要的债券交易商已经实施或正在实施FIX连接。

目前FIX最新协议版本为5.0 SP2,国外投行主要应用4.0 – 4.4版本,如高盛就使用4.0版本,国内券商一般使用4.2版本,如:国信证券等。

FIX协议优势

FIX协议由于其开放的体系,具有如下四个主要特点:

1、使用简单,各类应用系统可以依据FIX协议规则,编写自身的应用程序,应用于任何希望自动连接的交易双方,能支持各种商务功能。

2、规则开放透明,具有不断扩展的能力。

3、不受载体的限制,它可通过租用数据线路、数据转接介质或在互联网上使用。

4、安全机制方面,FIX不提供特定的安全机制,它只是一个信息交易平台。

实际上FIX建立在证券业的每一个操作系统,数据库和微处理机之上。FIX可以成功地通过使用VPN或因特网与交易伙伴通信。当今证券业的系统部门在工作流(workflow) 和数据处理自动化的问题上花费了大量的时间和人力物力。当一个系统不能理解和翻译另一个系统传来的数据时通常会发生数据问题(data problem)。在同一机构的相关部门之间使用统一的标准会大大降低传输风险。 为提高系统使用效率,应尽量把系统时间花在对数据的分析上,而不应浪费CPU的时间使数据遵守一些专有标准。因为像FIX这样的公开标准已经在证券业中非常流行和广为理解,证券公司花时间存档和赶上专有标准的需求就不存在了,省下来的人力资源可以专注核心业务。

注:以上数据取之http://fixprotocol.org/

<未完待续>

标签 (1)
标记 (1)
0 项奖励
6 条回复6
xiaolong1
1 Nickel

Re: 【分享】国际证券电子化交易标准协议介绍

楼主写成这样谁会有兴趣讨论啊?应该写成快来学FIX平台股票程序化交易啊,屌丝马上变成高富帅!

0 项奖励
TimQuan
3 Zinc

Re: 【分享】国际证券电子化交易标准协议介绍

就现在的行情,高富帅进股市三五个月也得变屌丝,哈哈。

0 项奖励
liulei_it
4 Germanium

Re: 【分享】国际证券电子化交易标准协议介绍

安全性如何保证呢? 如果协议互不相同某种意义上说也是一种安全的机制

0 项奖励
Jeffey1
4 Germanium

Re: 【分享】国际证券电子化交易标准协议介绍

该协议一般是跑在专线或者VPN上,做为程序化交易的标准接口,安全性绝对有保障。

0 项奖励
Jeffey1
4 Germanium

Re: 【分享】国际证券电子化交易标准协议介绍

Fix 协议可以分两大部分,会话层协议和业务层协议。会话层定义了数据通信相关的协议,业务层定义了金融活动相关的业务数据结构。 Fix 的会话层设计时候充分考虑了稳定性,安全性,健壮性,高效性。稳定性指会话协议中定义了心跳消息来维护会话连接,安全性指协议从消息结构上支持数据加密,出错重传指每个会话在两个端点各自维护一套消息序列号,防止消息丢失,漏发漏收,出现这种情况只要检查两边序列号的连续性就可以确定需要重传哪些消息。

    session 的通信各方维护一个 incomming 和 一个 outgoing 序列号。 Incomming 序列号用来检测序列号是否乱序或跨越。

  

    心跳在 initiator 发送 logon 消息时候设置在心跳域上, acceptor 和 initiator 的心跳间隔时间一致。

  

    Fix 消息要按序列号从小到大顺序处理,若收发过程中出现丢包则有两种策略:重传序列号出错的包及以后所有收到得包;另一种是只重传出错的包;

  

    Fix 协议没有定义应答消息,使用序列号不连贯来检测消息丢失,用 checksum ,签名或消息体长度来检测消息错误;

  

    Logon 阶段,客户端选择了了一个加密密钥,但服务器选择了不同的密钥放在返回的 logon 消息中,这时候客户端还得发一个 logon 消息应答服务器端,两个作用: 1). 让服务器知道密钥变更获得了客户端的响应; 2). 下面的消息开始要加密了。

   

    在 logon 阶段完成后必须马上检查序列号,同步收发的消息,比如一端发送了消息但另一端没收到,这时候需要重传。可以通过对比 logon 消息中的序列号和通信一方的期望收到的消息序列号来检测消息漏收发。

     

     序列号最好每隔 24 小时重置一次,重置前要商量好哪一方来首先发送重置请求及发重置请求的时间。重置之前要一方首先发送 testrequest 消息,等待收 heartbeat 消息来确认连接是否正常,然后才发送 logon 消息,并把消息中的序列号重置域设为 Y ,并且序列号置为 1 ,接收方回复同样消息,重置成功;

     

    Logout 之前需要发送 testrequest 消息强制心跳,检测消息序列号是否连续, logout 消息发送出去之后,需要等待一段时间接收 logout 回应消息,这段时间让双方来处理序列号不一致的问题,一旦序列号同步之后 logout 接收者马上发送回应的 Logout 消息, Logout 发起方收到回应后负责来关闭会话。

    

    Fix4.4 中在 logon 消息中加入了 NextExceptedSeqNumb 域,用来表示本方期望对方发过来的下一个序列号,这样 logon 阶段完成后直接就是漏发消息的重发,不需要再发送 testrequest, heartbeat 和 ResendRequest消息了。

    

    possResend 和 possDupFlag 区别就是前者使用了新序列号发送老的消息,可以通过检查消息中的域来确定是否已经收到过改消息,比如 order 的 ID 等;后者是用老的序列号重发消息,可以直接检查序列号来确定是否已经收到过该消息,若已收到过了就丢弃该消息。

  

    logon 消息中有两个字段 RAW Data Length 和 RAW data 用来存放认证需要的数据。

0 项奖励
xiaolong1
1 Nickel

Re: 【分享】国际证券电子化交易标准协议介绍

胸弟,程序化交易是双向交易,模型建成后触发交易,每分钟可成交6000笔以上,所以跌了也能赚钱!

0 项奖励