FIX协议是和外汇桥接技术有关的一个存在,这篇文章我们了解一下关于FIX协议的相关知识,也有助于我们更好的认识了解外汇桥接技术。
FIX协议是一种主要用于证券交易过程信息交换的公开协议,它定义每条交易信息的内容与格式,这些信息内容与证券交易流程相对应,以保证交易信息安全准确地传送。目标是把各类证券金融业务(包括证券、外汇、期货等)的需求流程格式化,使之变成可用计算机语言描述的功能流程。
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发起方收到回应后负责来关闭会话。