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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/10677.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGPT热潮背后,金融行业大模型应用路在何方?——金融行业大模型应用探索

ChatGPT近两个月以来不断引爆热点&#xff0c;对人工智能应用发展的热潮前所未有地高涨&#xff0c;ChatGPT所代表的大模型在语义理解、多轮交互、内容生成中所展现的突出能力令人惊喜。而人工智能技术在金融行业的落地应用仍然面临挑战&#xff0c;虽然已经让大量宝贵的人力从…

Microsoft Edge Dev版本如何使用chat功能

1.开启全局代理 2.访问https://www.bing.com 如何这个时候你访问的页面是长这个样子 那么你需要设置一下地域 我选择美国&#xff0c;点击之后跳转到了https://www.bing.com/?ccus访问地址https://www.bing.com/new 选择加入候补名单 点击加入候补名单 我的申请已经提交了&a…

盘点超三十款国产类ChatGPT大语言模型,你最期待哪个?

目前已经出现的国产ChatGPT有最先发布的百度文心一言&#xff0c;接着是阿里发布的通义千问&#xff0c;商汤发布的商量&#xff0c;以及最近开放测试的科大讯飞星火认知大模型、360 GPT 大模型产品矩阵“360 智脑”&#xff0c;昆仑天工3.5&#xff0c;知乎知海图Ai、实在TARS…

Stanford Alpaca (羊驼):ChatGPT 学术版开源实现

Stanford Alpaca (羊驼)&#xff1a;ChatGPT 学术版开源实现 文章目录 Stanford Alpaca (羊驼)&#xff1a;ChatGPT 学术版开源实现前言介绍Alpaca 在线体验查语病写代码连续对话能力 原理简要分析一些有意思的观察总结 前言介绍 最近 ChatGPT 大热&#xff0c;让人惊叹其强大…

火爆全网的 ChatGPT 虽然好玩,但是也有几件事是需要当心的 - 弘扬正能量

大家好&#xff0c;我是 哈士奇 &#xff0c;一位工作了十年的"技术混子"&#xff0c; 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 &#x1f4ac; 人生格言&#xff1a;优于别人,并不高贵,真正的高贵应该是优于过去的自己。&#x1f4ac; &#x1f4…

最近很火的ChatGPT和GPT4

ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;美国OpenAI研发的聊天机器人程序&#xff0c;于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c;它能够通过理解和学习人类的语言来进行对话…

登录次数限制实例

业务逻辑 1、根据用户名从数据库中取出一行数据&#xff0c;并根据数据库服务器时间&#xff0c;算出上次限制登录的时间和当前时间的时间间隔。 2、判断此用户时间间隔过了15分钟没有。如果没有&#xff0c;则给出禁止登录的提示&#xff1b;如果超过15分钟&#xff0c;则判…

ChatGPT爆火| 微软ATP推出教师AI素养提升秘籍

最近全球爆火的ChatGPT,让我们领略AI技术的迅猛发展&#xff0c;尤其在自然语言处理&#xff08;NLP&#xff09;、机器学习&#xff08;ML&#xff09;等方向与教育的结合日趋紧密&#xff0c;人工智能在教育领域中的应用呈现出快速增长的趋势。 几乎是在一夜之间 ChatGPT刷爆…

怎么把中文用户名改成英文?

我们的c盘存放的是我们系统的文件&#xff0c;有些用户没有键盘分盘&#xff0c;软件游戏也在其中&#xff0c;因为名字是中文&#xff0c;需要更改成英文&#xff0c;那么win11怎么把中文用户名改成英文&#xff1f;很多小伙伴都想要了解&#xff0c;下面就来看看具体的操作。…

英文论文如何进行润色?

众所周知&#xff0c;英文论文投稿是一件专业性非常强的技术工作。想要被期刊收录&#xff0c;以下三个方面缺一不可&#xff1a;论点和论据优秀的论文&#xff1b;优良的英文表达质量&#xff1b;精湛的投稿技术。 在发表英文论文时&#xff0c;由于语言表达的差异&#xff0c…

心法利器[82] | chatgpt下query理解是否还有意义

