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

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

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

1.1. 什么是FIX

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

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

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

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

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

买卖对象(你要买卖什么):Symbol

方向(买还是卖):Side

价格:Price

数量:Quantity

好了,那么我们假定用“”表示分隔符,把如上信息串起来,就可以得到:

OrdID=123Symbol=000123Side=1Price=88.8Qty=5000

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

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

那咋办呢?

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

1=1232=0001233=14=88.85=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,并在本地搭建消息收发方。

java quickfix_QuickFix Java 讲解(一)概述、下载方法,和协议内容相关推荐

  1. java quickfix_QuickFix Java 讲解(三)客户端的搭建与解析

    本系列力求手把手教你怎样利用 QuickFix Java 搭建自己的 FIX 协议收法平台,以及其中的注意事项. 所有源码的地址(免费): 这次我们讨论怎样搭建Initiator端. 4. Initi ...

  2. java 插入 mysql 乱码_解决java中插入mysql中文乱码的方法

    解决java中插入mysql中文乱码的方法 发布时间:2020-07-11 14:35:11 来源:亿速云 阅读:100 作者:清晨 这篇文章主要介绍解决java中插入mysql中文乱码的方法,文中介 ...

  3. java for循环写法优化,Java优化for循环嵌套的高效率方法

    前几天有人问过我一个问题,就是两个嵌套for循环执行效率的问题,问有什么好的办法替换.当时我想了想,实在想不起来,哎,惭愧!!! 请教了答案,恍然大悟. 比如:两个list中分别装有相同的对象数据. ...

  4. 【模块】ESP32CAM arduino程序下载方法及注意事项避坑笔记

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 目录: 前言&概述 下载方法:     nodemcu v1下载方法      ...

  5. java泛型(java泛型的作用)

    java泛型的基本使用是什么? add("test1"); String test1 = (String)strList.get(0); System.out.println(&q ...

  6. java fangfa_daicanfangfa java中的方法 刚入门的分不清带参方法的作用和用处 这个可以详细的讲解如何使用带参方法 - 下载 - 搜珍网...

    第14章 带参数的方法/01 教学演示示例/示例1:带一个参数的方法/StudentsBiz.java 第14章 带参数的方法/01 教学演示示例/示例1:带一个参数的方法/TestAdd.java ...

  7. Java百度网盘创建链接,java获取百度网盘真实下载链接的方法

    本文实例讲述了java获取百度网盘真实下载链接的方法.分享给大家供大家参考.具体如下: 目前还存在一个问题,同一ip在获取3次以后会出现验证码,会获取失败,感兴趣的朋友对此可以加以完善. 返回的Lis ...

  8. 27484个汉字文件txt下载方法(Java)

    27484个汉字文件txt下载方法(Java) 先附上原文链接 Java输出windows中的全部汉字 UTF-8 u4e00-u9fa5 (中文)-20902个汉字 /*** UTF-8 u4e00 ...

  9. java finally方法_讲解Java编程中finally语句的使用方法

    讲解Java编程中finally语句的使用方法 在java中的finally关键一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会 ...

最新文章

  1. sap 成本中心下的po_SAP学习基础篇(23):CO模块-成本中心费用费率计划
  2. ubuntu下eclipse打开window下的java文件,注释内容为乱码,解决方法
  3. volley 调用php接口,使用Volley发送帖子请求并使用PHP接收
  4. datastage 函数_DataStage_Transformer常用函数
  5. 一张倾斜图片进行矫正 c++_专业性文章:10分钟矫正骨盆前倾
  6. 前端如何展示商品属性:SKU多维属性状态判断算法的应用-Vue 实现
  7. mysql innodb 文件_MySQL与InnoDB相关文件
  8. Mysql多源复制半同步_MySQL多源复制搭建
  9. 微软BI SSIS 2012 辅助阅读博客
  10. 【python教程入门学习】利用Python自动生成暴力破解的字典
  11. 软件测试——文档测试
  12. Excel技巧—快速插入空行技巧大集合
  13. Leetcode 惊现马化腾每天刷题?为啥大佬都这么努力!
  14. Java成员变量初始化
  15. 2021最新域名授权系统网站源码 全新一键安装源码+卡密自助授权+全新UI界面
  16. 我是一个几乎没有计算机知识的人,怎样入门计算机?
  17. 【数据结构】 树与二叉树的基本概念、结构特点及性质
  18. SIMCOM 常用AT指令
  19. Android12之OpenSL ES中IObject_Realize和CEngine_Realize区别(十四)
  20. opencv for python (6) 改变一幅图的特定区域 (往一幅图片上加标志)

热门文章

  1. 快速上手任务栏与开始菜单的布局与美化
  2. 计算机管理系统功能模块,仓库管理系统功能模块详解
  3. 游侠我的世界开服务器端口被占用,我的世界怎么开服?游侠我的世界开服教程...
  4. OpenCV测量物体的尺寸技能 get~
  5. 一个神奇的软件jide
  6. 影像数据全院连通+集中管理,博为全院级PACS助力桑植县人民医院顺利通过二甲复审
  7. 联通再次掀起价格战,5G套餐降至百元内,中国移动或再吃瘪
  8. 缓和曲线段长度的计算分析
  9. pip install pygame安装报错解决方案
  10. 网络对抗技术作业一P201421410036