AiDataTaskRuner/FilesInstaler/Main.mqh

258 lines
10 KiB
MQL5
Raw Permalink Normal View History

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