期货行情加速系统及加速方法与流程

文档序号:12366737
期货行情加速系统及加速方法与流程

本发明属于金融期货领域,涉及一种适用于高频期货行情加速系统及加速方法。



背景技术:

股票市场作为重要的资本市场,在我国的经济建设中起到了巨大的作用。其中,高频交易因具有基本不持有隔夜头寸,每天交易实现多次盈利等特点,而逐渐被国内金融行业所关注。由于国内股票市场目前仍然实行T+1交易制度,而随着股指期货、ETF套利、融资融券等新型交易手段的出现, T+1交易制度的对市场的限制愈加明显;而大部分投资者最为关心的是以日为单位的短线,中长线投资机会。因此在允许T+0交易方式的期货交易市场,高频交易在国内有了发展空间。

然而,高频交易系统对于行情信息延迟有着极为苛刻的要求,系统每节省一个微秒,甚至纳秒,都意味着更大的获利可能。但是,目前市场上常见的普通期货行情系统和交易系统,均远远不能满足交易者对于高频交易速度的极致要求。



技术实现要素:

为克服现有普通期货行情系统和交易系统不能满足用户对于高频交易速度的极致要求,发明了一种期货行情加速系统及加速方法,采用软硬件结合的方式,解决了国内行情获取速度受限,高频交易难以实现的技术问题。

本发明通过以下技术方案来实现上述目的:

一种期货行情加速系统,包括报文接收模块、报文选择模块、行情分发模块和用户登录模块;

所述报文接收模块,用于接收行情源发出的行情数据,并系统解析,将得到的FTD报文发送给报文选择模块;

所述报文选择模块,用于对报文接收模块发送的FTD报文进行先后判定,提取唯一的、最先到达的行情数据发送给行情分发模块;

所述行情分发模块,用于将最先到达的行情数据通过用户登录模块分发给登录的用户;

所述用户登录模块,用于管理登陆本系统的用户连接,包括用户登陆报文校验、与用户机建立TCP连接、保持TCP连接、数据保存和记录。

进一步地,所述报文选择模块与行情分发模块之间连接有报文拷贝模块,用于将最快行情报文根据用户的登陆数量拷贝多份,并传输给行情分发模块。

进一步地,还包括数据存储备份模块,用于对所有进入和发出本系统的数据全部进行拷贝,并将其通过DMA通道保存,以便在程序故障时进行原场景模拟。

进一步地,所述报文选择模块包括数据判断模块,分别与所述数据判断模块相连的数据输入模块、检验时间戳模块、丢弃模块和分发给用户模块。

进一步地,所述报文选择模块采用多通道并行解析方式。

进一步地,所述加速系统通过API与登录用户进行交互。

进一步地,所述报文接收模块采用被动侦听的方式从行情源获取行情数据。

进一步地,所述加速系统采用网络部署方式、本地部署方式和混合部署方式三种部署方式。

进一步地,所述加速系统还包括辅助功能模块,为用户使用和维护软件提供参考;包括帮助、关于、产品升级功能。

一种期货行情加速系统的加速方法,包括如下步骤:

a、通过期货交易所端口向本加速系统输入行情数据,对获取的行情TCP报文经解析得到的FTD报文,通过数据存储备份模块保存和记录后将行情包发送给报文选择模块;

b、对上述步骤a发送的FTD报文,根据报文中的时间戳检验行情数据的先后顺序,对于具有相同时间戳的FTD报文,只对其中首个到达的进行提取,其余具有相同时间戳的行情FTD报文将被丢弃,将提取唯一的、最先到达的行情数据发送给下一模块;

c、将上述步骤b中提取的唯一报文根据用户的登陆数量拷贝多份,传输给行情分发模块;

d、用户登录后经身份校验与本加速系统建立TCP连接,通过数据存储备份模块将数据保存和记录后,将上述步骤c中行情分发模块获取的行情数据,按照不同用户登录时的IP地址和端口,组织UDP报文后分发给相应的登录用户。

