2026-10-23 21:51:38 -05:00 | | | //+------------------------------------------------------------------+
|
| | | //| 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..
|
2026-10-25 11:24:06 -05:00 | | | #include <TSN\\Std\\Memory.mqh>
|
2026-10-23 21:51:38 -05:00 | | |
|
| | | //--- 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
|
| | |
|
| | | //+------------------------------------------------------------------+
|