8 #ifndef ATS_ORDERMANAGER_H
9 #define ATS_ORDERMANAGER_H
17 #include <unordered_map>
156 std::unordered_map<long,Order> mSentOrders;
157 std::queue<std::pair<long,std::string>> mCancelOrders;
158 std::queue<Order> mOrders;
159 std::queue<Order> mPendingOrders;
160 std::thread mOrderManagerThread;
161 std::mutex mOrderCountMutex;
162 std::mutex mOrderFetchMutex;
165 std::set<std::string> mSymbols;
166 double mLastOrderQty;
254 void cancelOrder(
long orderId, std::string symbol);
A class for managing orders.
Definition: OrderManager.h:154
void start()
Start the order manager thread.
Definition: OrderManager.cpp:70
Order & getOldestOrder()
Get the oldest order from the order queue.
Definition: OrderManager.cpp:156
std::pair< long, std::string > getCancelOrder()
Get an order to cancel.
Definition: OrderManager.cpp:170
bool hasOrders()
Check if there are orders to be sent.
Definition: OrderManager.cpp:148
~OrderManager()
Destroy the OrderManager object.
Definition: OrderManager.cpp:66
double getLastOrderQty()
Get last filled order quantity.
Definition: OrderManager.cpp:91
void processOrder(Order order)
Process a single order.
Definition: OrderManager.cpp:128
std::vector< std::string > getSymbols()
Get symbols currently ordered.
Definition: OrderManager.cpp:176
void stop()
Stop the order manager thread.
Definition: OrderManager.cpp:81
Order getOrderById(long ID)
Returns order by ID.
Definition: OrderManager.cpp:164
void cancelAllOrders()
Cancel all orders.
Definition: OrderManager.cpp:117
long createOrder(OrderType type, Side side, std::string symbol, double quantity, double price=0)
Create a new order and add it to the queue.
Definition: OrderManager.cpp:99
void cancelOrder(long orderId, std::string symbol)
Cancel an order.
Definition: OrderManager.cpp:113
void setLastOrderQty(double qty)
Sets last filled order quantity.
Definition: OrderManager.cpp:95
bool isRunning()
Check if the order manager is running.
Definition: OrderManager.cpp:87
void updateOpenOrders(std::unordered_map< long, Order > openOrders)
Update open orders.
Definition: OrderManager.cpp:123
void run()
Run the order manager loop.
Definition: OrderManager.cpp:77
bool hasCancelOrders()
Check if there are orders to be cancelled.
Definition: OrderManager.cpp:152
OrderManager()
Construct a new OrderManager object.
Definition: OrderManager.cpp:55
void processOrders()
Process all orders in the queue.
Definition: OrderManager.cpp:134
Namespace for the algorithmic trading system.
Definition: BinanceExchangeManager.cpp:8
OrderType stringToOrderType(const std::string &s)
Converts a string to an OrderType enum value.
Definition: OrderManager.cpp:30
Side stringToSide(const std::string &s)
Converts a string to a Side enum value.
Definition: OrderManager.cpp:48
std::string SideToString(Side s)
Converts Side enum value to string.
Definition: OrderManager.cpp:37
Side
Enum for buy/sell side of an order.
Definition: OrderManager.h:54
@ SCOUNT
Definition: OrderManager.h:57
@ BUY
Definition: OrderManager.h:55
@ SELL
Definition: OrderManager.h:56
std::string OrderTypeToString(OrderType t)
Converts OrderType enum value to string.
Definition: OrderManager.cpp:9
OrderType
Enum for different types of orders.
Definition: OrderManager.h:25
@ MARKET
Definition: OrderManager.h:27
@ LIMIT_MAKER
Definition: OrderManager.h:32
@ OTCOUNT
Definition: OrderManager.h:33
@ TAKE_PROFIT
Definition: OrderManager.h:30
@ STOP_LOSS
Definition: OrderManager.h:28
@ LIMIT
Definition: OrderManager.h:26
@ STOP_LOSS_LIMIT
Definition: OrderManager.h:29
@ TAKE_PROFIT_LIMIT
Definition: OrderManager.h:31
The OrderBook struct represents the orderbook.
Definition: OrderManager.h:131
OrderBook(std::vector< double > bid={}, std::vector< double > bidVol={}, std::vector< double > ask={}, std::vector< double > askVol={})
The OrderBook constructor.
Definition: OrderManager.h:143
std::vector< double > ask
Definition: OrderManager.h:134
std::vector< double > askVol
Definition: OrderManager.h:135
std::vector< double > bid
Definition: OrderManager.h:132
std::vector< double > bidVol
Definition: OrderManager.h:133
The Order struct represents an order to be placed on an exchange.
Definition: OrderManager.h:78
Order(long id, OrderType type, Side side, std::string symbol, double quantity, double price, double stopPrice=0., double icebergQty=0., long recvWindow=0, long emsId=0, std::string timeInForce="", time_t time=0)
The Order constructor.
Definition: OrderManager.h:110
long recvWindow
Definition: OrderManager.h:88
std::string timeInForce
Definition: OrderManager.h:90
long id
Definition: OrderManager.h:80
std::string symbol
Definition: OrderManager.h:81
double price
Definition: OrderManager.h:83
long emsId
Definition: OrderManager.h:89
Side side
Definition: OrderManager.h:85
double quantity
Definition: OrderManager.h:82
time_t time
Definition: OrderManager.h:91
double icebergQty
Definition: OrderManager.h:87
OrderType type
Definition: OrderManager.h:84
double stopPrice
Definition: OrderManager.h:86