7
7
#pragma once
8
8
#endif
9
9
10
+ #ifdef INDICATOR_LEGACY_VERSION_MT4
11
+ #define INDICATOR_LEGACY_VERSION_DEFINED
12
+ #endif
13
+
14
+ #ifdef INDICATOR_LEGACY_VERSION_MT5
15
+ #define INDICATOR_LEGACY_VERSION_DEFINED
16
+ #endif
17
+
18
+ #ifndef INDICATOR_LEGACY_VERSION_DEFINED
19
+ #define INDICATOR_LEGACY_VERSION_MT5
20
+ #define INDICATOR_LEGACY_VERSION_DEFINED
21
+ #endif
22
+
10
23
#ifdef __MQL4__
11
24
12
25
#include < EA31337-classes/IndicatorBase.h>
13
26
#include < EA31337-classes/Std.h>
14
27
#include < EA31337-classes/Storage/ObjectsCache.h>
15
28
#include < EA31337-classes/Util.h>
16
29
30
+ #ifdef INDICATOR_LEGACY_VERSION_MT5
31
+
17
32
/* *
18
33
* Replacement for future OnCalculate(). Currently not used, but could be handy in the future.
19
34
*/
@@ -338,8 +353,30 @@ DEFINE_LEGACY_INDICATOR_2(iAD, iAD, string, symbol, int, period);
338
353
// int iATR(string symbol, ENUM_TIMEFRAMES period, int ma_period);
339
354
DEFINE_LEGACY_INDICATOR_3 (iATR, iATR, string, symbol, int , period, int , ma_period);
340
355
356
+ // int iRSI(string symbol, ENUM_TIMEFRAMES period, int ma_period, int applied_price);
357
+ #define T1 string
358
+ #define N1 symbol
359
+ #define T2 int
360
+ #define N2 period
361
+ #define T3 int
362
+ #define N3 ma_period
363
+ #define T4 int
364
+ #define N4 applied_price
365
+ DEFINE_LEGACY_INDICATOR_4 (iRSI, iRSI)
366
+ #undef T1
367
+ #undef N1
368
+ #undef T2
369
+ #undef N2
370
+ #undef T3
371
+ #undef N3
372
+ #undef T4
373
+ #undef N4
374
+ #undef T5
375
+ #undef N5
376
+ #undef T6
377
+ #undef N6
378
+
341
379
// int iMA(string symbol, ENUM_TIMEFRAMES period, int ma_period, int ma_shift, ENUM_MA_METHOD ma_method,
342
- // ENUM_APPLIED_PRICE applied_price);
343
380
#define T1 string
344
381
#define N1 symbol
345
382
#define T2 int
@@ -366,4 +403,82 @@ DEFINE_LEGACY_INDICATOR_6(iMA, iMA)
366
403
#undef T6
367
404
#undef N6
368
405
369
- #endif
406
+ #endif // INDICATOR_LEGACY_VERSION_MT5
407
+ #endif // __MQL4__
408
+
409
+ #ifdef __MQL5__
410
+ #ifdef INDICATOR_LEGACY_VERSION_MT4
411
+
412
+ /* *
413
+ * Replacement for future StringConcatenate().
414
+ */
415
+ #define StringConcatenate StringConcatenateMT4
416
+
417
+ /* *
418
+ * MQL5 wrapper of MQL4's StringConcatenate().
419
+ */
420
+ template <typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I,
421
+ typename J, typename K, typename L, typename M>
422
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e, F _f, G _g, H _h, I _i, J _j, K _k, L _l,
423
+ M _m) {
424
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e + (string)_f + (string)_g + (string)_h +
425
+ (string)_i + (string)_j + (string)_k + (string)_l + (string)_m;
426
+ }
427
+ template <typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I,
428
+ typename J, typename K, typename L>
429
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e, F _f, G _g, H _h, I _i, J _j, K _k, L _l) {
430
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e + (string)_f + (string)_g + (string)_h +
431
+ (string)_i + (string)_j + (string)_k + (string)_l;
432
+ }
433
+ template <typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I,
434
+ typename J, typename K>
435
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e, F _f, G _g, H _h, I _i, J _j, K _k) {
436
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e + (string)_f + (string)_g + (string)_h +
437
+ (string)_i + (string)_j + (string)_k;
438
+ }
439
+ template <typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I,
440
+ typename J>
441
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e, F _f, G _g, H _h, I _i, J _j) {
442
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e + (string)_f + (string)_g + (string)_h +
443
+ (string)_i + (string)_j;
444
+ }
445
+ template <typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H, typename I>
446
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e, F _f, G _g, H _h, I _i) {
447
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e + (string)_f + (string)_g + (string)_h +
448
+ (string)_i;
449
+ }
450
+ template <typename A, typename B, typename C, typename D, typename E, typename F, typename G, typename H>
451
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e, F _f, G _g, H _h) {
452
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e + (string)_f + (string)_g + (string)_h;
453
+ }
454
+ template <typename A, typename B, typename C, typename D, typename E, typename F, typename G>
455
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e, F _f, G _g) {
456
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e + (string)_f + (string)_g;
457
+ }
458
+ template <typename A, typename B, typename C, typename D, typename E, typename F>
459
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e, F _f) {
460
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e + (string)_f;
461
+ }
462
+ template <typename A, typename B, typename C, typename D, typename E>
463
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d, E _e) {
464
+ return (string)_a + (string)_b + (string)_c + (string)_d + (string)_e;
465
+ }
466
+ template <typename A, typename B, typename C, typename D>
467
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c, D _d) {
468
+ return (string)_a + (string)_b + (string)_c + (string)_d;
469
+ }
470
+ template <typename A, typename B, typename C>
471
+ string StringConcatenateMT4 (string& _result, A _a, B _b, C _c) {
472
+ return (string)_a + (string)_b + (string)_c;
473
+ }
474
+ template <typename A, typename B>
475
+ string StringConcatenateMT4 (string& _result, A _a, B _b) {
476
+ return (string)_a + (string)_b;
477
+ }
478
+ template <typename A>
479
+ string StringConcatenateMT4 (string& _result, A _a) {
480
+ return (string)_a;
481
+ }
482
+
483
+ #endif // INDICATOR_LEGACY_VERSION_MT4
484
+ #endif // __MQL5__
0 commit comments