首页 > 其他分享 >FAST协议解析2 FIX Fast Tutorial翻译【PMap、copy操作符】

FAST协议解析2 FIX Fast Tutorial翻译【PMap、copy操作符】

时间:2023-05-05 16:25:59浏览次数:51  
标签:模版 FIX FAST 字段 Fast PMap message copy

FIX Fast Tutorial

FIX Fast教程

(译注:本篇是对https://jettekfix.com/education/fix-fast-tutorial/翻译和解释,除了文本的直接翻译外,我还针对各点按我的理解进行了说明和验证,所以可以看到译文下会有很多译注,部分译注还会带有实例。建议看此篇前先看前一篇“FAST协议解析1 通过输入输出逆解析”。由于篇幅较长,我会根据实际内容进行章节截断)

1. Introduction

FAST (FIX Adapted for Streaming) was developed by the FIX Protocol organization to bring the greater benefits of standardization to market data and deliver optimized performance for the exchange of electronic financial information. Built around a data compression algorithm, it significantly reduces bandwidth requirements and latency between sender and receiver. FAST works particularly well at improving performance during periods of peak message rates. While FAST has grown out of market data, it is applicable and can be used with all FIX messages to offer flexibility in the way that FIX data is formatted for transmission.

FAST uses several techniques to reduce bandwidth. This FAST tutorial covers these techniques briefly on this page and in more detail in later sections.

 

1、简介

FAST(FIX Adapted for Streaming)是由FIX协议组织开发,旨在为市场数据(我理解是证券或期货市场的交易或行情数据)带来更大的标准化效益,并为金融电子信息交换提供更优秀的性能。FAST围绕数据压缩算法构建,显著降低了带宽需求和发送/接收方之间的延迟。FAST在提升消息速率的峰值上尤其有效(我理解是限定时间内可以传更多数据)。虽然FAST已脱离了市场数据(我理解这里指的是FAST压缩后的数据已无法直接阅读,而FIX可以),但它可以适用于所有FIX消息,并可以灵活的方式格式化传输FIX数据。

(译注:我理解FAST是基于FIX构建的,原因是FIX传输数据太多冗余信息,所以FAST进行了一定的压缩。我们可以将任意FIX消息压缩成FAST,或将FAST解压成FIX。)

 

FAST使用了几种技术来减少带宽。本FAST教程将在本页简要介绍这些技术,并在后面的部分详细介绍。

 

1.1. FAST Template

FAST Templates define the field layout of messages so the message itself does not describe individual field names or tags. Instead, fields’ identities are inferred from their position within the message as described by the template. This template is shared by both the sender and the receiver (that is, both the encoder and the decoder) and is usually held in an XML file.

 

Picture 1.1 – “Hello World message transfer”

 

1.1 FAST模版

FAST模板(template)定义了消息的字段布局(模版文件会描述各种消息有多少个字段,各字段的数值类型,各字段的先后顺序),因此传输的消息本身不描述各个字段的名称或标签。相反,字段的标识是通过它们在消息中的位置来推断的,如模板所描述的那样。此模板由发送方和接收方(即编码器和解码器)共享,并通常存储在XML文件中。

(译注:数据发送方和接收方通过“模版”来压缩和解压缩消息,模版中定义了各字段的先后顺序和含义,发送/接收方可以据此来进行数据压缩和还原。)

图 1.1-“hello world 消息转换”

 

1.2. FAST Presence Map (PMap)

The Presence Map (or PMap) is a variable length bit field used to indicate whether or not a particular field is present in a message.

This allows the encoder leave out fields from the message in certain cases, such as:

  • field value is the same as in the previous message (common in fields like trade date, settlement date, etc) or
  • is one greater that last message (common case for sequence number).

The template defines the rules to use when a field is not present in the message.

 

1.2 FAST 存在图(PMap)

存在图(PMap)是一种可变长度的bit域,用于指明消息中是否存在特定字段。

这允许编码器在某些情况下可以从消息中省略某些字段,例如:

1)字段值与前一条消息相同(在交易日、结算日等字段中常见)

2)字段值比上一条消息大1(在序列号等字段中常见)

模版中定义了当消息中不存在某个字段时使用的规则。

【译注:

简单来说,PMap标识了字段是否有填值,如果没有填值,则根据模版中对该字段的定义进行自动赋值,下面举例说明。由于重新赘述太麻烦,需要了解代码含义的同学请先看之前的文章。

1)FAST回顾

回顾一下上一篇我们总结出来的规律,数据按FAST压缩后,如果我们按二进制进行展示,会发现FAST数据可以分为三个区域,第一个区域就是PMap,第二个区域是模版ID,第三个区域是数值部分。

2)copy操作符

