Hello?CTP(二)——CTP简介
2021/7/1 23:27:21
本文主要是介绍Hello?CTP(二)——CTP简介,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Hello CTP(二)——CTP简介一、CTP简介
1、CTP简介
CTP(Comprehensive Transaction Platform)综合交易平台是上海期货信息技术有限公司(上海期货交易所全资子公司)开发的期货交易平台,CTP平台以新一代交易所系统的核心技术为基础,具有稳定、高速的开放式接口,适合程序化交易运用和短线炒单客户使用。
2、CTP设计
(1)高可用性
CTP通过提高系统的容错、排错、检错、纠错能力来保证系统可用性。
对可能错误进行容错设计;对关键应用部件采用冗余设计,交易系统所有关键节点都有备份系统,出现故障时可以迅速、平滑地切换系统,不影响系统运行。交易数据可以实现精确重演,保证系统重要数据的安全性设置并发布运行日志和信息跟踪功能。在设计API接口和人机接口时,对关键输入信息引入检错、纠错机制。
(2)大规模并发处理能力
期货交易系统对交易的实时性要求很高,客观上要求系统应当具有大规模并发的快速处理能力。一般从系统的体系结构和计算模型、内存组织结构、临时文件的组织结构和数量、软件结构和程序调用关系、系统数据的分布方式及应用的组织结构等方面提升系统的运行效率。
(3)安全性
交易员或投资者的身份应得到有效验证,使得未授权用户不能进行交易;交易监控和关键数据日志记录,使得交易行为不可抵赖以及可日后审计;交易数据加密,使得交易不会泄密和被监控偷听等。
(4)可扩展性
系统在软件体系结构维持不变的情况下,通过对硬件配置的扩展提升系统性能。同时,系统设计应尽可能灵活,保证以后的扩展性。交易系统内部,应当由相对独立的交易组件组成。
(5)业务规则的隔离
通过对不断扩展的业务进行抽象,形成各种业务规则。对于这些业务规则,应当使相互之间的影响降到最低,在增加新的规则或对原有规则进行调整时,将影响降到最低。
3、CTP通讯模式
CTP API使用基于TCP协议上的FTD协议与CTP后台进行通讯,FTD协议中的所有通讯都基于某个通讯模式。CTP API通讯模式有三种:
(1)对话通讯模式,是指由客户端主动发起的通讯请求,请求被CTP后台接收和处理,并给予响应,如报单、撤单及查询等。
(2)私有通讯模式,是指CTP后台主动向某个特定的客户端发出的信息,如报单回报、成交回报等。
(3)广播通讯模式是指交易系统端主动向所有连接到系统上的客户端都发出相同的信息,如行情。
CTP系统中对话模式下被返回的消息称为响应,私有模式和广播模式下被返回的消息被称为回报。
CTP API与CTP后台通讯,不同通讯模式对应不同的通讯数据流,对话通讯模式对应对话数据流(DialogRsp)和查询数据流(QueryRsp),CTP后台不维护对话数据流(查询数据流)的状态,通讯故障时,对话数据流(查询数据流)会重置,通讯途中的数据可能会丢失。
私有通讯模式对应私有数据流(Private),私有数据流是一个可靠的数据流,CTP 后台维护每个登录用户的私有流,在一个交易日内,CTP API与CTP后台断线后恢复连 接时,CTP后台会向使用restart 或 resume模式订阅私有数据流的用户重传全部(restart) 或断线期间(resume)的私有数据流。
广播通讯模式对应公共数据流(Public),与私有数据流类似,是一个可靠的数据流。
CTP API实例创建时会指定流文件目录,并生成流文件,行情接口实例生成DialogRsp.con、QueryRsp.con、TradingDay.con,
交易接口实例生成DialogRsp.con、Private.con、Public.con、QueryRsp.con、TradingDay.con。
二、CTP架构
1、CTP系统架构
投资者终端:实现交易平台TradeApi接口和MdApi接口,为投资者提供报单操作入口及资金持仓等交易信息查询展示界面。
交易员终端:实现交易平台UserApi接口,为交易员提供报单操作入口及交易员被赋予的相关查询权限。
FTD协议:FTD(Futures Trading Data Exchange Protocol,期货交易数据交换协议),包括体系结构、报文格式、数据字典、运作机制等内容。
交易前置:交易前置服务一方面通过TCP连接与交易终端相连,另一方面通过FIB与其它后台服务相连。交易前置主要负责与业务无关的通讯工作,可以分散交易系统的压力、降低交易系统的复杂度、提高安全性。交易前置主要的功能分为三类:链路管理、协议转换和数据路由。
行情前置:行情前置一方面通过TCP连接与交易终端相连,另一方面通过FIB从报盘管理应用订阅所有行情数据,转发给有订阅某合约行情数据的交易终端。
FIB信息总线:FIB(期货交易信息总线)是交易系统的通讯底层构件,为上层应用提供了数据包的封装、请求/应答通讯模式、发布/订阅通讯模式等接口。
仲裁服务:仲裁服务的主要作用是指导排队服务的状态切换。
排队服务:排队服务主要任务是将交易请求串行化,发布交易序列,做为交易核心处理数据的来源。
交易引擎:交易引擎主要负责基于投资者的持仓、报单、成交以及出入金情况进行实时的资金和仓位计算,做到事前风险控制,同时对报单进行校验、驱动交易所报盘接口工作以及发布实时交易结果到FIB。
交易查询:内置了与交易引擎完全相同的内存数据库结构以及业务规则的实现,基于对投资者实时结算的结果更新内存数据库,通过FIB提供交易终端通过交易前置服务发起的相关交易数据查询服务。
DBMT:与管理后台实时交互,将需要上下场的业务数据通过交易前置送达到交易核心进行处理。
TMDB:通过FIB订阅交易核心的处理结果,将报单、成交、收盘时行情、交易终端密码修改信息以及结算单确认信息等实时回写到物理数据库中供结算时使用。
交易初始化:交易初始化服务主要功能分为两大部分,一是根据数据库内容,生成交易核心所需初始化数据,另一个是向系统发出交易准备指令,使交易系统开始新一轮(trading session)交易。
报盘管理:通过TCP连接对交易和行情报盘进行管理,屏蔽掉了交易核心直接处理报盘接口程序与交易所前置之间复杂的通讯情况,简化了交易核心的处理逻辑。
报盘:实现了交易所的交易和行情API接口,通过交易所提供的远程交易席位进行报单和收取报单、成交回报,以及获取交易所发布行情的通道。
风控系统:旁路交易系统排队机发布的交易序列以及交易核心发布的交易结果,对交易数据进行实时监控,同时提供风险试算和风险账户强平功能。
业务数据库:为结算系统、交易系统、风控系统提供物理数据存储和数据来源。
管理平台:提供期货公司各种业务操作入口。
监控系统:旁路交易系统部分交易数据用于数据监控,同时兼顾交易系统物理部件的容量性能等监测。
2、CTP网络架构
为实现网络系统的高性能、易扩展、易伸缩、容错以及易排错的设计目标,依据系统不同通讯阶段,对各子网进行了物理上的划分和隔离。网络拓扑节点如下:
交易核心网(B1.1/B1.2):负责交易系统核心组件之间的通讯,主要为UDP广播通讯流量。
系统管理网(B1.3):连接所有主机和存储,系统管理使用。
仲裁网(B2):负责排队服务与仲裁服务之间的通讯。
数据库网(B3):负责其它服务器与数据库服务器之间的通讯。
专线前置网(S1):提供会员专线接入访问的前置通道,供远程系统管理,独立银期访问使用。
报盘前置网(S2):提供报盘前置模块与交易所前置相互访问的通道。
独立互联网(S3):提供用户通过互联网下单交易和行情的通道。
报盘管理网(B7):负责报盘管理模块与报盘接口模块之间的通讯。
3、CTP部署模式
快速交易系统在整个证券公司交易系统中扮演着独特角色,既依赖于大集中系统又独立于大集中系统。由于CTP全部进行内存交易,整个交易流程完全内存化,并不处理大量账户类数据和承担与其余第三方平台的通讯(银证平台),也不具备清算结算功能,完全为交易通道。部署模式如下:
CTP系统和主交易系统的交互甚少。CTP系统每日从集中交易柜台获取资金、证券持仓、股东编码初始化数据,将相应的数据载入内存中做交易准备,其余费率、交易参数等均需要在CTP柜台进行相应设置来保证盘中的交易控制。盘中实时出入金,通过银证转账转入集中交易柜台,再调拨到CTP系统中增加资金,反之则划出资金。日终清算集中交易柜台直接通过登记公司和交易所的文件进行处理,CTP系统不参与清算过程。
三、CTP API
1、CTP API简介
ThostFtdcTraderApi.h:C++头文件,包含交易相关指令。
ThostFtdcMdApi.h:C++头文件,包含行情相关指令。
ThostFtdcUserApiStruct.h:包含所有数据结构。
ThostFtdcUserApiDataType.h:包含所有数据类型。
thosttraderapi.lib、thosttraderapi.dll:交易相关动态链接库和静态链接库。
Thosttraderapi_se.lib、thosttraderapi_se.dll:穿透式版本交易相关动态链接库和静态链接库。
thostmduserapi.lib、thostmduserapi.dll:行情相关动态链接库和静态链接库。
Thostmduserapi_se.lib、thostmduserapi_se.dll:穿透式版本行情相关动态链接库和静态链接库。
error.dtd、error.xml:包含所有定义错误码和错误描述信息。
Spi (如CThostFtdcTraderSpi)包含有所有的响应和回报函数,用于接收CTP发送或CTP转发交易所的信息,开发者需要实现接口类。
Api (如CThostFtdcTraderApi)包含主动发起请求和订阅的接口函数,开发者直接调用即可。
CTP API的SO动态库是8字节对齐的。
2、CTP行情API
CThostFtdcMdApi行情API接口包含CThostFtdcMdApi和CThostFtdcMdSpi,通过CThostFtdcMdApiApi向CTP发送命令,通过CThostFtdcMdSpi接收CTP响应。
3、CTP交易API
CThostFtdcTraderApi交易API接口包含CThostFtdcTraderApi和CThostFtdcTraderSpi,通过CThostFtdcTraderApi向CTP发送操作请求,通过CThostFtdcTraderSpi接收CTP操作响应。
4、CTP API实例化流程
(1)实现SPI接口并创建实例以及API实例。
SPI指 CThostFtdcTraderSpi或CThostFtdcMdSpi,API指CThostFtdcMdApi或CThostFtdcTraderApi。
(2)向API实例注册SPI实例。
(3)向API实例注册前置地址。交易接口需要注册交易前置地址,行情接口需要注册行情前置地址。
(4)订阅公有流(仅限交易接口,行情接口不需要)。用于接收公有数据,如合约的交易状态。默认模式是从上次断开连接处继续收取交易所发布数据(Resume模式)开发者还可以指定全部重新获取
(Restart)或从登陆后获取(Quick)。
(5)订阅私有流(仅限交易接口,行情接口不需要)。用于接收私有数据如报单回报,默认模式是从上次断开连接处继续收取交易所发布数据(Resume模式),开发者还可以指定全部重新获取(Restart)或从登陆后获取(Quick)。
(6)初始化(Init)。
(7)等待线程退出(Join)。
5、CTP模拟测试环境
CTP仿真系统有两种,一种是期货公司提供的,后台连接对应交易所的测试环境,可以询问期货公司是否提供;另一种是上期技术提供的SimNow仿真环境。
SimNow仿真环境分为两部分,第一部分CTP柜台系统与生产环境相同,客户可以直接使用官网下载得到的CTP API在SimNow测试,然后无缝对接到期货公司生产环境;第二部分是模拟交易所系统,上期技术基于上期所系统自己开发的模拟交易所,并未对应五个交易所测试环境。
http://www.simnow.com.cn
这篇关于Hello?CTP(二)——CTP简介的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享