forked from EA31337/EA31337-classes
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Math.mqh
99 lines (84 loc) · 2.59 KB
/
Math.mqh
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
//+------------------------------------------------------------------+
//| EA31337 - multi-strategy advanced trading robot. |
//| Copyright 2016-2020, 31337 Investments 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/>.
*/
// Prevents processing this includes file for the second time.
#ifndef MATH_MQH
#define MATH_MQH
// Includes.
#include "DictStruct.mqh"
#define NEAR_ZERO 0.00001
// Enums.
// Math conditions.
enum ENUM_MATH_CONDITION {
MATH_COND_EQ = 1, // Argument values are equal.
MATH_COND_GT = 2, // First value is greater than second.
MATH_COND_LE = 3, // First value is lesser than second.
FINAL_MATH_ENTRY = 4
};
// Struct.
struct MathEquation {
ENUM_MATH_CONDITION op;
MqlParam args[2];
};
// Includes standard C++ library for non-MQL code.
#ifndef __MQLBUILD__
#include <cfloat>
#include <cmath>
using namespace std;
#endif
/**
* Class to provide math related methods.
*/
class Math {
protected:
//DictStruct<short, MathEquation> *eq;
public:
Math(MqlParam &_arg1, MqlParam &_arg2) {
}
/* Conditions */
/**
* Checks for math condition.
*
* @param ENUM_MATH_CONDITION _cond
* Math condition.
* @param MqlParam[] _args
* Condition arguments.
* @return
* Returns true when the condition is met.
*/
bool Condition(ENUM_MATH_CONDITION _cond, MqlParam &_args[]) {
switch (_cond) {
case MATH_COND_EQ:
// @todo
return false;
case MATH_COND_GT:
// @todo
return false;
case MATH_COND_LE:
// @todo
return false;
default:
//logger.Error(StringFormat("Invalid math condition: %s!", EnumToString(_cond), __FUNCTION_LINE__));
return false;
}
}
bool Condition(ENUM_MATH_CONDITION _cond) {
MqlParam _args[] = {};
return Math::Condition(_cond, _args);
}
};
#endif // MATH_MQH