-
-
Notifications
You must be signed in to change notification settings - Fork 102
/
Copy pathChart.struct.h
116 lines (109 loc) · 3.64 KB
/
Chart.struct.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
//+------------------------------------------------------------------+
//| EA31337 framework |
//| Copyright 2016-2021, EA31337 Ltd |
//| https://github.com/EA31337 |
//+------------------------------------------------------------------+
/*
* This file is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/**
* @file
* Includes Chart's structs.
*/
#ifndef __MQL__
// Allows the preprocessor to include a header file when it is needed.
#pragma once
#endif
// Forward class declaration.
class Class;
struct ChartTf;
// Includes.
#include "Array.mqh"
#include "Bar.struct.h"
#include "Chart.define.h"
#include "Chart.enum.h"
#include "Chart.struct.static.h"
#include "Chart.struct.tf.h"
#include "Serializer/Serializer.h"
#include "Serializer/SerializerNode.enum.h"
#include "Terminal.define.h"
/* Defines struct to store bar entries. */
struct ChartEntry {
BarEntry bar;
// Constructors.
ChartEntry() {}
ChartEntry(const BarEntry& _bar) { SetBar(_bar); }
ChartEntry(const ChartEntry& _r) { SetBar(_r.bar); }
// Getters.
BarEntry GetBar() { return bar; }
string ToCSV() { return StringFormat("%s", bar.ToCSV()); }
// Setters.
void SetBar(const BarEntry& _bar) { bar = _bar; }
// Serializers.
void SerializeStub(int _n1 = 1, int _n2 = 1, int _n3 = 1, int _n4 = 1, int _n5 = 1) {}
SerializerNodeType Serialize(Serializer& _s);
};
/* Defines struct for chart parameters. */
struct ChartParams {
long id;
string symbol;
ChartTf tf;
// Copy constructor.
ChartParams(ChartParams& _cparams) : symbol(_cparams.symbol), tf(_cparams.tf) {}
// Constructors.
ChartParams(ENUM_TIMEFRAMES _tf = PERIOD_CURRENT, string _symbol = NULL, long _id = 0)
: id(_id), symbol(_symbol), tf(_tf){};
ChartParams(ENUM_TIMEFRAMES_INDEX _tfi, string _symbol = NULL, long _id = 0) : id(_id), symbol(_symbol), tf(_tfi){};
// Getters.
template <typename T>
T Get(ENUM_CHART_PARAM _param) {
switch (_param) {
case CHART_PARAM_ID:
return (T)id;
case CHART_PARAM_SYMBOL:
return (T)symbol;
case CHART_PARAM_TF:
return (T)tf.GetTf();
case CHART_PARAM_TFI:
return (T)tf.GetIndex();
}
SetUserError(ERR_INVALID_PARAMETER);
return (T)WRONG_VALUE;
}
ChartTf GetChartTf() const { return tf; }
// ENUM_TIMEFRAMES GetTf() const { return tf.GetTf(); }
// ENUM_TIMEFRAMES_INDEX GetTfIndex() const { return tf.GetIndex(); }
// Setters.
template <typename T>
void Set(ENUM_CHART_PARAM _param, T _value) {
switch (_param) {
case CHART_PARAM_ID:
id = (long)_value;
return;
case CHART_PARAM_SYMBOL:
symbol = (string)_value;
return;
case CHART_PARAM_TF:
tf.SetTf((ENUM_TIMEFRAMES)_value);
return;
case CHART_PARAM_TFI:
tf.SetIndex((ENUM_TIMEFRAMES_INDEX)_value);
return;
}
SetUserError(ERR_INVALID_PARAMETER);
}
// Serializers.
SerializerNodeType Serialize(Serializer& s);
} chart_params_defaults(PERIOD_CURRENT, _Symbol);