java quickfix_QuickFix Java 讲解(一)概述、下载方法,和协议内容
本系列力求手把手教你怎样利用 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 讲解(一)概述、下载方法,和协议内容相关推荐
- java quickfix_QuickFix Java 讲解(三)客户端的搭建与解析
本系列力求手把手教你怎样利用 QuickFix Java 搭建自己的 FIX 协议收法平台,以及其中的注意事项. 所有源码的地址(免费): 这次我们讨论怎样搭建Initiator端. 4. Initi ...
- java 插入 mysql 乱码_解决java中插入mysql中文乱码的方法
解决java中插入mysql中文乱码的方法 发布时间:2020-07-11 14:35:11 来源:亿速云 阅读:100 作者:清晨 这篇文章主要介绍解决java中插入mysql中文乱码的方法,文中介 ...
- java for循环写法优化,Java优化for循环嵌套的高效率方法
前几天有人问过我一个问题,就是两个嵌套for循环执行效率的问题,问有什么好的办法替换.当时我想了想,实在想不起来,哎,惭愧!!! 请教了答案,恍然大悟. 比如:两个list中分别装有相同的对象数据. ...
- 【模块】ESP32CAM arduino程序下载方法及注意事项避坑笔记
微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 目录: 前言&概述 下载方法: nodemcu v1下载方法 ...
- java泛型(java泛型的作用)
java泛型的基本使用是什么? add("test1"); String test1 = (String)strList.get(0); System.out.println(&q ...
- java fangfa_daicanfangfa java中的方法 刚入门的分不清带参方法的作用和用处 这个可以详细的讲解如何使用带参方法 - 下载 - 搜珍网...
第14章 带参数的方法/01 教学演示示例/示例1:带一个参数的方法/StudentsBiz.java 第14章 带参数的方法/01 教学演示示例/示例1:带一个参数的方法/TestAdd.java ...
- Java百度网盘创建链接,java获取百度网盘真实下载链接的方法
本文实例讲述了java获取百度网盘真实下载链接的方法.分享给大家供大家参考.具体如下: 目前还存在一个问题,同一ip在获取3次以后会出现验证码,会获取失败,感兴趣的朋友对此可以加以完善. 返回的Lis ...
- 27484个汉字文件txt下载方法(Java)
27484个汉字文件txt下载方法(Java) 先附上原文链接 Java输出windows中的全部汉字 UTF-8 u4e00-u9fa5 (中文)-20902个汉字 /*** UTF-8 u4e00 ...
- java finally方法_讲解Java编程中finally语句的使用方法
讲解Java编程中finally语句的使用方法 在java中的finally关键一般与try一起使用,在程序进入try块之后,无论程序是因为异常而中止或其它方式返回终止的,finally块的内容一定会 ...
最新文章
- sap 成本中心下的po_SAP学习基础篇(23):CO模块-成本中心费用费率计划
- ubuntu下eclipse打开window下的java文件,注释内容为乱码,解决方法
- volley 调用php接口,使用Volley发送帖子请求并使用PHP接收
- datastage 函数_DataStage_Transformer常用函数
- 一张倾斜图片进行矫正 c++_专业性文章:10分钟矫正骨盆前倾
- 前端如何展示商品属性:SKU多维属性状态判断算法的应用-Vue 实现
- mysql innodb 文件_MySQL与InnoDB相关文件
- Mysql多源复制半同步_MySQL多源复制搭建
- 微软BI SSIS 2012 辅助阅读博客
- 【python教程入门学习】利用Python自动生成暴力破解的字典
- 软件测试——文档测试
- Excel技巧—快速插入空行技巧大集合
- Leetcode 惊现马化腾每天刷题?为啥大佬都这么努力!
- Java成员变量初始化
- 2021最新域名授权系统网站源码 全新一键安装源码+卡密自助授权+全新UI界面
- 我是一个几乎没有计算机知识的人,怎样入门计算机?
- 【数据结构】 树与二叉树的基本概念、结构特点及性质
- SIMCOM 常用AT指令
- Android12之OpenSL ES中IObject_Realize和CEngine_Realize区别(十四)
- opencv for python (6) 改变一幅图的特定区域 (往一幅图片上加标志)