FIX 4.0 Demo 1.0
Loading...
Searching...
No Matches
client_app.hpp
Go to the documentation of this file.
1
8#pragma once
9
10#include "fix/application.hpp"
11#include "fix/fix_codec.hpp"
12#include "fix/session.hpp"
13#include "client_state.hpp"
14#include <memory>
15#include <atomic>
16#include <string>
17#include <cstdint>
18
19namespace fix40::client {
20
35class ClientApp : public Application {
36public:
42 ClientApp(std::shared_ptr<ClientState> state, const std::string& userId);
43
44 ~ClientApp() override = default;
45
46 // =========================================================================
47 // Application 接口实现
48 // =========================================================================
49
50 void onLogon(const SessionID& sessionID) override;
51 void onLogout(const SessionID& sessionID) override;
52 void fromApp(const FixMessage& msg, const SessionID& sessionID) override;
53 void toApp(FixMessage& msg, const SessionID& sessionID) override;
54
55 // =========================================================================
56 // 业务操作
57 // =========================================================================
58
62 void setSession(std::shared_ptr<Session> session);
63
73 std::string sendNewOrder(const std::string& symbol, const std::string& side,
74 int64_t qty, double price, const std::string& ordType = "2");
75
82 void sendCancelOrder(const std::string& origClOrdID,
83 const std::string& symbol, const std::string& side);
84
88 void queryBalance();
89
93 void queryPositions();
94
100 void queryOrderHistory();
101
107 void searchInstruments(const std::string& pattern, int maxResults = 10);
108
112 const std::string& getUserId() const { return userId_; }
113
114private:
115 // 消息处理函数
116 void handleExecutionReport(const FixMessage& msg);
117 void handleBalanceResponse(const FixMessage& msg);
118 void handlePositionResponse(const FixMessage& msg);
119 void handleAccountUpdate(const FixMessage& msg);
120 void handlePositionUpdate(const FixMessage& msg);
121 void handleInstrumentSearchResponse(const FixMessage& msg);
122 void handleOrderHistoryResponse(const FixMessage& msg);
123
124 // 生成客户端订单ID
125 std::string generateClOrdID();
126
127 std::shared_ptr<ClientState> state_;
128 std::weak_ptr<Session> session_;
129 std::string userId_;
130 int64_t clOrdIdPrefixMs_ = 0;
131 std::atomic<uint64_t> orderIdCounter_{1};
132 std::atomic<uint64_t> requestIdCounter_{1};
133};
134
135} // namespace fix40::client
FIX 应用层接口定义
FIX 应用层抽象接口
Definition application.hpp:116
FIX 消息的面向对象封装
Definition fix_codec.hpp:46
客户端 FIX Application
Definition client_app.hpp:35
void queryBalance()
查询资金
Definition client_app.cpp:164
void toApp(FixMessage &msg, const SessionID &sessionID) override
发送业务消息前回调
Definition client_app.cpp:72
std::string sendNewOrder(const std::string &symbol, const std::string &side, int64_t qty, double price, const std::string &ordType="2")
发送新订单
Definition client_app.cpp:85
const std::string & getUserId() const
获取用户ID
Definition client_app.hpp:112
void searchInstruments(const std::string &pattern, int maxResults=10)
搜索合约
Definition client_app.cpp:196
void queryPositions()
查询持仓
Definition client_app.cpp:175
void setSession(std::shared_ptr< Session > session)
设置 Session
Definition client_app.cpp:77
void fromApp(const FixMessage &msg, const SessionID &sessionID) override
收到业务消息回调
Definition client_app.cpp:44
void onLogout(const SessionID &sessionID) override
会话登出回调
Definition client_app.cpp:38
void queryOrderHistory()
查询订单历史(服务端持久化)
Definition client_app.cpp:186
void onLogon(const SessionID &sessionID) override
会话登录成功回调
Definition client_app.cpp:26
~ClientApp() override=default
void sendCancelOrder(const std::string &origClOrdID, const std::string &symbol, const std::string &side)
发送撤单请求
Definition client_app.cpp:136
客户端状态管理
FIX 消息编解码器
Definition client_app.cpp:13
FIX 会话层实现
FIX 会话标识符
Definition application.hpp:28