-
Notifications
You must be signed in to change notification settings - Fork 6
/
MarketTick.h
64 lines (57 loc) · 1.53 KB
/
MarketTick.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#pragma once
#include <vector>
#include <boost/function.hpp>
struct MarketData;
class BaseMarketReplayer;
struct Instrument;
struct MarketTick
{
enum TickTypes
{
DATA,
TIMER,
ORDER,
START_TRADING,
STOP_TRADING,
CLOSE_POSITIONS,
};
enum ConnectionTypes
{
NO_CHANGE,
CONNECTED,
DISCONNECTED,
};
// E' comodo impostare un puntatore al replayer, in modo che dopo aver consumato un tick dalla priority queue
// si possa chiamare subito il replayer per ottenere un nuovo tick
BaseMarketReplayer* replayer;
enum TickTypes type;
Instrument* instrument;
// Nel caso degli start/stop ticks, il timestamp puo' essere in data 1400-Jan-01 quando c'e' solo l'ora senza la data
// in quel caso bisogna prendere la data corrente da MarketReplayerManager::getCurrentTime()
double timestamp;
unsigned long order_if_same_timestamp;
std::string timestamp_to_be_parsed; // usato dagli start/stop ticks
std::vector<double> bid_size;
std::vector<double> bid_price;
std::vector<double> ask_price;
std::vector<double> ask_size;
double last_price;
double volume;
double delta_volume;
double imbalance;
double auction_price;
double open_price;
double close_price;
bool shortable;
enum ConnectionTypes connection;
// Questo serve per il tick di tipo TIMER
boost::function<void(void)> handler;
// Questo serve per il tick di tipo ORDER
long order_id;
explicit MarketTick(BaseMarketReplayer* replayer_);
int getBookDepth() const { return book_depth; }
void setBookDepth(int _book_depth);
bool readNextTick();
private:
int book_depth;
};