Skip to content Skip to footer

HFTrader高频交易系统架构

一、开发环境搭建HFTrader高频交易系统作为QuantFabric量化交易系统的一部分,开发环境搭建与开源QuantFabric量化交易系统相同。二、HFTrader高频交易系统架构1、HFTrader功能特性HFTrader期货功能特性如下:

期货行情网关支持:CTP、REM期货交易柜台支持:CTP、REM、YD策略支持:单账户多策略风控支持:防自成交、撤单限制HFTrader股票功能特性支持如下:

华鑫Tora中泰XTP策略支持:单账户多策略风控支持:防自成交、委撤比限制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.9GCC编译器:GCC 9.3.12、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 : xxxxxx

XWatcherIP: 127.0.0.1

XWatcherPort: 6001

MarketGateWay: CTPMarketGateWay

TraderGateWay: CTPTraderGateWay

StrategyFactory: FutureStrategyFactory

MarketConfig: /home/xtrader/Test/HFTrader/Config/HFTraderXXX.yml

TraderConfig: /home/xtrader/Test/HFTrader/Config/HFTraderXXX.yml

SnapShot: true

SnapShotPath: /home/xtrader/Test/HFTrader/Bin/FutureData.bin

Colo: XServer

CPUSET: 12, 13

AutoTrade: true

StrategyList:

-

Name: LatencyTestStrategy

ExchangeID: DCE

ConfigPath:

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.000

Interval: 250

CloseTick: 10

TickerListPath: /home/xtrader/Test/HFTrader/Config/TickerList.yml

MarketConfig:

CallAuctionPeriod: 20:59:00.000

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.000

Interval: 250

Interface:

LocalIP:

MultiCastIP:

LocalPort:

TickerListPath: /home/xtrader/Test/HFTrader/Config/TickerList.yml

APIErrorPath: /home/xtrader/Test/HFTrader/Config/YDError.yml

# CTP:FrontAddr REM: LoginID

Extend1:

# CTP:BrokerID REM: PassWord

Extend2:

# CTP: UserID REMTCP: IP REMUDP: ExchangeID

Extend3:

# CTP: PassWord REMTCP: Port

Extend4:

Extend5:

TraderConfig:

Broker: ZX

Product: ZX_Product_1

ExchangeID: CFFEX

BussinessType: 3

BrokerID : xxxx

Account : xxxxxx

Password : 123456

AppID : xxxxx

AuthCode : xxxxxxxxxxxxxxxxxx

QryFund: true

CancelAll: true

CloseToday: false

TickerCancelLimit: 300

TickerListPath: /home/xtrader/Test/HFTrader/Config/TickerList.yml

APIErrorPath: /home/xtrader/Test/HFTrader/Config/YDError.yml

# CTP:FrontAddr YD: YD API Config file REM: EES Trader Lib Path

Extend1:

# REM: TradeServerIP

Extend2:

# REM: TradeServerPort

Extend3:

# REM: TradeServerUDPPort

Extend4:

# REM: QueryServerIP

Extend5:

# REM: QueryServerPort

Extend6:

# REM: QuoteServerIP

Extend7:

# REM: QuoteServerPort

Extend8:

# REM: LocalTradeIP

Extend9:

# REM: LocalTradeUDPPort

Extend10:

TickerList.yml配置文件如下:TickerList:

-

TickerIndex: 0

Ticker: IC2209

ExchangeID: CFFEX

PriceTick: 0.2

-

TickerIndex: 1

Ticker: IC2210

ExchangeID: CFFEX

PriceTick: 0.2

-

TickerIndex: 2

Ticker: IC2212

ExchangeID: CFFEX

PriceTick: 0.2

XXXError.yml错误配置文件如下:Error:

-

Code: 0

Error: CTP-正确

-

Code: 1

Error: CTP-不在已同步状态

-

Code: 2

Error: CTP-会话信息不一致

-

Code: 3

Error: CTP-不合法的登录

-

Code: 4

Error: CTP-用户不活跃

-

Code: 5

Error: 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在交易时段重启会丢失最近行情数据。股票交易策略必须从StockStrategy派生,并实现如下接口:virtual void OnStockData(const HFTrader::TStockMarketData& data, uint32_t TickerIndex) = 0;

virtual void OnTickOrder(const HFTrader::TTickOrder& data, uint32_t TickerIndex) = 0;

virtual void OnTickTrade(const HFTrader::TTickTrade& data, uint32_t TickerIndex) = 0;

virtual void OnOrderBook(const HFTrader::TOrderBook& data, uint32_t TickerIndex) = 0;

OnStockData:推送快照行情OnTickOrder: 推送逐笔委托OnTickTrade: 推送逐笔成交OnOrderBook: 推送订单簿成员对象:protected:

uint32_t m_StrategyID;

ConfigUtil::StrategyProperty m_StrategyProperty;

std::vector m_TickerPropertyList;

typedef phmap::flat_hash_map

phmap::priv::hash_default_hash,

phmap::priv::hash_default_eq,

std::allocator>>

TickerPropertyMapT;

TickerPropertyMapT m_TickerPropertyMap;

uint64_t m_CurrentSectionStart;

uint64_t m_CurrentSectionEnd;

typedef phmap::flat_hash_map

phmap::priv::hash_default_hash,

phmap::priv::hash_default_eq,

std::allocator>>

TickerIndexMapT;

TickerIndexMapT m_TickerIndexMap;

typedef phmap::flat_hash_map

phmap::priv::hash_default_hash,

phmap::priv::hash_default_eq,

std::allocator>>

OrderStatusMapT;

OrderStatusMapT m_OrderStatusMap;

static Message::TAccountFund m_AccountFund;

static phmap::flat_hash_map

phmap::priv::hash_default_hash,

phmap::priv::hash_default_eq,

std::allocator>>

m_LastAccountPositionMap;

Message::TFastOrder m_FastOrder;

protected:

static phmap::flat_hash_map

phmap::priv::hash_default_hash,

phmap::priv::hash_default_eq,

std::allocator>>

m_LastFutureMarketDataMap;

上述数据结构可以在具体策略中直接使用,但不需要维护。报单、撤单接口如下:protected:

void SendOrder(const Message::TFastOrder& FastOrder);

void CancelOrder(uint32_t OrderRef);

SendOrder用于报单,可以复用预定义m_FastOrder成员对象,只填写部分字段,减少开销。m_FastOrder成员对象的通用字段在具体策略构造函数或策略配置加载函数内填写。CancelOrder用于撤单,只用填写挂单的OrderRef即可。

推荐参考学习资料:

量化IT技术专栏

QuantFabric开源量化交易系统

#高频交易##量化交易##HFTrader#

Copyright © 2088 世界杯射手榜_2014世界杯16强对阵表 - panlongs.com All Rights Reserved.
友情链接