金融业务之深交所交易接入

  首先,我们需要了解下我国交易所系统的大致架构。这里以深交所为例(上交所类似,其他交易所不太清楚。)

  交易网关:也叫小站,是部署在券商侧,用来报单用的程序。比如我们公司就有很多交易网关。如果程序要向交易所报单,首先是将订单报送给交易网关。

  交易主站:交易主站是交易所的大门,所有的交易订单,回报都是要经过交易主站。一般一个交易网关,会配置多个交易主站,一旦连接的交易主站失效,会立即连接到其他的交易主站上,以达到高可用。

  核心交易系统:就是常说的撮合系统,这个内部其实是细分很多子系统的,是一个庞大的复杂分布式系统,这里不多介绍了。

  了解完交易所系统架构,我们应该就清楚了,我们要跟交易所通讯,那么其实是跟交易网关通讯,也就是我们需要遵循交易网关的交易协议。

  交易协议是公开的,一般在交易所的网站上可以免费下载到。深交所的交易协议分为2种:一种是fix协议,一种是binary。Fix协议是一种国际通用的交易协议,它详细地定义了每种交易的交易处理流程,为了适应国际化,交易所一般都会支持fix协议,但是会做一些本地化,比如在中国的本地化fix,就是step协议。Binary协议顾名思义就是二进制协议,也是通讯的协议是二进制的,里面详细定义了各种报文的字段,编解码规则等。

  Fix协议的优势在于是key-value对,可以很方便地查看报文内容,以及扩展新字段,而且是国际通用的,适应力强,缺点是速度慢;Binary协议的优势在于快,因为对于Fix协议交易网关需要将其转换为Binary协议,然后再传给交易主站,而对于binary协议,交易网关是直接就传递给交易主站。Szoms采用的是Binary协议跟交易网关进行通讯,这是因为当时我没有现成的Fix引擎,所以我无法通过fix协议来与网关通讯。在写这篇文章的时候,我已经有Fix引擎了,如果现在来开发,可能会考虑通过Fix协议来接入。另外千万不要去自己实现Fix引擎,没有必要,而且很复杂;另一个原因是我很熟悉Binary协议的编码规则,所以我就采用了我最熟悉的方式来实现。

  首先开发者必须先了解交易所每种业务,知道每种业务是干什么的,如何完成业务交易。

  然后就是一句话,阅读交易协议文档,根据文档实现自己的程序逻辑。具体来说分为以下几个方面:

  掌握数据字典,里面定义了报文的字段类型以及用途,但是用途可能没有写或者写的不详细,这个就需要google了。比如交易单元,字段类型,是什么意思

  掌握数据字典,里面定义了报文的字段类型以及用途,但是用途可能没有写或者写的不详细,这个就需要google了。比如交易单元,字段类型,是什么意思

  这个对于不懂业务的开发者来说的确是一个很大的挑战,而且交易所业务也比较繁多。因为本文篇幅有限,也不能对交易所业务一一详细介绍(以后如果有空的话,也可以专门写一篇交易所所有业务的介绍)。

  首先我们需要了解基金净值上报业务,这个业务是可以更新交易所基金实时净值,也就是你可以告诉交易所目前xx基金的净值是多少,交易所接受后,会在后续的行情中发布你更新的净值

  了解业务流程,这个业务属于一个确认业务,比较简单。报送一个净值上传订单,交易所会给你一个回报,告诉你是成功还是失败。

  参考交易协议文档的报文定义,定义各种报文,比如网关登陆报文,净值上传报文等

  然后我们可以开发程序了,首先建立跟交易网关的连接,TCP协议,然后发送登陆请求,回报同步请求,完成前序准备

  本文旨在介绍一般交易所交易接入的流程,希望能够指引开发者一步一步地去开发交易接入程序。如果有任何疑问,可以跟我一起讨论,谢谢!返回搜狐,查看更多

分享: