//+------------------------------------------------------------------+ //| 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 //--- Tambien incluiremos otra utilidad, esta sirve para eliminar los punteros (que creemos) automaticamente.. #include //--- Tambien incluiremos account status #include //--- 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 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // 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 //+------------------------------------------------------------------+