HFTrader高频交易系统架构
HFTrader高频交易系统架构
一、开发环境搭建
- HFTrader高频交易系统作为QuantFabric量化交易系统的一部分,开发环境搭建与开源QuantFabric量化交易系统相同。
二、HFTrader高频交易系统架构
1、HFTrader功能特性
- HFTrader期货功能特性如下:
- 期货行情网关支持:CTP、REM
- 期货交易柜台支持:CTP、REM、YD
- 策略支持:单账户多策略
- 风控支持:防自成交、撤单限制
- HFTrader股票功能特性计划支持如下:
- 华鑫Tora
- 中泰XTP
- 宽睿OES
- 策略支持:单账户多策略
- 风控支持:防自成交、委撤比限制
2、HFTrader高频交易系统架构
HFTrader高频交易组件是QuantFabric量化交易系统的一部分,与XMonitor监控客户端、XServer中间件、XWatcher监控组件、XMarketCenter行情网关、XTrader交易网关、XRiskJudge风控系统一起组成QuantFabric量化中高频交易系统。
HFTrader高频交易系统架构如下:
HFTrader机构版:对于拥有Colo托管交易服务器完整使用权限的交易机构、团队或个人用户,HFTrader高频交易系统由XMonitor监控客户端、XServer中间件、XWatcher监控组件、HFTrader交易组件四个组件构成。
HFTrader轻量版:对于只拥有Colo托管交易服务器部分资源(如只能使用2个CPU)使用权限的个人用户(通常只有一个交易账户),HFTrader高频交易系统由XMonitor监控客户端、XServer中间件、HFTrader交易组件三个组件构成。
三、HFTrader高频交易系统展示
1、开发服务器
- 开发测试服务器由深圳塞克普斯提供,交易服务器配置如下:
- CPU:Intel Core i9-10980XE 18核
- 内存:32GB
- 磁盘:480GB SSD
- 网卡:低延迟网卡SolarFlare X2522 x 1, 普通万兆网卡 x 1
- 开发测试服务器环境:
- CentOS 7.9
- GCC编译器:GCC 9.3.1
2、HFTrader交易系统展示
XMonitor监控客户端Monitor插件:
XMonitor监控客户端OrderManager插件:
XMonitor监控客户端RiskJudge插件:
3、HFTrader性能指标
- CPU超频至5.0GHZ,并绑定CPU到线程
- 配置CTP行情网关和CTP交易网关,使用上期技术SimNow测试环境,使用简单高频策略进行交易,HFTrader性能延迟数据如下:
Perf Indicator:Tick2Order(ns) count: 219 min: 1008 max: 4184 first: 1008 mean: 1851.33 median: 1762 std: 530.66 10%: 1312 20%: 1414 30%: 1548 40%: 1672 50%: 1762 60%: 1856 70%: 1958 75%: 2044 80%: 2146 85%: 2276 90%: 2542 95%: 3070 99%: 3510
- HFTrader共计报单219笔,Tick2Order最大延迟4184ns,最小延迟1008ns,延迟中位数1762ns,90%分位数2542ns,99%分位数3510ns。
四、HFTrader高频交易系统开发指南
1、HFTrader配置
HFTrader交易组件配置如下:
HFTraderConfig:Account : xxxxxxXWatcherIP: 127.0.0.1XWatcherPort: 6001MarketGateWay: CTPMarketGateWayTraderGateWay: CTPTraderGateWayStrategyFactory: FutureStrategyFactoryMarketConfig: /home/xtrader/Test/HFTrader/Config/HFTraderXXX.ymlTraderConfig: /home/xtrader/Test/HFTrader/Config/HFTraderXXX.ymlSnapShot: trueSnapShotPath: /home/xtrader/Test/HFTrader/Bin/FutureData.binColo: XServerCPUSET: 12, 13AutoTrade: trueStrategyList: - Name: LatencyTestStrategyExchangeID: DCEConfigPath: ContinuousAuctionPeriod:- 21:00:00.000-23:00:00.000- 09:00:00.000-10:15:00.000- 10:30:00.000-11:30:00.000- 13:30:00.000-15:00:00.000Interval: 250CloseTick: 10TickerListPath: /home/xtrader/Test/HFTrader/Config/TickerList.ymlMarketConfig:CallAuctionPeriod: 20:59:00.000ContinuousAuctionPeriod:- 21:00:00.000-23:00:00.000- 09:00:00.000-10:15:00.000- 10:30:00.000-11:30:00.000- 13:30:00.000-15:00:00.000Interval: 250Interface:LocalIP: MultiCastIP: LocalPort: TickerListPath: /home/xtrader/Test/HFTrader/Config/TickerList.ymlAPIErrorPath: /home/xtrader/Test/HFTrader/Config/YDError.yml# CTP:FrontAddr REM: LoginIDExtend1: # CTP:BrokerID REM: PassWordExtend2: # CTP: UserID REMTCP: IP REMUDP: ExchangeIDExtend3: # CTP: PassWord REMTCP: Port Extend4: Extend5: TraderConfig:Broker: ZXProduct: ZX_Product_1ExchangeID: CFFEXBussinessType: 3BrokerID : xxxxAccount : xxxxxxPassword : 123456AppID : xxxxxAuthCode : xxxxxxxxxxxxxxxxxxQryFund: trueCancelAll: trueCloseToday: falseTickerCancelLimit: 300TickerListPath: /home/xtrader/Test/HFTrader/Config/TickerList.ymlAPIErrorPath: /home/xtrader/Test/HFTrader/Config/YDError.yml# CTP:FrontAddr YD: YD API Config file REM: EES Trader Lib PathExtend1: # REM: TradeServerIPExtend2: # REM: TradeServerPortExtend3: # REM: TradeServerUDPPortExtend4: # REM: QueryServerIPExtend5: # REM: QueryServerPortExtend6:# REM: QuoteServerIPExtend7:# REM: QuoteServerPortExtend8:# REM: LocalTradeIPExtend9:# REM: LocalTradeUDPPortExtend10:
TickerList.yml配置文件如下:
TickerList: -TickerIndex: 0Ticker: IC2209ExchangeID: CFFEXPriceTick: 0.2-TickerIndex: 1Ticker: IC2210ExchangeID: CFFEXPriceTick: 0.2-TickerIndex: 2Ticker: IC2212ExchangeID: CFFEXPriceTick: 0.2
XXXError.yml错误配置文件如下:
Error:- Code: 0Error: CTP-正确-Code: 1Error: CTP-不在已同步状态- Code: 2Error: CTP-会话信息不一致-Code: 3Error: CTP-不合法的登录- Code: 4Error: CTP-用户不活跃- Code: 5Error: CTP-重复的登录
2、HFTrader线程模型
HFTrader线程模型如下:
HFTrader包括行情、策略、交易、监控四个模块,每个模块创建一个线程运行,其中行情、策略、交易建议分别绑定隔离CPU提高性能,HFTrader进程启动时建议绑定CPU,因此每个HFTrader实例占用4个CPU。
3、自定义策略
期货交易策略必须从FutureStrategy派生,并实现如下接口:
virtual void LoadStrategyConfig(const ConfigUtil::StrategyProperty& Config) = 0; virtual void OnFastOrder(const Message::TFastOrder& FastOrder) = 0; virtual void OnFutureData(const HFTrader::TFutureMarketData& data, uint32_t TickerIndex) = 0; virtual void OnHistoryData(const HFTrader::TFutureMarketData& data, uint32_t TickerIndex) = 0;
- LoadStrategyConfig:加载具体策略配置。
- OnFastOrder:推送订单状态。
- OnFutureData:推送实时行情数据,计算信号,执行交易信号,进行报单、撤单。
- OnHistoryData:推送历史行情数据,HFTrader在交易时段重启会丢失最近行情数据。
成员对象:
protected:uint32_t m_StrategyID;ConfigUtil::StrategyProperty m_StrategyProperty;std::vector<ConfigUtil::TickerProperty> m_TickerPropertyList;typedef phmap::flat_hash_map<std::string, ConfigUtil::TickerProperty, phmap::priv::hash_default_hash<std::string>,phmap::priv::hash_default_eq<std::string>,std::allocator<std::pair<const std::string, ConfigUtil::TickerProperty>>>TickerPropertyMapT;TickerPropertyMapT m_TickerPropertyMap;uint64_t m_CurrentSectionStart;uint64_t m_CurrentSectionEnd;typedef phmap::flat_hash_map<std::string, uint32_t, phmap::priv::hash_default_hash<std::string>,phmap::priv::hash_default_eq<std::string>,std::allocator<std::pair<const std::string, uint32_t>>>TickerIndexMapT;TickerIndexMapT m_TickerIndexMap;typedef phmap::flat_hash_map<uint32_t, Message::TFastOrder, phmap::priv::hash_default_hash<uint32_t>,phmap::priv::hash_default_eq<uint32_t>,std::allocator<std::pair<const uint32_t, Message::TFastOrder>>>OrderStatusMapT;OrderStatusMapT m_OrderStatusMap;static Message::TAccountFund m_AccountFund;static phmap::flat_hash_map<std::string, Message::TAccountPosition, phmap::priv::hash_default_hash<std::string>,phmap::priv::hash_default_eq<std::string>,std::allocator<std::pair<const std::string, Message::TAccountPosition>>>m_LastAccountPositionMap;Message::TFastOrder m_FastOrder; protected:static phmap::flat_hash_map<std::string, HFTrader::TFutureMarketData, phmap::priv::hash_default_hash<std::string>,phmap::priv::hash_default_eq<std::string>,std::allocator<std::pair<const std::string, HFTrader::TFutureMarketData>>>m_LastFutureMarketDataMap;
- 上述数据结构可以在具体策略中直接使用,但不需要维护。
报单、撤单接口如下:
protected:void SendOrder(const Message::TFastOrder& FastOrder);void CancelOrder(uint32_t OrderRef);
- SendOrder用于报单,可以复用预定义m_FastOrder成员对象,只填写部分字段,减少开销。m_FastOrder成员对象的通用字段在具体策略构造函数或策略配置加载函数内填写。
- CancelOrder用于撤单,只用填写挂单的OrderRef即可。
量化IT技术QQ群:748930268,加群验证码:QuantFabric
HFTrader高频交易系统架构相关推荐
- QuantFabric量化交易系统架构
一.交易所架构 1.证券交易架构 证券交易包括交易所.买方.卖方,证券交易解决方案架构如下: 卖方是把各种资产包装成产品并提供给市场的实体,如各大证券公司(中信证券.中信建投.海通证券.国泰君安证券等 ...
- 莫德友_去哪儿酒店交易系统架构实践
2019独角兽企业重金招聘Python工程师标准>>> 莫德友_去哪儿酒店交易系统架构实践 去哪儿网在刚开始做酒店交易业务的时候,为了实现各个业务线的快速搭建和运营,采取了比较简单粗 ...
- 交易系统架构演进之路(二):2.0版
欢迎关注「Keegan小钢」公众号获取更多文章 交易系统架构演进之路(一):1.0版 回顾 1.0 版 我们来回顾下 1.0 版 的内容,需求上经过分析,最终 1.0 版只是做一个 MVP--最小可行 ...
- 大数据时代证券核心交易系统架构演化
大数据时代证券核心交易系统架构演化 推荐阅读: 世界的真实格局分析,地球人类社会底层运行原理 不是你需要中台,而是一名合格的架构师(附各大厂中台建设PPT)企业IT技术架构规划方案论数字化转型--转什 ...
- 如何构建你的高频交易系统模型?
高频交易系统的开发大致可以分为三个阶段:研究阶段.模型阶段和实现阶段.每一个阶段都有自己的内部过程和子系统.在建立模型之前,抽象化的交易想法可能会在数学上存在些逻辑错误和缺陷.模型阶段就是要验证你的交 ...
- 基金公司算法交易系统架构
原文地址:基金公司算法交易系统架构作者:南证小麦兜 一.系统架构图 二.系统功能说明 在统一部署式算法交易系统中,交易员选择使用一个算法交易模型之后,通过设置一系列参数,将母单发送给算法交易服 ...
- 交易系统架构演进之路(一):1.0版
欢迎关注「Keegan小钢」公众号获取更多文章 前言 近几年,我在资产证券类交易系统领域做得比较多,从2016年开始,在贵金属交易领域深耕了两年,负责的交易平台用户量曾达到几百万,日活也有几十万,日流 ...
- 分布式高频量化交易系统架构讲解(企业版,期货ctp,股票xtp,数字货币,附全部源码)(值得收藏)
目录 1.量化交易系统简介 1.1行情数据 1.2交易策略 1.3交易 2. 分布式高频量化交易系统 2.1. 架构图 2.1.1量化交易系统教程地址 2.1.2量化交易系统教程中讲解的期 ...
- 千万级饿了么交易系统架构 5 年演化史!
来自:阿里巴巴中间件 文 | 挽晴 个人简介: 2014年12月加入饿了么,当时参与后台系统的研发(Walis+Javis=>Walle),主要面向客服和BD. 2015年5月开始接触订单系 ...
最新文章
- 在线视频解决方案供应商
- mysql同步出现错误
- linux删去分区的文件夹,如何恢复 Linux 分区下误删的文件?
- 基本概念—回归、分类、聚类
- 北京林业大学c语言题库,2016年北京林业大学信息学院数据结构考研复试题库
- windows7 + vs2008 + oracle + iis7 客户端配置成功
- WPF实现截屏(仿微信)
- 【HDU - 1045】Fire Net (dfs 或二分图)
- 关于计算机类课程实验教学的思考
- 用正则表达式将前后空格用空字符串替代:replace(/(^\s*)|(\s*$)/g, )
- 移动硬盘插电脑上驱动感叹号_如何通过移动驱动器向手机或平板电脑添加额外的存储空间...
- 电脑所有的浏览器都上不了网怎么解决
- B站韩顺平老师Linux笔记(截止到85集)
- 回声问题和回声消除技术及在可视监控对讲、楼宇对讲等领域的应用综述
- leetcode简单之613.直线上的最近距离
- 分布式微服务学习总结——分布式微服务概述
- Java接口限流算法
- 大数据毕业设计 基于时间序列的股票预测与分析系统 - 大数据分析
- imx8qxp平台,android11系统,U盘和sdcard自动挂载配置
- Android方向传感器实践——自己动手做指南针
热门文章
- “慌不择路”周鸿祎,昔日大炮忙跟风【短评】
- 2.艾特用户功能实现
- css-涟漪效果按钮特效
- 使用盛派Senparc SDK微信开发
- gimp怎么更改已有文字_gimp怎么更改已有文字_用GIMP软件怎么制作文字图片及其倒影?...
- Android Things:用户驱动-传感器
- python判断x是否为奇数表达式_若希望当x的值为奇数时,表达式的值为“真”,x的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( )。...
- SpringBoot - 动态修改yml配置文件
- 浅谈一下vue created的使用
- 大数据技术之_23_Python核心基础学习_01_计算机基础知识 + Python 入门 (9.5小时)