258 lines
10 KiB
MQL5
258 lines
10 KiB
MQL5
//+------------------------------------------------------------------+
|
|
//| 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
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
#include <TSN\\MQLArticles\\Utils\\Basic.mqh>
|
|
#include <TSN\\EAFMod\\Language.mqh>
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
//--- Idiomas
|
|
#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
|
|
|
|
//--- 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
|
|
|
|
//--- Temaplates
|
|
#resource "res\\templates\\move_files_template.json" as const string g_panel_template_movefiles
|
|
#resource "res\\templates\\config_py.json" as const string g_panel_template_config_py
|
|
#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
|
|
#resource "res\\templates\\basic_data_generation.yaml" as const string g_panel_template_bdata_gen
|
|
|
|
//---
|
|
struct AiDataTaskRunnerConfigFile
|
|
{
|
|
string base_folder;
|
|
bool comon_flag;
|
|
|
|
AiDataTaskRunnerConfigFile()
|
|
: comon_flag(true), base_folder("AiDataTaskRunner\\")
|
|
{}
|
|
} g_aidatatask_runner_config_g;
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| Archivos |
|
|
//+------------------------------------------------------------------+
|
|
//--- Common flag en FSD y normal
|
|
#define AIDATATASKRUNER_BASE_FOLDER (g_aidatatask_runner_config_g.base_folder)
|
|
#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)
|
|
#define AIDATATASK_RUNNER_COMON_FLAG_VAL (g_aidatatask_runner_config_g.comon_flag)
|
|
|
|
//--- Config
|
|
// En el path config se ubican lo de los ini para el panel
|
|
#define AIDATATASKRUNER_PATH_CONFIG (AIDATATASKRUNER_BASE_FOLDER + "Config\\")
|
|
|
|
//--- Task
|
|
// Task aqui se ubican csv de tareas que gurado del usuario o la configuracion del tab task
|
|
#define AIDATATASKRUNER_PATH_TASK (AIDATATASKRUNER_BASE_FOLDER + "Task\\")
|
|
|
|
|
|
//--- Feature editor
|
|
// En feature editor se ubican todos los archivo FGBLC que guardo\uso el user
|
|
#define AIDATATASKRUNER_PATH_FEATURES_EDITOR (AIDATATASKRUNER_BASE_FOLDER + "FeatureEditor\\")
|
|
#define AIDATATASKRUNER_PATH_FEATURES_EDITOR_MY (AIDATATASKRUNER_PATH_FEATURES_EDITOR + "My\\")
|
|
|
|
//--- Ai agent
|
|
// Aqui s eubican los chats de ia etc (TabAi)
|
|
#define TABLLMAGENT_FOLDER_AI "AiAgent\\"
|
|
|
|
//--- Temaplates
|
|
// Aqui se ubican los templates como archivos json listos para usar del condig de py etc
|
|
#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")
|
|
|
|
|
|
//--- Workflows
|
|
#define AIDATATASKRUNER_PATH_WORKFLOWS (AIDATATASKRUNER_BASE_FOLDER + "Workflows\\")
|
|
#define AIDATATASKRUNER_FILE_NAME_WORKFLOWS_BASICGENERATION ("basic_data_generation.yaml")
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
//--- Lenguaje
|
|
#define AIDATATASKRUNNER_TOTAL_LANGUAGUE (3)
|
|
#define TASKRUNERAI_DEFUALT_LAN (AIDATATASKRUNNER_LAN_ES)
|
|
|
|
string g_aidatatask_runner_langague_str[AIDATATASKRUNNER_TOTAL_LANGUAGUE]
|
|
{
|
|
"Español",
|
|
"English",
|
|
"Italiano"
|
|
};
|
|
|
|
// Base
|
|
LanguageBaseConfig g_aidatatask_runner_langague[AIDATATASKRUNNER_TOTAL_LANGUAGUE];
|
|
|
|
// Enum
|
|
enum ENUM_AIDATATASKRUNER_LANGUAGE
|
|
{
|
|
AIDATATASKRUNNER_LAN_ES = 0,
|
|
AIDATATASKRUNNER_LAN_EN = 1,
|
|
AIDATATASKRUNNER_LAN_IT = 2
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
class CPanelAiDataTaskRunnerIns
|
|
{
|
|
private:
|
|
static bool WriteInFile(const string path, const string& rescr);
|
|
static void InitArrays();
|
|
|
|
public:
|
|
CPanelAiDataTaskRunnerIns(void) {}
|
|
~CPanelAiDataTaskRunnerIns(void) {}
|
|
|
|
//---
|
|
static bool Downlad();
|
|
};
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
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;
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
static bool CPanelAiDataTaskRunnerIns::WriteInFile(const string path, const string &rescr)
|
|
{
|
|
//---
|
|
::GetLastError();
|
|
const int fh = FileOpen(path, FILE_TXT | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG, 0);
|
|
if(fh == INVALID_HANDLE)
|
|
{
|
|
FastLog(FUNCION_ACTUAL, ERROR_TEXT, StringFormat("Fallo al abrir el archivo = %s, ultimo error = %d", path, ::GetLastError()));
|
|
return false;
|
|
}
|
|
|
|
//---
|
|
FileWrite(fh, rescr);
|
|
|
|
//---
|
|
FileClose(fh);
|
|
|
|
//---
|
|
return true;
|
|
}
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| |
|
|
//+------------------------------------------------------------------+
|
|
static bool CPanelAiDataTaskRunnerIns::Downlad(void)
|
|
{
|
|
//---
|
|
InitArrays();
|
|
|
|
//---
|
|
const string file = AIDATATASKRUNER_PATH_CONFIG + "last_date.bin";
|
|
if(FileIsExist(file, AIDATATASK_RUNNER_COMON_FLAG))
|
|
{
|
|
// 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");
|
|
}
|
|
|
|
//--- Instalacion de archivos
|
|
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;
|
|
}
|
|
|
|
//--- Folders
|
|
// Task
|
|
if(!CreateFolder(AIDATATASKRUNER_PATH_TASK, g_aidatatask_runner_config_g.comon_flag)) // Folder de utilidad por si el usuario crea tareas o guarda
|
|
return false;
|
|
|
|
// Folder ai
|
|
if(!CreateFolder(g_aidatatask_runner_config_g.base_folder + TABLLMAGENT_FOLDER_AI, g_aidatatask_runner_config_g.comon_flag))
|
|
return false;
|
|
|
|
|
|
// 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;
|
|
|
|
|
|
|
|
//--- Archivos relacioneanos a las features
|
|
// Features editor
|
|
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;
|
|
|
|
//--- Templates
|
|
if(!WriteInFile(AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILENAME_TEMPLATES_MOVEFILESS, g_panel_template_movefiles))
|
|
return false;
|
|
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))
|
|
return false;
|
|
if(!WriteInFile(AIDATATASKRUNER_PATH_TEMPLATES + AIDATATASKRUNER_FILE_NAME_WORKFLOWS_BASICGENERATION, g_panel_template_bdata_gen))
|
|
return false;
|
|
|
|
|
|
|
|
|
|
//--- Finalizamos creando
|
|
const int fh = FileOpen(file, FILE_BIN | FILE_WRITE | AIDATATASK_RUNNER_COMON_FLAG);
|
|
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
|