心法利器 本栏目主要和大家一起讨论近期自己学习的心得和体会&#xff0c;与大家一起成长。具体介绍&#xff1a;仓颉专项&#xff1a;飞机大炮我都会&#xff0c;利器心法我还有。 2022年新一版的文章合集已经发布&#xff0c;累计已经60w字了&#xff0c;获取方式看这里&…

chatGPT大规模使用kubernetes,云原生技术在AI领域也大有可为

文章目录 一、云原生在AI领域的应用方向1.1、弹性部署1.2、自动化和可维护性1.3安全性和隔离性 二、云原生在AI领域的应用案例2.1、chatGPT全面使用云原生技术2.2、TensorFlow Serving和k8s及docker的集合2.3、AWS SageMaker 三、云原生AI开发平台的发展 公众号&#xff1a; M…

与chagpt对话记录

每日chagpt对话记录 关注我一下 vscode 浏览器版本 c 函数 无法跳转 C/C IntelliSense, debugging, and code browsing. C/C IntelliSense、调试和代码浏览是指在使用VS Code进行C/C开发时的一些核心功能。下面是对这些功能的简要说明&#xff1a; IntelliSense&#xff08;智能…

使用 ChatGPT 碰到的坑

最近在使用 ChatGPT 的时候碰到一个小坑&#xff0c;因为某些特殊情况我需要使用 syslog 向 logbeat 中发送日志。 由于这是一个比较古老的协议&#xff0c;确实也没接触过&#xff0c;所以就想着让 ChatGPT 帮我生成个例子。 原本我已经在 Go 中将这个流程跑通&#xff0c;所…

ChatGPT帮你调用PID算法【结合代码】

目录 PID算法是一种控制算法 下面分别介绍PID算法中的三个参数 MATLAB代码实现PID MATLAB代码实现PID PID算法是一种控制算法 用于控制系统的稳定性和精度。PID算法的名称来源于其三个组成部分&#xff1a;比例&#xff08;P&#xff09;、积分&#xff08;I&#xff09;和微…

ChatGPT实战之PID算法实现

让chatgpt写一段pid控制算法&#xff0c;看看效果如何。 通过调参也能实现收敛了。实际应用还是要看你具体的需求了。 话不多说上代码&#xff1a; import matplotlib.pyplot as plt import numpy as np class PositionPID(object): “”“位置式PID算法实现”“” def __ini…

Qt:依据ChatGpt生成Qt可选择扇形按钮

目录 引言1、生成过程1.1 饼图2.2 扇形图3.3 可选择扇形按钮1.4 新的扇形画法*GraphicItem 2、训练过程3、错误原因4、涉及知识点 引言 因为项目需要绘制一个中间为圆心&#xff0c;包含数个扇形的可选择按钮。正好ChatGpt使用起来比较成熟&#xff0c;因此使用询问的方式得到两…

五分钟零基础开发chatgpt+Midjourney工具赢得被动收入

首先感谢laf提供免费使用Midjourney API接口和云函数&#xff0c;需要详细了解的可以访问他们的官网论坛。 感谢论坛前面几位的分享&#xff0c;我做了参考。都有参考就不列啦哈&#xff01;&#xff01;&#xff01; 直接开始&#xff1a; 第一步 复制MJ-SEND云函数到laf云…

chatgpt赋能python:Python短信通知:简单高效的实现方式

Python 短信通知&#xff1a;简单高效的实现方式 现在&#xff0c;随着移动互联网的飞速发展&#xff0c;越来越多的企业和个人开始利用短信来进行通知、推广等操作。Python 作为一门广泛应用于 Web 和数据领域的编程语言&#xff0c;也可以通过一些简单的 API 接口&#xff0…

chatgpt赋能python:Python如何接收短信?——详细介绍,并提供实用代码

Python如何接收短信&#xff1f;——详细介绍&#xff0c;并提供实用代码 短信已经成为了我们日常生活中不可或缺的一部分。在很多行业中&#xff0c;短信通知也被广泛应用&#xff0c;如金融、教育、医疗等等。那么&#xff0c;如何在Python中实现接收短信呢&#xff1f;在本…