QuickFix Java 讲解(一)概述、下载方法,和协议内容

 

本系列力求手把手教你怎样利用 QuickFix Java 搭建自己的 FIX 协议收法平台,以及其中的注意事项。

所有源码的地址(免费):

https://github.com/zongzhec/QuickFixPractise

 

1. 什么是FIX,QuickFix,Quick Java?

1.1. 什么是FIX

官网以及其他翻译自官网的帖子都太官方了,这里我们设想一个情景:

你是一个交易员,现在客户打电话来让你下个单买点股票。你啪啪啪的在你的机器上熟练地输入了下单指令。系统显示:成交。

——有那么简单么?没有。

其中一个问题是:你下达的交易指令如何传到交易系统?

 

即便你没有专业的金融知识,你也知道,想要准确的下单,一条指令里面至少包含如下要素:

  1. 下单编号:Order ID
  2. 买卖对象(你要买卖什么):Symbol
  3. 方向(买还是卖):Side
  4. 价格:Price
  5. 数量:Quantity

好了,那么我们假定用“<分>”表示分隔符,把如上信息串起来,就可以得到:
OrdID=123<分>Symbol=000123<分>Side=1<分>Price=88.8<分>Qty=5000

好了么?好了。没问题了么?有问题:太长了

如此长的信息会在网络传输中有各种各样的问题 ,在争分夺秒的交易市场,很可能会错过良机。

那咋办呢?

 

一般交易员和交易系统都是自家产品,那我们可以发明一种“暗号”,比如我说1,就代表下单编号;说2就代表买卖对象,等等。那如上指令就会变成:

1=123<分>2=000123<分>3=1<分>4=88.8<分>5=5000

长度减少了35%,这是肉眼可见的巨大提升。

 

那如果不都是自家产品呢?

——简单,发明一套全世界都统一的标准就可以了。这,就是FIX协议(Financial Information eXchange Protocol)。

 

1.2. 什么是QuickFIX和QuickFIX/J

有了这套协议,大家开始争先恐后的开发。消息生成的底层逻辑、网络传输的实现方法、断线重连的机制、消息解析的具体步骤……等等等等。每家都不太一样,可因为协议都是一样的,每家的实现方法又都差不多。

那为什么不维护一个简单便捷的版本呢?这样大家只要注意“上层建筑”就好了。

QuickFix 应运而生,它是一个基于 FIX消息的引擎(Message Engine)。用户只要通过简单的配置就可以实现FIX 消息的收法,不用去在意底层的实现,用就对了。

当然,除此之外,还有其他一些优秀的FIX 消息引擎,本作不做讨论。

 

谈到使用,QuickFix,势必就要知道它支持哪些语言。QuickFIX/J 就是一个由Java实现的,完全开源的信息引擎。

 

1.3. QuickFIX/J长什么样

因为QuickFIX/J完全开源,所以大家可以通过它的主页转入到各种所需的页面,比如:

下载源码之后,打开,可以看到很多文件夹。其中quickfixj-examples里面是一些我们可以运行的本地案例,而quickfixj-messages 就包含这一系列的协议和内容。FIX后面的内容代表协议的版本,不同的版本略有区别,一定要保证你和你的上下游用的是同一版本的协议

本作以FIX4.4协议为例。

 

打开quickfixj-messages\quickfixj-messages-fix44\src\main\resources,里面有两个xml文件,就是协议本身。其中FIX44.modified.xml 可以作为你在工作中使用的密码范本。

打开FIX44.modified.xml,搜索NewOrderSingle,可以看到一个message 的标签组:

message表示一类消息。在message 一栏里:

  • name 表示这个message 的名字,这里的的NewOrderSingle就是常用的用户新下单消息。
  • msgtype 表示消息类别,就是我们的“密码”,当我说“msgtype=D”的时候,就代表这是个“NewOrderSingle”。
  • msgcat 表示消息分类,“app”表示收发端是Application,这个暂时不讲,放到以后的章节。

一个消息,肯定要有内容,内容就是这里面的“field”(字段):

  • “name”代表这个字段的名字。
  • “required”表示这个字段是否必须。如果必须,但是消息里没有,就会被接收方拒收。

“group”表示重复组,暂时不讨论,放到下次讲。

 

下一篇,我们讲如何在本地使用QuickFIX/J,并在本地搭建消息收发方。

 

 

 

 

 

 

 

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值