本发明的有益效果是:

1、采用硬件行情加速卡,集成TCP解压引擎,无需内核处理;和普通的软件行情系统的不同的是,本加速系统直接采用硬件方式对数据进行处理,类似于计算机硬件网卡,其中为期货行情设计定制的报文接收、处理、分发模块使得行情数据无需与计算机CPU内核进行交互就可独立处理数据,极大提高了速度。

2、硬件协助处理FTD行情信息,进一步提高行情使用速度;从TCP包中解压出来的FTD报文也将同样通过硬件的方式进行处理,根据其报文时间戳进行报文速度对比,选取最快的行情进行批量转发或者DMA传输。

3、为低延迟定制的DMA通道,无需内核干预,数据搬运速度达到极致;由于采用定制DMA(直接内存存取)的方式对数据进行操作,本系统在进行行情数据流交互运作时无需等待CPU指令交互,而可以直接将数据传输到所需之处。

4、汇集所有行情,配置简单,对交换机影响小;行情源的行情数据主要通过被动侦听的方式接收,由交换机进行镜像操作而实现。

5、采用三种部署方式,灵活方便,既可以用户独享,也可以通过万兆光口批量转发,本系统可以安装在期货公司的标准服务器上,将行情分发给多个用户,也可以安装在个人用户的托管服务器上,直接将数据通过PCI-E端口输出到本机,或者将上述两种方式结合起来。

6、简单易用的API和用例,可直接上手使用;用户与本系统的交互通过API接口和范例,用户可直接根据API接口规范进行编程,提高了用户熟悉掌握本产品的效率。

附图说明

图1为本发明的系统连接示意图;

图2为报文选择模块连接示意图;

图3为报文拷贝模块和报文分发模块连接示意图;

图4为数据存储备份模块连接示意图;

图5为用户登录过程流程图;

图6为本发明的运行状态图。

具体实施方式

下面将结合附图及实施例对本发明及其效果作进一步阐述。

如图1所示,一种期货行情加速系统,采用软硬件结合的方式,将报文接收、解析、分发和用户管理等功能集成在FPGA硬件上,定制成硬件行情加速网卡,解决了国内行情获取速度受限,高频交易难以实现的技术问题。比普通行情软件速度提高了数百倍,满足高频交易者对行情获取速率的需求,也填补了该技术在国内的空白;其包括报文接收模块、报文选择模块、行情分发模块和用户登录模块;

报文接收模块,用于接收行情源即期货交易所发出的TCP报文,并进行解析得到FTD报文,然后将FTD报文发送给报文选择模块。本加速系统中,报文接收模块采用被动侦听的方式从行情源获取行情数据。被动侦听的实现方式是指在已经建立TCP连接的通路上,由交换机对相应的数据流进行镜像操作,形成一个复制的数据流交给FPGA进行处理。其优势在于,无需为建立TCP连接而消耗端口,即交易所席位。而且可以通过将多个数据流镜像到同一端口,从而实现多路侦听和报文比对。由于被动侦听无法向行情源发出反馈,因此当接收到行情数据后,本系统会对TCP包进行解析和处理,以确保数据的正确性。其主要根据TCP报文中的Sequence Number字段对报文进行判断,由于按顺序传输的TCP报文中,Sequence Number具有一定的规律,因此可以根据这一点排除错误的报文,确保报文传输的准确性。

报文选择模块即报文处理模块,从TOE接口接收获得的行情FTD报文,根据FTD报文中的时间戳判定该行情数据的先后顺序;通常交易所会在同一时间产生多路行情,其具有相同的时间戳,我们只提取这些行情数据中最先到达的、唯一的一条发送给行情分发模块。

