目录
1.量化交易系统简介
1.1行情数据
1.2交易策略
1.3交易
2. 分布式高频量化交易系统
2.1. 架构图
2.1.1量化交易系统教程地址
2.1.2量化交易系统教程中讲解的期货ctp知识点
2.2. 交易系统功能介绍
2.3. 账户系统介绍
2.3.1. 交易员账户
2.3.2. 管理员账户
2.4. 图中模块功能介绍
2.4.1. 行情数据端
2.4.2. 管理员客户端
2.4.3. 策略客户端
2.4.4. 交易服务端
2.5. 图中模块之间的交互
2.5.1. 策略客户端订阅行情
2.5.2. 策略客户端委托下单
2.5.3. 管理员客户端增加交易员资金
2.6. 高频设计要点
2.6.1. Linux共享内存
2.6.2. 专用线程
2.6.3. 高速内存池
1.量化交易系统简介
1.1行情数据
交易所发布行情数据。
1.2交易策略
策略研究员以数学模型为交易思维,以历史行情数据为基础,以数学建模、统计学分析、编程设计为工具,利用计算机技术从庞大的历史数据中海选出能带来超额收益的多种大概率获利事件以制定交易策略。
1.3交易
交易策略接收实时行情数据,产生委托报单信号,交易api根据委托报单信号,组建委托报单报文,发送委托报单请求到交易所。
2. 分布式高频量化交易系统
2.1. 架构图
2.1.1量化交易系统教程中讲解的期货ctp知识点
期货ctp穿透式监管
期货ctp报单和回报
期货ctp撤单
期货ctp保证金手续费费率查询
期货ctp保证金的计算
期货ctp手续费的计算
期货ctp持仓查询与更新
期货ctp持仓盈亏的计算
期货ctp平仓盈亏的计算
2.2. 交易系统功能介绍
1)行情数据端,策略客户端,管理员客户端,交易服务端是独立的程序。各程序之间用tcp或者共享内存通讯。
2)每个策略是一个单独的程序,程序名称为策略客户端。
3)如果要增加新的策略,只要增加一个策略客户端就可以了,不需要改动其它程序的代码。非常方便维护。
4)每个策略客户端分配1个交易员账户,每个交易员账户有独立的资金管理,可以统计每个策略的盈亏情况。
2.3. 账户系统介绍
账户分为交易员账户和管理员账户。
2.3.1. 交易员账户
1)由于私募基金或个人在证券公司的柜台的注册的账户只有1个,但我们有多个交易策略。这样很难计算每个交易策略的交易情况,持仓情况。所以,我们创建了多个交易员账户,为每个策略分配1个交易员账户。
2)交易员账户的委托,成交,持仓都是独立统计的。
3)交易员账户有独立的资金管理。
2.3.2. 管理员账户
管理员账户用于管理各个交易员账户,为交易员账户增加资金。
2.4. 图中模块功能介绍
2.4.1. 行情数据端
1) 连接交易所行情,订阅行情,接收行情数据。
2) 通过共享内存推送行情数据给策略客户端。
3) 收集行情数据,存储为本地文件,作为策略研究的数据。
2.4.2. 管理员客户端
1) 管理员查询证券公司注册账户的资金,委托,成交,持仓等交易情况。
2) 管理员为盘中策略表现比较好的交易员账户增加资金。
2.4.3. 策略客户端
1) 策略客户端订阅行情数据端的行情,通过共享内存接收行情数据。
2) 通过行情数据,策略产生买卖信号,通过共享内存发送委托请求到交易服务端。
2.4.4. 交易服务端
1) 连接证券公司交易柜台。
2) 接收策略客户端发送的委托请求,发送到交易所。
3) 为每个策略分配1个交易员账户,每个账户有独立的资金管理,有独立的委托成交持仓管理。
4) 为每个交易员账户计算持仓盈亏,平仓盈亏,计算期货保证金,计算手续费。
5) 对委托下单等进行检查资金,检查持仓,检查自成交等风控。
6) 每天对交易员账户进行结算。
2.5. 图中模块之间的交互
2.5.1. 策略客户端订阅行情
1)行情数据端通过tcp连接交易所行情,订阅行情,接收交易所行情数据。
2)策略客户端通过tcp连接到行情数据端,订阅行情。
3)行情数据端收到订阅请求后,和策略客户端建立共享内存通讯。
4)行情数据端通过共享内存把行情数据推送到策略客户端。
2.5.2. 策略客户端委托下单
1)交易服务端通过tcp连接证券公司柜台。
2)交易服务端登录证券公司柜台。
3)策略客户端通过tcp连接交易服务端。
4)策略客户端使用交易员账户登录交易服务端。
5)策略客户端发送增加通讯的消息队列的请求,交易服务端创建和策略客户端通讯的共享内存队列。
6)通过行情数据,策略产生买卖信号,策略客户端通过共享内存发送委托报单请求给交易服务端。
7)交易服务端收到报单请求后,计算保证金和手续费,发送委托报单请求给证券公司柜台。
8)交易服务端收到委托回报,计算保证金和手续费,发送委托回报给策略客户端。
9)交易服务端收到成交回报,计算保证金和手续费,发送成交回报给策略客户端。
2.5.3. 管理员客户端增加交易员资金
1) 管理员客户端通过tcp连接交易服务端。
2) 管理员客户端使用管理员账户登录交易服务端。
3) 管理员客户端发送增减资金请求给交易服务端。
4) 交易服务端根据增减资金请求报文中的交易员账户,为这个交易员账户增加或者减少资金。
2.6. 高频设计要点
2.6.1. Linux共享内存
1) 行情服务端和策略客户端之间的行情数据使用共享内存通讯。
2) 策略客户端和交易服务端的委托撤单使用共享内存通讯。
3) 共享内存通讯的速度远远高于tcp通讯。
2.6.2. 专用线程
交易服务端使用2个线程处理客户端的请求报文:
线程A:处理非交易的请求,例如登录,查询等。
线程B:处理交易请求,例如委托下单,撤单。
通过线程B专门处理交易请求,提高处理交易请求的速度。
2.6.3. 高速内存池
交易服务端使用高速内存池,减少new和delete申请释放内存时的时间消耗。