FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
market_data.hpp
Go to the documentation of this file.
1
9#pragma once
10
11#include <cstdint>
12#include <cstring>
13#include <string>
14
15namespace fix40 {
16
20constexpr size_t INSTRUMENT_ID_LEN = 32;
21
25constexpr size_t EXCHANGE_ID_LEN = 16;
26
30constexpr size_t DATE_LEN = 9;
31
35constexpr size_t TIME_LEN = 9;
36
55struct MarketData {
56 // =========================================================================
57 // 合约标识
58 // =========================================================================
59
65
66 // =========================================================================
67 // 价格信息
68 // =========================================================================
69
70 double lastPrice;
73 double openPrice;
74 double highestPrice;
75 double lowestPrice;
76 double closePrice;
80 double averagePrice;
81
82 // =========================================================================
83 // 成交信息
84 // =========================================================================
85
86 int64_t volume;
87 double turnover;
88 double openInterest;
90
91 // =========================================================================
92 // 买卖盘(5档)
93 // =========================================================================
94
95 double bidPrice1;
96 int32_t bidVolume1;
97 double askPrice1;
98 int32_t askVolume1;
99
100 double bidPrice2;
101 int32_t bidVolume2;
102 double askPrice2;
103 int32_t askVolume2;
104
105 double bidPrice3;
106 int32_t bidVolume3;
107 double askPrice3;
108 int32_t askVolume3;
109
110 double bidPrice4;
111 int32_t bidVolume4;
112 double askPrice4;
113 int32_t askVolume4;
114
115 double bidPrice5;
116 int32_t bidVolume5;
117 double askPrice5;
118 int32_t askVolume5;
119
120 // =========================================================================
121 // 构造函数
122 // =========================================================================
123
128 std::memset(this, 0, sizeof(MarketData));
129 }
130
135 void setInstrumentID(const char* id) {
136 std::strncpy(instrumentID, id, INSTRUMENT_ID_LEN - 1);
138 }
139
144 void setExchangeID(const char* id) {
145 std::strncpy(exchangeID, id, EXCHANGE_ID_LEN - 1);
146 exchangeID[EXCHANGE_ID_LEN - 1] = '\0';
147 }
148
153 void setTradingDay(const char* day) {
154 std::strncpy(tradingDay, day, DATE_LEN - 1);
155 tradingDay[DATE_LEN - 1] = '\0';
156 }
157
162 void setUpdateTime(const char* time) {
163 std::strncpy(updateTime, time, TIME_LEN - 1);
164 updateTime[TIME_LEN - 1] = '\0';
165 }
166
170 std::string getInstrumentID() const {
171 return std::string(instrumentID);
172 }
173
177 std::string getExchangeID() const {
178 return std::string(exchangeID);
179 }
180};
181
182// 静态断言确保 trivially copyable 特性(可安全用于无锁队列)
183static_assert(std::is_trivially_copyable<MarketData>::value,
184 "MarketData must be trivially copyable for lock-free queue");
185
186} // namespace fix40
Definition matching_engine.hpp:23
constexpr size_t EXCHANGE_ID_LEN
交易所代码最大长度
Definition market_data.hpp:25
constexpr size_t TIME_LEN
时间字符串长度 (HH:MM:SS)
Definition market_data.hpp:35
constexpr size_t DATE_LEN
日期字符串长度 (YYYYMMDD)
Definition market_data.hpp:30
constexpr size_t INSTRUMENT_ID_LEN
合约代码最大长度
Definition market_data.hpp:20
行情数据结构体
Definition market_data.hpp:55
void setTradingDay(const char *day)
设置交易日
Definition market_data.hpp:153
double preSettlementPrice
昨结算价
Definition market_data.hpp:71
double bidPrice2
买二价
Definition market_data.hpp:100
char updateTime[TIME_LEN]
更新时间 (HH:MM:SS)
Definition market_data.hpp:63
double lowestPrice
最低价
Definition market_data.hpp:75
double closePrice
收盘价
Definition market_data.hpp:76
int32_t askVolume3
卖三量
Definition market_data.hpp:108
double preOpenInterest
昨持仓量
Definition market_data.hpp:89
double bidPrice5
买五价
Definition market_data.hpp:115
char exchangeID[EXCHANGE_ID_LEN]
交易所代码
Definition market_data.hpp:61
double averagePrice
均价
Definition market_data.hpp:80
void setExchangeID(const char *id)
设置交易所代码
Definition market_data.hpp:144
std::string getExchangeID() const
获取交易所代码字符串
Definition market_data.hpp:177
double askPrice5
卖五价
Definition market_data.hpp:117
double bidPrice3
买三价
Definition market_data.hpp:105
std::string getInstrumentID() const
获取合约代码字符串
Definition market_data.hpp:170
int32_t askVolume2
卖二量
Definition market_data.hpp:103
double askPrice4
卖四价
Definition market_data.hpp:112
double lowerLimitPrice
跌停价
Definition market_data.hpp:79
int32_t updateMillisec
更新毫秒数
Definition market_data.hpp:64
double askPrice1
卖一价
Definition market_data.hpp:97
int32_t bidVolume5
买五量
Definition market_data.hpp:116
int32_t bidVolume4
买四量
Definition market_data.hpp:111
double turnover
成交额
Definition market_data.hpp:87
int32_t askVolume5
卖五量
Definition market_data.hpp:118
double highestPrice
最高价
Definition market_data.hpp:74
double bidPrice1
买一价
Definition market_data.hpp:95
double upperLimitPrice
涨停价
Definition market_data.hpp:78
double openInterest
持仓量
Definition market_data.hpp:88
void setUpdateTime(const char *time)
设置更新时间
Definition market_data.hpp:162
int32_t bidVolume2
买二量
Definition market_data.hpp:101
double askPrice3
卖三价
Definition market_data.hpp:107
int64_t volume
成交量
Definition market_data.hpp:86
double askPrice2
卖二价
Definition market_data.hpp:102
double bidPrice4
买四价
Definition market_data.hpp:110
int32_t askVolume4
卖四量
Definition market_data.hpp:113
int32_t bidVolume3
买三量
Definition market_data.hpp:106
int32_t askVolume1
卖一量
Definition market_data.hpp:98
double lastPrice
最新价
Definition market_data.hpp:70
char tradingDay[DATE_LEN]
交易日 (YYYYMMDD)
Definition market_data.hpp:62
double settlementPrice
结算价
Definition market_data.hpp:77
int32_t bidVolume1
买一量
Definition market_data.hpp:96
void setInstrumentID(const char *id)
设置合约代码
Definition market_data.hpp:135
char instrumentID[INSTRUMENT_ID_LEN]
合约代码
Definition market_data.hpp:60
MarketData()
默认构造函数,初始化所有字段为零值
Definition market_data.hpp:127
double preClosePrice
昨收盘价
Definition market_data.hpp:72
double openPrice
开盘价
Definition market_data.hpp:73