如图2所示,报文选择模块具体包括数据判断模块,分别与所述数据判断模块相连的数据输入、检验时间戳、丢弃和分发给用户模块。报文选择模块采用多通道并行解析方式解析报文。多通道的处理方式是指,在行情数据通过光口进入FPGA后,根据其IP地址和端口的不同,将其分别分入不同的处理器中进行预处理,提取出其中的FTD报文,然后再进行后续的处理。多通道并行解析方式的好处是避免了当多路行情间隔时间较短时,系统处理前一条行情时引发的后续行情不能及时处理的情况,使得能够最快速度地判断出行情快慢,为本加速系统实现加速提供保障。期货交易所每隔一时间段发送一批行情,该批行情是相同的,具有相同的时间戳,但是走不同的通路;因相同的行情包具有同样的时间戳,其代表了合约在该特定时间的状态;因此,时间戳可以用于识别行情,并对其速度进行判断。数据输入后经数据判断模块、检验时间戳模块提取其中最先到达的进行转发给下一模块,其余具有相同时间戳的行情FTD报文将被丢弃。

行情分发模块,用于将最快的行情数据通过用户登录模块分发给登录的用户;根据不同用户的IP地址,端口等信息,组成UDP报文进行分发。

进一步地,报文选择模块与行情分发模块之间连接有报文拷贝模块,用于将最快行情报文根据用户的登陆数量拷贝多份,并传输给行情分发模块。如图3所示,经过筛选的行情数据FTD报文被存入寄存器Msg-Buffer当中。通过配置接口Config_interface将控制指令输入寄存器,并控制行情分发模块从寄存器Msg-Buffer中读取数据。每多一个客户订阅了行情,行情分发模块就从寄存器Msg-Buffer中多读取一次,然后将读取的报文按照不同用户登录时的IP地址和端口,组织UDP报文后分发给不同的用户。

如图4所示,本加速系统还包括数据存储备份模块,用于对所有进入和发出本系统的数据全部进行拷贝,并将其通过DMA通道保存,以便在程序故障时进行原场景模拟。由于采用定制DMA(直接内存存取)的方式对数据进行操作,本系统在进行行情数据流交互运作时无需等待CPU指令交互,而可以直接将数据传输到所需之处。在程序运行的过程当中,我们从Client(客户)端和Venue(数据)端同时进行数据拷贝、保存,以便在程序故障时进行原场景模拟。

所述用户登录模块,用于管理登陆本系统的用户连接,包括用户登陆报文校验、与用户机建立TCP连接、保持TCP连接、数据保存和记录等功能。且本系统通过API方式与登录用户进行交互,将接收到的行情数据按照用户指定的交易策略进行处理,用户的登录状态同样会根据系统API给予用户反馈;用户可直接根据API接口规范进行编程,提高了用户熟悉掌握本产品的效率。如图5所示,用户登录过程为:当用户的登陆的用户名和密码正确时,我们将允许用户与本加速系统建立TCP连接,并返回正确的登陆报文。若登陆信息有误,也将向用户返回错误信息。

本加速系统采用网络部署方式、本地部署方式和混合部署方式三种部署方式。其中在网络版部署方式中,行情加速系统被部署在期货公司的标准服务器中,使用一个镜像端口,可以支持16个客户的行情需求。而在本地版的部署方式中,行情加速系统被直接安装在客户托管服务器的板卡内,由于没有路由器的延迟,该部署方式可以使用户获得最快速的行情。将上述两种部署方式结合使用,可以达到最为优化的使用效果。采用三种部署方式,灵活方便,既可以用户独享,也可以通过万兆光口批量转发,本系统可以安装在期货公司的标准服务器上,将行情分发给多个用户,也可以安装在个人用户的托管服务器上,直接将数据通过PCI-E端口输出到本机,或者将上述两种方式结合起来。

所述加速系统还包括辅助功能模块,为用户使用和维护软件提供参考;包括帮助、关于、产品升级功能。

一种期货行情加速系统的加速方法,包括如下步骤:

a、通过期货交易所端口向本加速系统输入行情数据,对获取的TCP报文经解析得到的FTD报文,通过数据存储备份模块保存和记录后将行情包发送给报文选择模块;

