2026-07-31 13:06:41 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| Main.mqh |
|
| | | //| Copyright 2026, Niquel Mendoza |
|
| | | //| https://www.mql5.com |
|
| | | //+------------------------------------------------------------------+
|
| | | #property copyright "Copyright 2026, Niquel Mendoza"
|
| | | #property link "https://www.mql5.com"
|
| | | #property strict
|
| | | #ifndef MQLARITCLES_UTILS_TFI_MAIN_MQH
|
| | | #define MQLARITCLES_UTILS_TFI_MAIN_MQH
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | /*
|
| | | La idea con este mqh es poder mapear los valores de enumtimeframe (Que estan dispersos) en una talba
|
| | | de 32 entradas por ejemplo un fast period seconds, o un swith jump table o(1)
|
| | | O un timeframe to string
|
| | | */
|
| | |
|
2026-07-31 13:43:33 -05:00 | | | namespace TSN
|
| | | {
|
2026-07-31 13:06:41 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
2026-07-31 13:43:33 -05:00 | | | #define MQLARTICLES_TFI_BUCKETS_SIZE (8ULL)
|
2026-07-31 13:06:41 -05:00 | | | #define MQLARTICLES_TFI_BUCKETS_SIZE_L (7ULL)
|
| | | #define MQLARTICLES_TFI_FINAL_TSIZE (32ULL)
|
| | | #define MQLARTICLES_TFI_FINAL_TSIZE_L (31ULL)
|
| | |
|
| | | /* Algoritmo completo
|
| | | const int seed_index = int(v & MQLARTICLES_TFI_BUCKETS_SIZE_L);
|
| | | ulong h = ((ulong)v ^ g_mqlarticles_tfi_out_seeds[seed_index]) * 0x9E3779B97F4A7C15;
|
| | | h ^= h >> 32;
|
| | | const int fi = int(h & MQLARTICLES_TFI_FINAL_TSIZE_L);
|
| | | */
|
| | |
|
| | | //--- Tabla de seeds
|
| | | const ulong g_mqlarticles_tfi_out_seeds[MQLARTICLES_TFI_BUCKETS_SIZE] =
|
2026-07-31 13:43:33 -05:00 | | | {
|
| | | 2ULL,
|
| | | 1ULL,
|
| | | 7ULL,
|
| | | 17ULL,
|
| | | 0ULL,
|
| | | 2ULL,
|
| | | 0ULL,
|
| | | 1ULL
|
| | | };
|
2026-07-31 13:06:41 -05:00 | | |
|
| | | //+------------------------------------------------------------------+
|
2026-07-31 13:43:33 -05:00 | | | //-- Ahora empezamos con otras tablas
|
2026-09-12 19:41:52 -05:00 | | | /*
|
2026-07-31 13:43:33 -05:00 | | | const int g_mqlarticles_tfi_period_s[MQLARTICLES_TFI_FINAL_TSIZE] =
|
| | | {
|
| | | 60, // PERIOD_M1
|
| | | 300, // PERIOD_M5
|
| | | 900, // PERIOD_M15
|
| | | 28800, // PERIOD_H8
|
| | | -1, // Invalid
|
| | | 604800, // PERIOD_W1
|
| | | 360, // PERIOD_M6
|
| | | 10800, // PERIOD_H3
|
| | | -1, // Invalid
|
| | | -1, // Invalid
|
| | | 1800, // PERIOD_M30
|
| | | 86400, // PERIOD_D1
|
| | | 14400, // PERIOD_H4
|
| | | 720, // PERIOD_M12
|
| | | -1, // Invalid
|
| | | -1, // Invalid
|
| | | 180, // PERIOD_M3
|
| | | 240, // PERIOD_M4
|
| | | 3600, // PERIOD_H1
|
| | | -1, // Invalid
|
| | | -1, // Invalid
|
| | | 21600, // PERIOD_H6
|
| | | 120, // PERIOD_M2
|
| | | 2592000, // PERIOD_MN1
|
| | | 43200, // PERIOD_H12
|
| | | 1200, // PERIOD_M20
|
| | | 600, // PERIOD_M10
|
| | | 7200, // PERIOD_H2
|
| | | -1, // Invalid
|
| | | -1, // Invalid
|
| | | -1, // Invalid
|
| | | -1 // Invalid
|
2026-09-12 19:41:52 -05:00 | | | };*/
|
2026-07-31 13:06:41 -05:00 | | |
|
| | | //--- Ahora namigs
|
2026-07-31 13:43:33 -05:00 | | | struct MqlArticlesTfiDesc
|
| | | {
|
| | | string full_name; // Nombre compleato eg: PERIOD_M1
|
| | | string short_name_up; // Short name upper M1, etc..
|
| | | string short_name_lo; // Short name lowe m1, etc..
|
| | | string desc; // Short name lowe m1, etc..
|
| | | };
|
2026-07-31 13:06:41 -05:00 | | |
|
2026-07-31 13:43:33 -05:00 | | | const MqlArticlesTfiDesc g_mqlarticles_tfi_desc[MQLARTICLES_TFI_FINAL_TSIZE] =
|
| | | {
|
| | | {"PERIOD_M1", "M1", "m1", ""},
|
| | | {"PERIOD_M5", "M5", "m5", ""},
|
| | | {"PERIOD_M15", "M15", "m15", ""},
|
| | | {"PERIOD_H8", "H8", "h8", ""},
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"PERIOD_W1", "W1", "w1", ""},
|
| | | {"PERIOD_M6", "M6", "m6", ""},
|
| | | {"PERIOD_H3", "H3", "h3", ""},
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"PERIOD_M30", "M30", "m30", ""},
|
| | | {"PERIOD_D1", "D1", "d1", ""},
|
| | | {"PERIOD_H4", "H4", "h4", ""},
|
| | | {"PERIOD_M12", "M12", "m12", ""},
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"PERIOD_M3", "M3", "m3", ""},
|
| | | {"PERIOD_M4", "M4", "m4", ""},
|
| | | {"PERIOD_H1", "H1", "h1", ""},
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"PERIOD_H6", "H6", "h6", ""},
|
| | | {"PERIOD_M2", "M2", "m2", ""},
|
| | | {"PERIOD_MN1", "MN1", "mn1", ""},
|
| | | {"PERIOD_H12", "H12", "h12", ""},
|
| | | {"PERIOD_M20", "M20", "m20", ""},
|
| | | {"PERIOD_M10", "M10", "m10", ""},
|
| | | {"PERIOD_H2", "H2", "h2", ""},
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"", "", "", ""}, // Invalid
|
| | | {"", "", "", ""} // Invalid
|
| | | };
|
2026-09-04 11:32:06 -05:00 | | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | const string g_arr_str_timefrrames_short[22]
|
| | | {
|
2026-09-05 21:12:29 -05:00 | | | "PERIOD_CURRENT",
|
2026-09-04 11:32:06 -05:00 | | | "M1",
|
| | | "M2",
|
| | | "M3",
|
| | | "M4",
|
| | | "M5",
|
| | | "M6",
|
| | | "M10",
|
| | | "M12",
|
| | | "M15",
|
| | | "M20",
|
| | | "M30",
|
| | | "H1",
|
| | | "H2",
|
| | | "H3",
|
| | | "H4",
|
| | | "H6",
|
| | | "H8",
|
| | | "H12",
|
| | | "D1",
|
| | | "W1",
|
| | | "MN1"
|
| | | };
|
| | |
|
| | | //+------------------------------------------------------------------+
|
| | | //| |
|
| | | //+------------------------------------------------------------------+
|
| | | const ENUM_TIMEFRAMES g_arr_strtf_to_timeframes[22]
|
| | | {
|
| | | _Period,
|
| | | PERIOD_M1,
|
| | | PERIOD_M2,
|
| | | PERIOD_M3,
|
| | | PERIOD_M4,
|
| | | PERIOD_M5,
|
| | | PERIOD_M6,
|
| | | PERIOD_M10,
|
| | | PERIOD_M12,
|
| | | PERIOD_M15,
|
| | | PERIOD_M20,
|
| | | PERIOD_M30,
|
| | | PERIOD_H1,
|
| | | PERIOD_H2,
|
| | | PERIOD_H3,
|
| | | PERIOD_H4,
|
| | | PERIOD_H6,
|
| | | PERIOD_H8,
|
| | | PERIOD_H12,
|
| | | PERIOD_D1,
|
| | | PERIOD_W1,
|
| | | PERIOD_MN1
|
| | | };
|
2026-07-31 13:43:33 -05:00 | | | }
|
2026-07-31 13:06:41 -05:00 | | | //+------------------------------------------------------------------+
|
| | | #endif // MQLARITCLES_UTILS_TFI_MAIN_MQH
|