AiDataTaskRuner/Backend/Tester/Def.mqh

144 líneas
4,8 KiB
MQL5

2026-03-18 12:10:52 -05:00
//+------------------------------------------------------------------+
//| Def.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_BACKEND_BASES_DEF_MQH
#define AIDATATASKRUNNER_BACKEND_BASES_DEF_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
//---
#include <TSN\\ExtraCodes\\RunnerProtDef.mqh>
//---
enum ENUM_AIEXECUTOR_TASK_STATE
{
AIEXECUTOR_TASK_STATE_IN_PROCESS = 0, // Se esta procesando
AIEXECUTOR_TASK_STATE_IN_QUEQE = 1, // En cola
AIEXECUTOR_TASK_STATE_PENDIENTE = 2, // Pendiente
AIEXECUTOR_TASK_STATE_FINISHED = 3, // Listo
AIEXECUTOR_TASK_STATE_FAILED = 4 // Fallo
};
//---
#define TASKTESTER_VALUES (8)
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
struct TaskTester
{
//---
string symbol; // Simbolo
string set_file; // SetFIle
datetime start_date; // End date
datetime end_date; // Start date
ENUM_TIMEFRAMES timeframe; // Timeframe
string symbol_folder; // Simbolo (Para el nombre del folder)
string label; // Etiqueta
int label_id; // Numero de la etiqueta
ENUM_AIEXECUTOR_TASK_STATE state; // Estado
//---
TaskTester()
:
symbol_folder(NULL), label(NULL), label_id(0), state(AIEXECUTOR_TASK_STATE_PENDIENTE),
set_file(NULL), symbol(NULL), timeframe(WRONG_VALUE), start_date(0), end_date(0)
{
}
//---
__forceinline string ToStringFile()
{
return StringFormat("%d|%s|%s|%s|%s|%s|%s|%d",
int(timeframe), // [0]
symbol, // [1]
set_file, // [2]
TimeToString(start_date), // [3]
TimeToString(end_date), // [4]
symbol_folder, // [5]
label, // [6]
label_id); // [7]
}
//---
2026-07-07 13:38:29 -05:00
void Save(const int fh, const long chart_id, const string& expert_path, const int8_t modelado)
2026-03-18 12:10:52 -05:00
{
2026-07-07 13:38:29 -05:00
// MISMO layout que extra codes.
//--- Strings (longitud + contenido)
FileWriteInteger(fh, StringLen(symbol));
FileWriteString(fh, symbol);
FileWriteInteger(fh, StringLen(set_file));
FileWriteString(fh, set_file);
2026-03-18 12:10:52 -05:00
2026-07-07 13:38:29 -05:00
FileWriteInteger(fh, StringLen(expert_path));
FileWriteString(fh, expert_path);
//--- Longs
FileWriteLong(fh, chart_id);
FileWriteLong(fh, (long)start_date);
FileWriteLong(fh, (long)end_date);
FileWriteLong(fh, (long)0);
//--- Integers
FileWriteInteger(fh, (int)timeframe);
FileWriteInteger(fh, -2);
//--- Int16
FileWriteInteger(fh, (int)0, SHORT_VALUE);
//--- Int 8
FileWriteInteger(fh, (int)false, CHAR_VALUE);
FileWriteInteger(fh, (int)modelado, CHAR_VALUE);
FileWriteInteger(fh, (int)MTTESTER_OPTMIZATION_NONE, CHAR_VALUE);
FileWriteInteger(fh, (int) -1, CHAR_VALUE);
FileWriteInteger(fh, (int)MTTESTER_FORWARD_NONE, CHAR_VALUE);
}
/*
//---
__forceinline string ToStringToMTTester()
{
// 1er 0 por qeu no usaremos leverage (por defecotop)
// 2do 0 por visual mode tampoco usaremos visual mode (no es nceesario ver el backtest)
return StringFormat("%d|%s|%s|%s|%s|%I64d|%s|0|0|%d",
int(timeframe), // [0]
symbol, // [1]
set_file, // [2]
TimeToString(start_date), // [3]
TimeToString(end_date), // [4]
chart_id,
expert_path,
modelado);
}
*/
2026-03-18 12:10:52 -05:00
//---
void Assing(const string& dyn_arr[])
{
//---
timeframe = ENUM_TIMEFRAMES(int(dyn_arr[0]));
symbol = dyn_arr[1];
set_file = dyn_arr[2];
start_date = StringToTime(dyn_arr[3]);
end_date = StringToTime(dyn_arr[4]);
//---
symbol_folder = dyn_arr[5];
label = dyn_arr[6];
label_id = int(dyn_arr[7]);
}
};
#endif // AIDATATASKRUNNER_BACKEND_BASES_DEF_MQH