| //+------------------------------------------------------------------+
|
| //| Global.mqh |
|
| //| Copyright 2025, Niquel Mendoza. |
|
| //| https://www.mql5.com/es/users/nique_372 |
|
| //+------------------------------------------------------------------+
|
| #property copyright "Copyright 2025, Niquel Mendoza."
|
| #property link "https://www.mql5.com/es/users/nique_372"
|
| #property strict
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| /*
|
| Hola, este es el achivo Global.mqh, recordemos que aqui ubicaremos todo el codigo que deseamos que se ejecute PRIMERO
|
| ante todo... (Incluso antes de OnInit)..
|
| Para esta ocasion como trabajremos con la libreria ict necesitamos hacer 2 cosas
|
| 1. Definir una instancia de CNewBarManager como un define (esto para que las sesiones etc puedan funcionar).
|
| 2. Inicar la libreria ict (ICTGen_Init) y setear el BarMananger que usara la libreria.
|
| */
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| #ifndef GLOBAL_MQH
|
| #define GLOBAL_MQH
|
|
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| //--- Empezaremos incluyendo el BarManager
|
| #include <TSN\\MQLArticles\\Utils\\TFManager.mqh>
|
|
|
| //--- Tambien incluiremos otra utilidad, esta sirve para eliminar los punteros (que creemos) automaticamente..
|
| #include <TSN\\Std\\Memory.mqh>
|
|
|
| //--- Tambien incluiremos account status
|
| #include <TSN\\MQLArticles\\RM\\AccountStatus.mqh>
|
|
|
|
|
|
|
| //--- Instanciamoos globalmente el bar manager como g_new_bar_manager
|
| TSN::CNewBarManager g_new_bar_manager;
|
|
|
| //--- Definamos el define "TSN_ICTLIBRARY_INSTANCE_BAR_MANAGER" como valor g_new_bar_manager
|
| // Siendo que en la libreira ICT cualquier definidcion de "TSN_ICTLIBRARY_INSTANCE_BAR_MANAGER" se remplazara con
|
| // g_new_bar_manager
|
| #define TSN_ICTLIBRARY_INSTANCE_BAR_MANAGER g_new_bar_manager
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| // Incluiremos todo lo necesario de la libreria ict.. en este ocasion solo los conceptos generales
|
| #include <TSN\\ICTLibrary\\ICTConcepts.mqh>
|
|
|
| //+------------------------------------------------------------------+
|
| //| |
|
| //+------------------------------------------------------------------+
|
| // Definamos la clase global esta sera muy simple, como miembro tendra una variable booleana "init"
|
| // Esta guardara true si la clase ya se inicio y false si no lo hizo
|
| // Esta variable es importante para evitar que se pueda inicar dos veces o mas.. cosa que no queremos.
|
| class CGlobalInit
|
| {
|
| private:
|
| static bool init;
|
|
|
| public:
|
| //--- Incializacion global
|
| CGlobalInit(void)
|
| {
|
| if(init) // Verificamos que sea FALSE
|
| return;
|
|
|
| //--- Llamamos una unica vez a la funcion de incilzaicion
|
| ICTGen_Init(THE_BOT_PLACE_USER_ID);
|
|
|
| //--- Seteasmos el bar manager
|
| ICTGen_BarManagerSet(&g_new_bar_manager); // Le damos a la libreira ICT el manager
|
| CBasicEvents::Init(); // para activar flags etc
|
|
|
| //--- Para los eventos globales deberemos de limpiarlos tambien
|
| // Asi que agregaremos sus funciones Deinit en el cleaner
|
| CAutoCleaner::AddFunction(CBasicEvents::Deinit); // Agregaremos la funcion Deinit
|
| CAutoCleaner::AddFunction(TSN::CAccountStatus_Deinit); // Agregamos deinit para account staus la idea es que tamibn se deinicialize
|
| CAutoCleaner::AddFunction(ICTGen_OnDeinitEvent); // Limpieza de la libreria ict
|
| // Aqui tambien se puede agregar funciones extra en caso se usen otros completemenso de la libreria
|
| // COmo AtrManager (Deinit) o ICTSymbolManager (Deinit), en este caso no usaremos ninguno dado que no usaremos dichos modulos.
|
|
|
| //--- Marcamos en true
|
| init = true;
|
| }
|
| //---
|
| ~CGlobalInit(void) {}
|
| };
|
| //+------------------------------------------------------------------+
|
| bool CGlobalInit::init = false; // Inicialmente FALSE
|
|
|
| //+------------------------------------------------------------------+
|
| CGlobalInit g_global_instance; // Instancia global
|
| //+------------------------------------------------------------------+
|
| #endif // GLOBAL_MQH
|
| // Ahora, para evitar la incluision doble de este archivo defini un GUARD
|
| // #ifndef - #define - #endif
|
|
|
| //+------------------------------------------------------------------+
|