2026-03-13 15:20:27 -05:00
//+------------------------------------------------------------------+
2026-03-13 11:50:43 -05:00
//| Main.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
# ifndef AIDATATASKRUNNER_FILEINSTALER_MAIN_MQH
# define AIDATATASKRUNNER_FILEINSTALER_MAIN_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-03-16 21:51:29 -05:00
# include <TSN\\MQLArticles\\Utils\\Basic.mqh>
2026-03-16 17:06:27 -05:00
# include <TSN\\EAFMod\\Language.mqh>
2026-03-13 11:50:43 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
2026-03-20 21:40:41 -05:00
//--- Idiomas
2026-03-13 11:50:43 -05:00
# resource "res\\language_en.txt" as const string g_panelict_dep_language_en
# resource "res\\language_es.txt" as const string g_panelict_dep_language_es
# resource "res\\language_it.txt" as const string g_panelict_dep_language_it
2026-03-20 21:40:41 -05:00
//--- Features editor
# resource "res\\feditor\\base_template.fgblc" as const string g_panel_feditor_basetemplate
# resource "res\\feditor\\complex_features.fgblc" as const string g_panel_feditor_complexfeatures
# resource "res\\feditor\\ict_features.fgblc" as const string g_panel_feditor_ictfeatures
2026-03-25 09:39:28 -05:00
//--- Temaplates
# resource "res\\templates\\move_files_template.json" as const string g_panel_template_movefiles
2026-03-25 09:59:08 -05:00
# resource "res\\templates\\config_py.json" as const string g_panel_template_config_py
2026-03-27 12:33:09 -05:00
# resource "res\\templates\\files_inclu_exclu_cle.json" as const string g_panel_template_incexcl_cle
# resource "res\\templates\\files_inclu_exclu_enc.json" as const string g_panel_template_incexcl_enc
2026-04-09 21:47:51 -05:00
# resource "res\\templates\\basic_data_generation.yaml" as const string g_panel_template_bdata_gen
2026-03-25 09:39:28 -05:00
2026-03-13 11:50:43 -05:00
//---
2026-03-13 19:46:30 -05:00
struct AiDataTaskRunnerConfigFile
{
string base_folder ;
bool comon_flag ;
2026-03-14 07:39:48 -05:00
AiDataTaskRunnerConfigFile ( )
: comon_flag ( true ) , base_folder ( " AiDataTaskRunner \\ " )
{ }
2026-03-13 19:46:30 -05:00
} g_aidatatask_runner_config_g ;
2026-03-27 12:33:09 -05:00
//+------------------------------------------------------------------+
//| Archivos |
//+------------------------------------------------------------------+
//--- Common flag en FSD y normal
2026-03-13 19:46:30 -05:00
# define AIDATATASKRUNER_BASE_FOLDER ( g_aidatatask_runner_config_g . base_folder )
2026-03-27 12:33:09 -05:00
# define AIDATATASK_RUNNER_COMON_FLAG ( g_aidatatask_runner_config_g . comon_flag ? FILE_COMMON : 0 )
# define AIDATATASK_RUNNER_FSD_COMON_FLAG ( g_aidatatask_runner_config_g . comon_flag ? FSD_COMMON_FOLDER : 0 )
2026-03-27 17:56:22 -05:00
# define AIDATATASK_RUNNER_COMON_FLAG_VAL ( g_aidatatask_runner_config_g . comon_flag )
2026-03-25 09:39:28 -05:00
2026-03-27 12:33:09 -05:00
//--- Config
2026-03-25 09:45:53 -05:00
// En el path config se ubican lo de los ini para el panel
2026-03-13 11:50:43 -05:00
# define AIDATATASKRUNER_PATH_CONFIG ( AIDATATASKRUNER_BASE_FOLDER + " Config \\ " )
2026-03-27 12:33:09 -05:00
//--- Task
2026-03-25 09:45:53 -05:00
// Task aqui se ubican csv de tareas que gurado del usuario o la configuracion del tab task
2026-03-14 07:39:48 -05:00
# define AIDATATASKRUNER_PATH_TASK ( AIDATATASKRUNER_BASE_FOLDER + " Task \\ " )
2026-03-25 09:45:53 -05:00
2026-03-27 12:33:09 -05:00
//--- Feature editor
2026-03-25 09:45:53 -05:00
// En feature editor se ubican todos los archivo FGBLC que guardo\uso el user
2026-03-20 21:40:41 -05:00
# define AIDATATASKRUNER_PATH_FEATURES_EDITOR ( AIDATATASKRUNER_BASE_FOLDER + " FeatureEditor \\ " )
2026-03-25 21:39:19 -05:00
# define AIDATATASKRUNER_PATH_FEATURES_EDITOR_MY ( AIDATATASKRUNER_PATH_FEATURES_EDITOR + " My \\ " )
2026-03-25 09:45:53 -05:00
2026-03-27 12:33:09 -05:00
//--- Ai agent
2026-03-25 09:45:53 -05:00
// Aqui s eubican los chats de ia etc (TabAi)
2026-03-20 21:40:41 -05:00
# define TABLLMAGENT_FOLDER_AI " AiAgent \\ "
2026-03-25 09:59:08 -05:00
2026-03-27 12:33:09 -05:00
//--- Temaplates
2026-03-25 09:59:08 -05:00
// Aqui se ubican los templates como archivos json listos para usar del condig de py etc
2026-03-27 12:33:09 -05:00
# define AIDATATASKRUNER_PATH_TEMPLATES ( AIDATATASKRUNER_BASE_FOLDER + " Templates \\ " )
# define AIDATATASKRUNER_FILENAME_TEMPLATES_MOVEFILESS ( " move_files_template.json " )
# define AIDATATASKRUNER_FILENAME_TEMPLATES_PYCONFIG ( " config_py.json " )
# define AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_ENC ( " files_inclu_exclu_enc.json " )
# define AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_CLE ( " files_inclu_exclu_cle.json " )
2026-04-09 06:55:42 -05:00
2026-04-07 11:45:10 -05:00
//--- Workflows
# define AIDATATASKRUNER_PATH_WORKFLOWS ( AIDATATASKRUNER_BASE_FOLDER + " Workflows \\ " )
2026-04-09 21:47:51 -05:00
# define AIDATATASKRUNER_FILE_NAME_WORKFLOWS_BASICGENERATION ( " basic_data_generation.yaml " )
2026-04-07 11:45:10 -05:00
2026-03-13 11:50:43 -05:00
2026-03-27 12:33:09 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//--- Lenguaje
2026-03-13 11:50:43 -05:00
# define AIDATATASKRUNNER_TOTAL_LANGUAGUE ( 3 )
2026-03-16 17:06:27 -05:00
# define TASKRUNERAI_DEFUALT_LAN ( AIDATATASKRUNNER_LAN_ES )
2026-03-13 19:46:30 -05:00
2026-03-13 15:20:27 -05:00
string g_aidatatask_runner_langague_str [ AIDATATASKRUNNER_TOTAL_LANGUAGUE ]
{
" Español " ,
" English " ,
" Italiano "
} ;
2026-03-27 12:33:09 -05:00
// Base
2026-03-16 17:06:27 -05:00
LanguageBaseConfig g_aidatatask_runner_langague [ AIDATATASKRUNNER_TOTAL_LANGUAGUE ] ;
2026-03-13 11:50:43 -05:00
2026-03-27 12:33:09 -05:00
// Enum
2026-03-13 11:50:43 -05:00
enum ENUM_AIDATATASKRUNER_LANGUAGE
{
AIDATATASKRUNNER_LAN_ES = 0 ,
AIDATATASKRUNNER_LAN_EN = 1 ,
AIDATATASKRUNNER_LAN_IT = 2
} ;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CPanelAiDataTaskRunnerIns
{
private :
2026-03-20 21:40:41 -05:00
static bool WriteInFile ( const string path , const string & rescr ) ;
2026-03-14 07:39:48 -05:00
static void InitArrays ( ) ;
2026-03-13 11:50:43 -05:00
public :
CPanelAiDataTaskRunnerIns ( void ) { }
~ CPanelAiDataTaskRunnerIns ( void ) { }
//---
static bool Downlad ( ) ;
} ;
2026-03-14 07:39:48 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
static void CPanelAiDataTaskRunnerIns : : InitArrays ( void )
{
//---
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_ES ] . base_file = AIDATATASKRUNER_PATH_CONFIG + " language_es.ini " ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_ES ] . content = g_panelict_dep_language_es ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_EN ] . base_file = AIDATATASKRUNER_PATH_CONFIG + " language_en.ini " ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_EN ] . content = g_panelict_dep_language_en ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_IT ] . base_file = AIDATATASKRUNER_PATH_CONFIG + " language_it.ini " ;
g_aidatatask_runner_langague [ AIDATATASKRUNNER_LAN_IT ] . content = g_panelict_dep_language_it ;
}
2026-03-13 11:50:43 -05:00
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
static bool CPanelAiDataTaskRunnerIns : : WriteInFile ( const string path , const string & rescr )
{
//---
: : GetLastError ( ) ;
2026-03-25 09:39:28 -05:00
const int fh = FileOpen ( path , FILE_TXT | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG , 0 ) ;
2026-03-13 11:50:43 -05:00
if ( fh = = INVALID_HANDLE )
{
FastLog ( FUNCION_ACTUAL , ERROR_TEXT , StringFormat ( " Fallo al abrir el archivo = %s, ultimo error = %d " , path , : : GetLastError ( ) ) ) ;
return false ;
}
//---
2026-03-25 09:39:28 -05:00
FileWrite ( fh , rescr ) ;
2026-03-13 11:50:43 -05:00
//---
FileClose ( fh ) ;
//---
return true ;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
static bool CPanelAiDataTaskRunnerIns : : Downlad ( void )
{
2026-03-14 07:39:48 -05:00
//---
InitArrays ( ) ;
2026-03-13 11:50:43 -05:00
//---
const string file = AIDATATASKRUNER_PATH_CONFIG + " last_date.bin " ;
2026-03-13 15:20:27 -05:00
if ( FileIsExist ( file , AIDATATASK_RUNNER_COMON_FLAG ) )
2026-03-13 11:50:43 -05:00
{
// Ya existe
FastLog ( FUNCION_ACTUAL , WARNING_TEXT , " The ini files have already been created " ) ;
return true ;
}
else
{
FastLog ( FUNCION_ACTUAL , WARNING_TEXT , " Creating init files for the panel " ) ;
}
2026-03-13 19:46:30 -05:00
//--- Instalacion de archivos
2026-03-13 11:50:43 -05:00
for ( int i = 0 ; i < AIDATATASKRUNNER_TOTAL_LANGUAGUE ; i + + )
{
if ( ! WriteInFile ( g_aidatatask_runner_langague [ i ] . base_file , g_aidatatask_runner_langague [ i ] . content ) )
return false ;
}
2026-03-25 09:39:28 -05:00
//--- Folders
// Task
2026-03-13 21:49:37 -05:00
if ( ! CreateFolder ( AIDATATASKRUNER_PATH_TASK , g_aidatatask_runner_config_g . comon_flag ) ) // Folder de utilidad por si el usuario crea tareas o guarda
2026-03-13 19:46:30 -05:00
return false ;
2026-03-25 09:39:28 -05:00
// Folder ai
if ( ! CreateFolder ( g_aidatatask_runner_config_g . base_folder + TABLLMAGENT_FOLDER_AI , g_aidatatask_runner_config_g . comon_flag ) )
2026-03-16 21:51:29 -05:00
return false ;
2026-04-09 06:55:42 -05:00
2026-03-25 21:39:19 -05:00
// Feature editor = My (Donde el user pone sus archivos)
if ( ! CreateFolder ( AIDATATASKRUNER_PATH_FEATURES_EDITOR_MY , g_aidatatask_runner_config_g . comon_flag ) ) // Folder de utilidad por si el usuario crea tareas o guarda
return false ;
2026-03-16 21:51:29 -05:00
2026-03-25 09:39:28 -05:00
2026-03-20 21:40:41 -05:00
//--- Archivos relacioneanos a las features
2026-03-25 09:39:28 -05:00
// Features editor
2026-03-20 21:40:41 -05:00
if ( ! WriteInFile ( AIDATATASKRUNER_PATH_FEATURES_EDITOR + " base_template.fgblc " , g_panel_feditor_basetemplate ) )
return false ;
if ( ! WriteInFile ( AIDATATASKRUNER_PATH_FEATURES_EDITOR + " complex_features.fgblc " , g_panel_feditor_complexfeatures ) )
return false ;
if ( ! WriteInFile ( AIDATATASKRUNER_PATH_FEATURES_EDITOR + " ict_features.fgblc " , g_panel_feditor_ictfeatures ) )
return false ;
2026-03-25 09:39:28 -05:00
//--- Templates
2026-03-27 12:33:09 -05:00
if ( ! WriteInFile ( AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_MOVEFILESS , g_panel_template_movefiles ) )
2026-03-25 09:39:28 -05:00
return false ;
2026-03-27 12:33:09 -05:00
if ( ! WriteInFile ( AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_PYCONFIG , g_panel_template_config_py ) )
return false ;
if ( ! WriteInFile ( AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_CLE , g_panel_template_incexcl_cle ) )
return false ;
if ( ! WriteInFile ( AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_FILEINCLUEXCLU_ENC , g_panel_template_incexcl_enc ) )
2026-03-25 09:59:08 -05:00
return false ;
2026-04-09 06:55:42 -05:00
if ( ! WriteInFile ( AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILE_NAME_WORKFLOWS_BASICGENERATION , g_panel_template_bdata_gen ) )
return false ;
2026-03-25 09:39:28 -05:00
2026-03-16 21:51:29 -05:00
2026-03-13 11:50:43 -05:00
//--- Finalizamos creando
2026-03-13 11:58:57 -05:00
const int fh = FileOpen ( file , FILE_BIN | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG ) ;
2026-03-13 11:50:43 -05:00
if ( fh = = INVALID_HANDLE )
{
FastLog ( FUNCION_ACTUAL , ERROR_TEXT , StringFormat ( " Fallo al abrir el archivo = %s, ultimo error = %d " , file , : : GetLastError ( ) ) ) ;
return false ;
}
FileWriteLong ( fh , long ( TimeCurrent ( ) ) ) ;
FileClose ( fh ) ;
//---
return true ;
}
//+------------------------------------------------------------------+
# endif // AIDATATASKRUNNER_FILEINSTALER_MAIN_MQH