trader  v0.1a
A framework to build trading applications
bittrexconnection.h
1 // <copyright file="bittrexconnection.h" company="FinSec Systems">
3 // Copyright (c) 2018 finsec.systems. All rights reserved.
4 // </copyright>
5 // <author>Viknash</author>
6 // <date>12/5/2018</date>
7 // <summary>Declares the API class</summary>
9 
10 #pragma once
11 
12 #include "api.h"
13 #include "app.h"
14 #include "bittrexapi.h"
15 #include "bittrexdatabase.h"
16 #include "db.h"
17 #include "interface.h"
18 #include "interfacehelper.h"
19 #include "bittrex.h"
20 
21 namespace trader
22 {
23 
26  {
27  public:
29 
35  void SecurityListRequest(Poco::AutoPtr< Interface::SecurityListRequestData > securityListRequestData) override;
36 
63  void MarketDataRequest(Poco::AutoPtr< Interface::MarketDataRequestData > marketDataRequestData) override;
64 
93  void NewOrderSingle(Poco::AutoPtr< Interface::NewOrderSingleData > newOrderSingleData) override;
94 
100  void OrderCancelRequest(Poco::AutoPtr< Interface::OrderCancelRequestData > orderCancelRequestData) override;
101 
108  Poco::AutoPtr< Interface::TradeCaptureReportRequestData > tradeCaptureReportRequestData) override;
109 
115  void SetConnectionId(const std::string &_connectionId) { connectionId = _connectionId; }
116 
122  void SetExchange(Bittrex *_exchange) { exchange = _exchange; }
123 
125  void RunMore();
126 
127  Bittrex *exchange;
128 
129  std::string connectionId;
130 
133  {
136  : lastCachedId(0)
137  {
138  }
140  typedef std::unordered_map< Poco::Int32, BittrexApi::History::DataObject::ResultArray > MarketDataMap;
141  MarketDataMap marketDataMap;
142  Poco::Int32 lastCachedId;
143  };
144 
146  typedef std::unordered_map< std::string, BittrexMarketData > SymIDMap;
148 
151  {
152  Poco::AutoPtr< Interface::MarketDataRequestData > marketRequestData;
153 
155  typedef std::unordered_map< std::string, Poco::Int32 > LastCacheIdMap;
156  LastCacheIdMap lastCacheIdMap;
157  };
158 
160  typedef std::unordered_map< std::string, MarketDataRequestRetrievalData > MarketDataUpdateMap;
161  MarketDataUpdateMap marketDataUpdateMap;
162  };
163 
164  class BittrexConnection : public Interface::CallConnection, public Poco::Runnable
165  {
166  public:
167  BittrexConnection(const std::string &_connectionid, Bittrex *_exchange)
168  : processingConnection(10)
169  , stop(false)
170  {
171  processingConnection.SetConnectionId(_connectionid);
172  processingConnection.SetExchange(_exchange);
173  }
174 
175  void ProcessMessage(Poco::AutoPtr< Interface::IMessageData > _messageData) override
176  {
177  processingConnection.ProcessMessage(_messageData);
178  }
179 
180  void SetReceivingConnection(Poco::AutoPtr< Interface::Connection > _connection) override
181  {
182  processingConnection.SetReceivingConnection(_connection);
183  }
184 
185  void run() override;
186 
187  void DoOperation(Poco::Int32 operation) override;
188 
189  BufferedConnection< BittrexProcessingConnection > processingConnection;
190 
191  bool stop;
192  static AutoPtr< Interface::Connection > getConnection(const std::string &connectionId);
193  };
194 
195 } // namespace trader
A bittrex.
Definition: bittrex.h:38
SymIDMap marketToTradeHistoryMap
The market to trade history map.
Definition: bittrexconnection.h:147
Poco::AutoPtr< Interface::MarketDataRequestData > marketRequestData
Information describing the market request.
Definition: bittrexconnection.h:152
void SecurityListRequest(Poco::AutoPtr< Interface::SecurityListRequestData > securityListRequestData) override
[Client-Side] Get a list of securities that can be traded on the exchange.
Definition: bittrexconnection.cpp:83
std::unordered_map< Poco::Int32, BittrexApi::History::DataObject::ResultArray > MarketDataMap
Defines an alias representing the market data map.
Definition: bittrexconnection.h:140
LastCacheIdMap lastCacheIdMap
The last cache identifier map.
Definition: bittrexconnection.h:156
MarketDataUpdateMap marketDataUpdateMap
The market data update map.
Definition: bittrexconnection.h:161
void SetConnectionId(const std::string &_connectionId)
Sets connection identifier.
Definition: bittrexconnection.h:115
In-memory cache of marketdata.
Definition: bittrexconnection.h:132
MarketDataMap marketDataMap
The market data map.
Definition: bittrexconnection.h:141
std::unordered_map< std::string, Poco::Int32 > LastCacheIdMap
The id of the last marketData entry that was sent to the requester.
Definition: bittrexconnection.h:155
void RunMore()
Executes the more operation.
Definition: bittrexconnection.cpp:70
void MarketDataRequest(Poco::AutoPtr< Interface::MarketDataRequestData > marketDataRequestData) override
[Client-Side] Subscribes the current session to a Market Data - Snapshot/Full Refresh followed by zer...
Definition: bittrexconnection.cpp:139
void OrderCancelRequest(Poco::AutoPtr< Interface::OrderCancelRequestData > orderCancelRequestData) override
TODO: Documentation.
Definition: bittrexconnection.cpp:385
Poco::Int32 lastCachedId
Identifier for the last cached.
Definition: bittrexconnection.h:142
void NewOrderSingle(Poco::AutoPtr< Interface::NewOrderSingleData > newOrderSingleData) override
[Client-Side] Submit a new order to exchange
Definition: bittrexconnection.cpp:366
A market data request retrieval data.
Definition: bittrexconnection.h:150
std::unordered_map< std::string, BittrexMarketData > SymIDMap
Defines an alias representing the symbol identifier map.
Definition: bittrexconnection.h:146
A bittrex processing connection.
Definition: bittrexconnection.h:25
Definition: bittrexconnection.h:164
void SetExchange(Bittrex *_exchange)
Sets an exchange.
Definition: bittrexconnection.h:122
BittrexMarketData()
Initializes a new instance of the bittrexconnection class.
Definition: bittrexconnection.h:135
Definition: app.h:7
Definition: interface.h:18267
std::unordered_map< std::string, MarketDataRequestRetrievalData > MarketDataUpdateMap
Defines an alias representing the market data update map.
Definition: bittrexconnection.h:160
void TradeCaptureReportRequest(Poco::AutoPtr< Interface::TradeCaptureReportRequestData > tradeCaptureReportRequestData) override
TODO: Documentation.
Definition: bittrexconnection.cpp:401