BetaTrader
A HFT Eco-System
Loading...
Searching...
No Matches
TradingCore.h
Go to the documentation of this file.
1
9#pragma once
10#include "Command.h"
11#include "OrderIDGenerator.h"
12#include "Partition.h"
13#include "TradeIDGenerator.h"
14#include "MarketDataPublisher.h"
15#include "common/Order.h"
17#include "data/DatabaseWorker.h"
18#include <functional>
19#include <memory>
20#include <optional>
21
22namespace trading_core {
28 public:
29 using ExecutionReportCallback = std::function<void(const fix::ExecutionReport&)>;
30
32
33 explicit TradingCore(data::DatabaseWorker* dbWorker,
34 bool autoInitPartitions = true);
35
36 virtual ~TradingCore();
37
38 void start();
39
40 void stop();
41
43
44 void waitAllQueuesIdle() const;
45
46 virtual void submitCommand(std::unique_ptr<Command> command) const;
47
48 Partition* getPartition(common::Instrument instrument) const;
49
51
53
55
57
59
61
63
64 static TradingCore& getInstance();
65
66 std::optional<common::Instrument>
68
69 std::optional<common::Order> getOrder(common::OrderID orderId) const;
70
71 std::optional<common::Order> getOrderByClientOrderId(const std::string& clientOrderId) const;
72
73
74#ifndef NDEBUG
75 void setPartition(common::Instrument instrument,
76 std::unique_ptr<Partition> partition);
77#endif
78
79 private:
80 void initPartitions();
81
82 private:
84 std::unique_ptr<data::DatabaseWorker> mOwnedDatabaseWorker;
85 std::unique_ptr<TradeIDGenerator> mTradeIDGenerator;
86 std::unique_ptr<OrderIDGenerator> mOrderIDGenerator;
87 std::unique_ptr<Partition>
91 };
92} // namespace trading_core
Asynchronous database worker abstraction.
Represents a partition (shard) of the trading engine for a single symbol.
Executes database tasks asynchronously.
Definition DatabaseWorker.h:22
Represents a FIX Execution Report (35=8) message.
Definition ExecutionReport.h:14
Definition MarketDataPublisher.h:12
A thread-safe, database-aware generator for unique order IDs.
Definition OrderIDGenerator.h:15
Encapsulates all components needed to process commands for a symbol.
Definition Partition.h:32
High-level manager for partitions and command dispatch.
Definition TradingCore.h:27
void stopAcceptingCommands()
Definition TradingCore.cpp:65
ExecutionReportCallback mExecutionReportCallback
Definition TradingCore.h:89
std::unique_ptr< OrderIDGenerator > mOrderIDGenerator
Definition TradingCore.h:86
std::unique_ptr< Partition > mPartitions[static_cast< int >(common::Instrument::COUNT)]
Definition TradingCore.h:88
std::function< void(const fix::ExecutionReport &)> ExecutionReportCallback
Definition TradingCore.h:29
std::optional< common::Instrument > findPartitionForOrder(common::OrderID orderId) const
Definition TradingCore.cpp:200
Partition * getPartition(common::Instrument instrument) const
Definition TradingCore.cpp:147
void waitAllQueuesIdle() const
Definition TradingCore.cpp:72
std::optional< common::Order > getOrderByClientOrderId(const std::string &clientOrderId) const
Definition TradingCore.cpp:226
void subscribeToMarketData(common::Symbol symbol, common::SessionID sessionId)
Definition TradingCore.cpp:162
void unsubscribeFromMarketData(common::Symbol symbol, common::SessionID sessionId)
Definition TradingCore.cpp:172
std::optional< common::Order > getOrder(common::OrderID orderId) const
Definition TradingCore.cpp:211
TradingCore()
Definition TradingCore.cpp:17
MarketDataPublisher & getMarketDataPublisher()
Definition TradingCore.cpp:189
void subscribeToExecutions(ExecutionReportCallback callback)
Definition TradingCore.cpp:157
virtual void submitCommand(std::unique_ptr< Command > command) const
Definition TradingCore.cpp:88
std::unique_ptr< TradeIDGenerator > mTradeIDGenerator
Definition TradingCore.h:85
void stop()
Definition TradingCore.cpp:58
void start()
Definition TradingCore.cpp:48
void setPartition(common::Instrument instrument, std::unique_ptr< Partition > partition)
Definition TradingCore.cpp:240
data::DatabaseWorker * mDatabaseWorker
Definition TradingCore.h:83
static TradingCore & getInstance()
Definition TradingCore.cpp:194
const ExecutionReportCallback & getExecutionReportCallback() const
Definition TradingCore.cpp:184
virtual ~TradingCore()
Definition TradingCore.cpp:42
std::unique_ptr< data::DatabaseWorker > mOwnedDatabaseWorker
Definition TradingCore.h:84
OrderIDGenerator * getOrderIDGenerator()
Definition TradingCore.cpp:152
void initPartitions()
Definition TradingCore.cpp:137
MarketDataPublisher mMarketDataPublisher
Definition TradingCore.h:90
Instrument
Represents the financial instruments available for trading.
Definition Instrument.h:17
@ COUNT
Helper to get the number of instruments.
uint64_t OrderID
A type alias for unique order identifiers.
Definition Types.h:134
uint64_t SessionID
A type alias for session identifiers.
Definition Types.h:142
Definition CancelOrder.h:10