FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
store.hpp
Go to the documentation of this file.
1
8#pragma once
9
10#include <string>
11#include <vector>
12#include <optional>
13#include <cstdint>
14#include "app/model/order.hpp"
15#include "app/model/account.hpp"
17
18namespace fix40 {
19
24 std::string tradeId;
25 std::string clOrdID;
26 std::string symbol;
28 double price;
29 int64_t quantity;
30 int64_t timestamp;
31 std::string counterpartyOrderId;
32};
33
38 std::string senderCompID;
39 std::string targetCompID;
43};
44
49 int seqNum;
50 std::string senderCompID;
51 std::string targetCompID;
52 std::string msgType;
53 std::string rawMessage;
54 int64_t timestamp;
55};
56
61class IStore {
62public:
63 virtual ~IStore() = default;
64
65 // =========================================================================
66 // 订单存储
67 // =========================================================================
68
75 virtual bool saveOrder(const Order& order) = 0;
76
84 virtual bool saveOrderForAccount(const Order& order, const std::string& accountId) = 0;
85
86 virtual bool updateOrder(const Order& order) = 0;
87 virtual std::optional<Order> loadOrder(const std::string& clOrdID) = 0;
88 virtual std::vector<Order> loadOrdersBySymbol(const std::string& symbol) = 0;
89 virtual std::vector<Order> loadOrdersByAccount(const std::string& accountId) = 0;
90 virtual std::vector<Order> loadActiveOrders() = 0;
91 virtual std::vector<Order> loadAllOrders() = 0;
92
93 // =========================================================================
94 // 成交存储
95 // =========================================================================
96
97 virtual bool saveTrade(const StoredTrade& trade) = 0;
98 virtual std::vector<StoredTrade> loadTradesByOrder(const std::string& clOrdID) = 0;
99 virtual std::vector<StoredTrade> loadTradesBySymbol(const std::string& symbol) = 0;
100
101 // =========================================================================
102 // 会话状态存储
103 // =========================================================================
104
105 virtual bool saveSessionState(const SessionState& state) = 0;
106 virtual std::optional<SessionState> loadSessionState(
107 const std::string& senderCompID, const std::string& targetCompID) = 0;
108
109 // =========================================================================
110 // 消息存储 (用于重传)
111 // =========================================================================
112
113 virtual bool saveMessage(const StoredMessage& msg) = 0;
114 virtual std::vector<StoredMessage> loadMessages(
115 const std::string& senderCompID, const std::string& targetCompID,
116 int beginSeqNum, int endSeqNum) = 0;
117
129 const std::string& senderCompID, const std::string& targetCompID) = 0;
130
131 virtual bool deleteMessagesOlderThan(int64_t timestamp) = 0;
132
133 // =========================================================================
134 // 账户存储
135 // =========================================================================
136
147 virtual bool saveAccount(const Account& account) = 0;
148
157 virtual std::optional<Account> loadAccount(const std::string& accountId) = 0;
158
166 virtual std::vector<Account> loadAllAccounts() = 0;
167
178 virtual bool deleteAccount(const std::string& accountId) = 0;
179
180 // =========================================================================
181 // 持仓存储
182 // =========================================================================
183
194 virtual bool savePosition(const Position& position) = 0;
195
205 virtual std::optional<Position> loadPosition(
206 const std::string& accountId, const std::string& instrumentId) = 0;
207
216 virtual std::vector<Position> loadPositionsByAccount(const std::string& accountId) = 0;
217
225 virtual std::vector<Position> loadAllPositions() = 0;
226
236 virtual bool deletePosition(const std::string& accountId, const std::string& instrumentId) = 0;
237
246 virtual bool deletePositionsByAccount(const std::string& accountId) = 0;
247};
248
249} // namespace fix40
虚拟交易账户数据结构
存储接口
Definition store.hpp:61
virtual std::vector< Order > loadOrdersBySymbol(const std::string &symbol)=0
virtual bool saveMessage(const StoredMessage &msg)=0
virtual bool deleteMessagesOlderThan(int64_t timestamp)=0
virtual std::optional< SessionState > loadSessionState(const std::string &senderCompID, const std::string &targetCompID)=0
virtual std::vector< Account > loadAllAccounts()=0
加载所有账户
virtual std::vector< Position > loadAllPositions()=0
加载所有持仓
virtual std::vector< Order > loadOrdersByAccount(const std::string &accountId)=0
virtual bool deleteAccount(const std::string &accountId)=0
删除账户
virtual bool deleteMessagesForSession(const std::string &senderCompID, const std::string &targetCompID)=0
删除指定会话方向的所有已持久化消息
virtual bool saveOrder(const Order &order)=0
保存订单(不包含订单归属信息)
virtual bool saveSessionState(const SessionState &state)=0
virtual bool savePosition(const Position &position)=0
保存持仓信息
virtual bool saveOrderForAccount(const Order &order, const std::string &accountId)=0
保存订单并记录订单归属账户
virtual std::vector< StoredMessage > loadMessages(const std::string &senderCompID, const std::string &targetCompID, int beginSeqNum, int endSeqNum)=0
virtual bool saveAccount(const Account &account)=0
保存账户信息
virtual bool saveTrade(const StoredTrade &trade)=0
virtual std::vector< Order > loadActiveOrders()=0
virtual std::vector< Order > loadAllOrders()=0
virtual std::optional< Position > loadPosition(const std::string &accountId, const std::string &instrumentId)=0
加载持仓信息
virtual std::vector< StoredTrade > loadTradesByOrder(const std::string &clOrdID)=0
virtual bool updateOrder(const Order &order)=0
virtual std::optional< Account > loadAccount(const std::string &accountId)=0
加载账户信息
virtual std::vector< StoredTrade > loadTradesBySymbol(const std::string &symbol)=0
virtual std::vector< Position > loadPositionsByAccount(const std::string &accountId)=0
加载账户的所有持仓
virtual std::optional< Order > loadOrder(const std::string &clOrdID)=0
virtual ~IStore()=default
virtual bool deletePositionsByAccount(const std::string &accountId)=0
删除账户的所有持仓
virtual bool deletePosition(const std::string &accountId, const std::string &instrumentId)=0
删除持仓
Definition matching_engine.hpp:23
OrderSide
买卖方向
Definition order.hpp:26
内部订单数据结构
持仓数据结构
Order order
Definition simulation_app.cpp:46
虚拟交易账户
Definition account.hpp:44
内部订单表示
Definition order.hpp:90
合约持仓
Definition position.hpp:45
会话状态 (用于断线恢复)
Definition store.hpp:37
int sendSeqNum
发送序列号
Definition store.hpp:40
int64_t lastUpdateTime
最后更新时间
Definition store.hpp:42
int recvSeqNum
接收序列号
Definition store.hpp:41
std::string senderCompID
Definition store.hpp:38
std::string targetCompID
Definition store.hpp:39
存储的消息 (用于重传)
Definition store.hpp:48
int64_t timestamp
时间戳
Definition store.hpp:54
int seqNum
序列号
Definition store.hpp:49
std::string rawMessage
原始消息
Definition store.hpp:53
std::string targetCompID
Definition store.hpp:51
std::string senderCompID
Definition store.hpp:50
std::string msgType
消息类型
Definition store.hpp:52
存储用成交记录
Definition store.hpp:23
int64_t timestamp
成交时间戳 (毫秒)
Definition store.hpp:30
std::string tradeId
成交编号
Definition store.hpp:24
OrderSide side
买卖方向
Definition store.hpp:27
double price
成交价格
Definition store.hpp:28
int64_t quantity
成交数量
Definition store.hpp:29
std::string counterpartyOrderId
对手方订单号
Definition store.hpp:31
std::string symbol
合约代码
Definition store.hpp:26
std::string clOrdID
客户订单号
Definition store.hpp:25