b、通过TOE接口接收上述步骤a发送的FTD报文,根据报文中的时间戳检验行情数据的先后顺序,对于具有相同时间戳的FTD报文,只对其中首个到达的进行提取,其他具有相同时间戳的行情FTD报文将被丢弃,提取唯一的、最先到达的行情发送给下一模块;

c、将上述步骤b中提取的唯一报文根据用户的登陆数量拷贝多份,传输给行情分发模块;

d、用户登录后经身份校验、API交互后与本加速系统建立TCP连接,数据存储备份后,将上述步骤c中行情分发模块获取的行情数据,按照不同用户登录时的IP地址和端口,组织UDP报文后分发给相应的登录用户。

如图6所示,由交易所先后或者同时发出多路行情,经报文接收模块接收解析后,由报文选择模块判定快慢,提取唯一的、最先到达的进行转发给下一模块。根据报文中的时间戳检验行情数据的先后顺序,对于具有相同时间戳的FTD报文,只对其中首个到达的进行提取,其他具有相同时间戳的行情FTD报文将被丢弃。

本实施例中的系统要求为:

Linux 64bit kernel 2.6 (推荐CentOS 6.4 64位)

Xele-MD服务程序ftd_md

Linux 64bit kernel 2.6 (推荐CentOS 6.4 64位)Xele-MD服务程序ftd_md

执行过程为:

1. ./start_md.sh

正常启动xele_md

2. 看到进程是否正常运行:

ps –ef | grep ftd_md |grep –v grep

当使用本地版时,如若需要修改进程CPU占用率,需要用root用户执行。如果希望手动修改CPU占用率,可将1000至100000写入/cgroup/cpu/xele_0/cpu.cfs_quota_us,如写入的为50000,则CPU占用率将为50000/100000即50%。如果不希望使用root用户执行,但又希望修改CPU占用率,可以于/cgroup/cpu/目录建立xele_0目录,并将当前进程pid写入/cgroup/cpu/xele_0/tasks,同时将1000至100000写入/cgroup/cpu/xele_0/cpu.cfs_quota_us,即可修改当前进程CPU占用率。

在本加速系统中,外部网络连接TOE,通过万兆光口与物理层板卡连接,之后再通过GXMII总线进行数据传输。

总线接口PCI-E:PCI-E的连接是建立在一个双向的序列的(1-bit)点对点连接基础之上,这称之为“传输通道”。与PCI 连接形成鲜明对比的是PCI是基于总线控制,所有设备共同分享的单向32位并行总线。PCI-E是一个多层协议,由一个对话层,一个数据交换层和一个物理层构成。物理层又可进一步分为逻辑子层和电气子层。逻辑子层又可分为物理代码子层(PCS)和介质接入控制子层(MAC)。

DAM通道:直接内存存取(DMA)是数字信号处理器(DSP)中用于快速数据交换的重要技术,它具有独立于CPU的后台批量数据传输能力,能够满足实时图像处理中高速数据传输要求。通过灵活地控制DMA,不仅能够提高数据的传输效率,而且能够充分地发挥DSP的高速性能。

系统总线:所有外设的接口与系统总线时钟同步,不需要复杂的握手或应答机制。这样就简化了系统总线的时序行为,而且便于集成高速外设。系统总线以及整个系统的性能可以采用标准的同步时序分析技术来评估。

所有的信号都是高电平或低电平有效,便于信号在总线中高速传输。在系统总线中,由数据选择器决定哪个信号驱动哪个外设,而不是由三态缓冲器来决定。因此外设即使在未被选中时也不需要将输出置为高阻态。

为了方便外设的设计,地址、数据和控制信号使用分离的、专用的端口。外设不需要识别地址总线周期和数据总线周期,也不需要在未被选中时使输出无效。分离的地址、数据和控制通道还简化了与片上用户自定义逻辑的连接。

以上实施例仅是示例性的,并不会局限本发明,应当指出对于本领域的技术人员来说,在本发明所提供的技术启示下,所做出的其它等同变型和改进,均应视为本发明的保护范围。

再多了解一些
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1