forked from nique_372/MQLArticles
135 lines
4.1 KiB
MQL4
135 lines
4.1 KiB
MQL4
//+------------------------------------------------------------------+
| |
//| 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
| |
*/
| |
| |
namespace TSN
| |
{
| |
//+------------------------------------------------------------------+
| |
//| |
| |
//+------------------------------------------------------------------+
| |
#define MQLARTICLES_TFI_BUCKETS_SIZE (8ULL)
| |
#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] =
| |
{
| |
2ULL,
| |
1ULL,
| |
7ULL,
| |
17ULL,
| |
0ULL,
| |
2ULL,
| |
0ULL,
| |
1ULL
| |
};
| |
| |
//+------------------------------------------------------------------+
| |
//-- Ahora empezamos con otras tablas
| |
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
| |
};
| |
| |
//--- Ahora namigs
| |
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..
| |
};
| |
| |
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
| |
};
| |
}
| |
//+------------------------------------------------------------------+
| |
#endif // MQLARITCLES_UTILS_TFI_MAIN_MQH
|