Copy操作符的含义是,当FAST数据对某字段没有赋值时,就沿用上一个FAST数据的值。我们新建一个简单模版,里面有2个字段,都使用copy操作符

对代码进行改造,实现2段数据的编码和解码

输出结果如下:

对原始编码进行解析:

需要注意到,在第二段的FAST编码中,省略了模版ID字段,同时将PMap的第二位置为0,表明模版ID字段无值(所以我认为模版ID字段默认就有copy操作符)复用之前的值。

接着我们减少第二段的赋值操作,代码修改如下:

再次运行输出结果如下:

会发现第二段的解析结果沿用了第一段的赋值。将原始编码进行解析:

可以看到PMap中模版ID字段和第二个数值字段均被置为0。

3)总结

综上,PMap结合模版内容可以对特定字段(重复、自增等)进行省略减少数据的总量,实现压缩。

 

标签:模版,FIX,FAST,字段,Fast,PMap,message,copy
From: https://www.cnblogs.com/cation/p/17374458.html

相关文章

  • pytest的fixture
    1什么是[email protected]_fruit():returnFruit("apple")如上,用@pytest.fixture装饰的函数就是fixture2fixture的作用我的理解是为test函数的运行提供数据、必要的环境支持等3fixture的定义与使用fixture直接用于test函数@pytest.fixturedefmysq......
  • 深copy和浅copy
    一、概述突然就想到了深浅copy,所以就像说一说自己的理解,然后留作记录以后回顾二、内容描述主要分两个方面来说:1.数据copy后两者是否有关联2.改变一个值是否会影响另一个值的变化浅copy:一方数据发生变化后另一方数据也会跟着变化。也就......
  • fix apt-get install wiringpi errors All In One
    fixapt-getinstallwiringpierrorsAllInOne修复E:软件包wiringpi:armhf没有可安装候选错误C语言版本wiringpierror❌$sudoapt-getinstallwiringpipi@raspberrypi:~/Desktop$sudoapt-getinstallwiringpi正在读取软件包列表...完成正在分析软件......
  • 2022CVPR_Toward Fast, Flexible, and Robust Low-Light Image Enhancement(SCI_main)
    1.motivation(1)低光增强不能处理复杂的场景(2)需要耗费大量的计算2.contribution(1)节省计算(2)发明了自监督的SCI模块(SCI的核心是引入额外的网络模块(自校准照明)来辅助训练,而不是用于测试)大佬链接:(11条消息)低照度增强--论文阅读【《TowardFast,Flexible,andRobustLow-Light......
  • FAST-LIO:A Fast,Roust LiDAR-inertial Odometry Package by Tightly-Coupled Iterate
    摘要——本文提出一种计算高效、鲁棒的激光雷达惯性里程计框架。我们使用紧耦合的迭代扩展卡尔曼滤波器将激光雷达特征点与IMU数据融合,以允许在发生退化的快速运动、噪声或者杂乱环境中进行稳健导航。为了在出现大量观测情况下降低计算负载,我们提出了一个计算卡尔曼增益的新公式。......
  • Faster R-CNN复现记录
    实现细节总共3个模型,第一个是以resnet50为backbone,并加上FPN结构的FasterR-CNN,一个是同样是使用resnet50为backbone,但没用fpn,最后一个是用mobilenetv3作为backbone,用fpn1#totalparamnum41,449,656/19,624,872/70,566,2602#Resnet50-fpn/mobilev3-fpn/Resnet50-no......
  • Fastjson检测和利用
    漏洞检测:`DNSlog{"@type":"java.net.InetAddress","val":"dnslog.cn"}在49以下才能触发,因为这个gadget在49被禁止了,可用于检测具体版本{"@type":"java.net.Inet4Address","val":"dnslog"}{"@type":"......
  • (04)FastReport一张纸上标签打印
    先按 (03)FastReport6.8.11在Delphi10.3上的边框问题 设置好数据源 ......
  • 修改postfix/手工编译/安装让smtp日志包含mail from 信息
    修改后的日志to=变成[email protected]>这是sent日志Nov2112:56:27chrd-edmpostfix/smtp[11762]:208E0100735:[email protected]><[email protected]>,relay=mx3.qq.com[112.90.138.89]:25,delay=0.94,delays=0.09/0.01/0.51/0.33,dsn=2.0.0,status=sent(250......
  • Linux安装Fastdfs
    前言:还是和以前一样,linux安装软件的目录都是data目录 1.进入data目录,创建libfastcommon目录并进入该目录cd/datamkdirlibfastcommoncdlibfastcommon 2.yum安装一下unzipyuminstallzipunzip-y 3.上传"libfastcommon_v1.40.zip"文件到当前目录(/data/li......