FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
risk_manager.hpp
Go to the documentation of this file.
1
9#pragma once
10
11#include <string>
12#include <cstdint>
13#include "app/model/order.hpp"
14#include "app/model/account.hpp"
18
19namespace fix40 {
20
21// ============================================================================
22// 拒绝原因代码
23// ============================================================================
24
40
41// ============================================================================
42// 检查结果结构
43// ============================================================================
44
52 bool passed;
54 std::string rejectText;
55
60 : passed(true)
62 {}
63
70 CheckResult(RejectReason reason, const std::string& text)
71 : passed(false)
72 , rejectReason(reason)
73 , rejectText(text)
74 {}
75
82 return CheckResult();
83 }
84
92 static CheckResult failure(RejectReason reason, const std::string& text) {
93 return CheckResult(reason, text);
94 }
95};
96
97// ============================================================================
98// 开平标志
99// ============================================================================
100
107enum class OffsetFlag {
108 OPEN = 0,
109 CLOSE = 1
110};
111
112// ============================================================================
113// 风控管理器
114// ============================================================================
115
155public:
156 // -------------------------------------------------------------------------
157 // 构造函数
158 // -------------------------------------------------------------------------
159
163 RiskManager() = default;
164
165 // -------------------------------------------------------------------------
166 // 主检查方法
167 // -------------------------------------------------------------------------
168
189 const Order& order,
190 const Account& account,
191 const Position& position,
192 const Instrument& instrument,
193 const MarketDataSnapshot& snapshot,
194 OffsetFlag offsetFlag
195 ) const;
196
197 // -------------------------------------------------------------------------
198 // 子检查方法(公开以便单独测试)
199 // -------------------------------------------------------------------------
200
217 const Order& order,
218 const Account& account,
219 const Instrument& instrument
220 ) const;
221
234 const Order& order,
235 const Instrument& instrument
236 ) const;
237
250 const Order& order,
251 const Position& position
252 ) const;
253
266 const Order& order,
267 const MarketDataSnapshot& snapshot
268 ) const;
269
270 // -------------------------------------------------------------------------
271 // 辅助方法
272 // -------------------------------------------------------------------------
273
284 const Order& order,
285 const Instrument& instrument
286 ) const;
287};
288
289} // namespace fix40
虚拟交易账户数据结构
风险控制模块
Definition risk_manager.hpp:154
CheckResult checkMargin(const Order &order, const Account &account, const Instrument &instrument) const
检查可用资金是否足够
Definition risk_manager.cpp:64
CheckResult checkCounterParty(const Order &order, const MarketDataSnapshot &snapshot) const
检查市价单是否有对手盘
Definition risk_manager.cpp:132
CheckResult checkOrder(const Order &order, const Account &account, const Position &position, const Instrument &instrument, const MarketDataSnapshot &snapshot, OffsetFlag offsetFlag) const
订单风控检查
Definition risk_manager.cpp:17
CheckResult checkPrice(const Order &order, const Instrument &instrument) const
检查价格是否在涨跌停范围内
Definition risk_manager.cpp:81
RiskManager()=default
默认构造函数
double calculateRequiredMargin(const Order &order, const Instrument &instrument) const
计算订单所需保证金
Definition risk_manager.cpp:165
CheckResult checkPosition(const Order &order, const Position &position) const
检查平仓数量是否超过持仓
Definition risk_manager.cpp:107
合约信息数据结构
行情快照数据结构
Definition matching_engine.hpp:23
RejectReason
订单拒绝原因代码
Definition risk_manager.hpp:31
@ INSTRUMENT_NOT_FOUND
合约不存在
@ NONE
无错误(检查通过)
@ PRICE_OUT_OF_LIMIT
价格超限(超出涨跌停)
@ NO_COUNTER_PARTY
无对手盘(市价单)
@ ORDER_NOT_FOUND
订单不存在(撤单时)
@ INSUFFICIENT_FUNDS
资金不足
@ INSUFFICIENT_POSITION
持仓不足(平仓数量超过持仓)
OffsetFlag
开平标志
Definition risk_manager.hpp:107
内部订单数据结构
持仓数据结构
Order order
Definition simulation_app.cpp:46
虚拟交易账户
Definition account.hpp:44
风控检查结果
Definition risk_manager.hpp:51
static CheckResult success()
创建成功结果
Definition risk_manager.hpp:81
bool passed
检查是否通过
Definition risk_manager.hpp:52
CheckResult(RejectReason reason, const std::string &text)
构造失败结果
Definition risk_manager.hpp:70
CheckResult()
默认构造函数(检查通过)
Definition risk_manager.hpp:59
std::string rejectText
拒绝原因文本
Definition risk_manager.hpp:54
static CheckResult failure(RejectReason reason, const std::string &text)
创建失败结果
Definition risk_manager.hpp:92
RejectReason rejectReason
拒绝原因代码
Definition risk_manager.hpp:53
合约静态信息
Definition instrument.hpp:48
合约行情快照
Definition market_data_snapshot.hpp:47
内部订单表示
Definition order.hpp:90
合约持仓
Definition position.hpp:45