forked from Chudleyj/AlgoBot
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTechnicalAnalysis.h
120 lines (89 loc) · 3.96 KB
/
TechnicalAnalysis.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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
#ifndef TechnicalAnalysis_h
#define TechnicalAnalysis_h
#include <vector>
#include <string>
#include <cmath> //abs val
#include <iostream>
#include <assert.h>
#include <thread>
#include <mutex>
#include <boost/optional.hpp>
#include "JSONdata.h"
//TODO: add more Technical Indicators
/* This class stores the results of calculations done on the data from JSONdata
objects (mainly using closing price, but more to come). It stores these
results into the TechnicalIndicators struct. The calc functions each
calculate a different vector that is inside TechnicalIndicators struct. */
class TechnicalAnalysis
{
//Holds all TI values in vectors
struct TechnicalIndicators
{
std::vector<double> RSI, stochRSI,fiftySMA,hundredSMA,hundFifSMA,twoHundSMA,
fiftyEMA, hundredEMA, hundFifEMA, twoHundEMA, stdDeviation, MACD, MACD_Signal,
MACD_EMA;
}indicators;
public:
void accessSignal(boost::optional<std::vector<double>&> copy = boost::none,
boost::optional<double> temp = boost::none);
void accessMACD(boost::optional<std::vector<double>&> copy = boost::none,
boost::optional<double> temp = boost::none);
void accessRSI(boost::optional<std::vector<double>&> copy = boost::none,
boost::optional<double> temp = boost::none);
void accessStoch(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void accessFifSMA(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void accessHundSMA(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void accessHundFifSMA(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void accessTwoHundSMA(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void accessFifEMA(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void accessHundEMA(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void accessHundFifEMA(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void accessTwoHundEMA(boost::optional<std::vector<double>&> EMPTY_VEC = boost::none,
boost::optional<double> temp = boost::none);
void getMACD(std::vector<double> &) const;
void getSignal(std::vector<double> &) const;
void getRSI(std::vector<double> &) const;
void getStoch(std::vector<double> &) const;
void getFifSMA(std::vector<double> &) const;
void getHundSMA(std::vector<double> &) const;
void getHundFifSMA(std::vector<double> &) const;
void getTwoHundSMA(std::vector<double> &) const;
void getFifEMA(std::vector<double> &) const;
void getHundEMA(std::vector<double> &) const;
void getHundFifEMA(std::vector<double> &) const;
void getTwoHundEMA(std::vector<double> &) const;
void setFifSMA(const double &);
void setHundSMA(const double &);
void setHundFifSMA(const double &);
void setTwoHundSMA(const double &);
void setFifEMA(const double &);
void setHundEMA(const double &);
void setHundFifEMA(const double &);
void setTwoHundEMA(const double &);
void setRSI(const double &);
void setStoch(const double &);
void setMACD(const double &);
void setSignal(const double &);
//Functions below calculate values of TechnicalIndicators and stores them into TI struct
void calcFiftySMA(JSONdata &);
void calcHundredSMA(JSONdata &);
void calcHundFiftySMA(JSONdata &);
void calcTwoHundSMA(JSONdata &);
void calcFiftyEMA(JSONdata &);
void calcHundredEMA(JSONdata &);
void calcHundFiftyEMA(JSONdata &);
void calcTwoHundEMA(JSONdata &);
void calcRSI(JSONdata &);
void calcStochRSI();
void calcMACD(JSONdata &);
void clearTAobj();
};
#endif