Adwizard/Optimization/OptimizationStage.mqh
2025-04-11 13:28:40 +03:00

120 lines
13 KiB
MQL5

//+------------------------------------------------------------------+
//| OptimizationStage.mqh |
//| Copyright 2025, Yuriy Bykov |
//| https://www.mql5.com/ru/users/antekov |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, Yuriy Bykov"
#property link "https://www.mql5.com/ru/articles/17328"
#property version "1.00"
#include "../Optimization/OptimizationProject.mqh"
//+------------------------------------------------------------------+
//| Класс для этапа оптимизации |
//+------------------------------------------------------------------+
class COptimizationStage {
public:
ulong id_stage;
ulong id_project;
ulong id_parent_stage;
string name;
string expert;
string symbol;
string period;
int optimization;
int model;
datetime from_date;
datetime to_date;
int forward_mode;
datetime forward_date;
int deposit;
string currency;
int profit_in_pips;
int leverage;
int execution_mode;
int optimization_criterion;
string status;
COptimizationProject* project;
COptimizationStage* parent_stage;
COptimizationJob* jobs[];
COptimizationStage(ulong p_idStage, COptimizationProject* p_project, COptimizationStage* parentStage,
string p_name, string p_expertName, string p_symbol = "GBPUSD", string p_timeframe = "H1",
int p_optimization = 0, int p_model = 0,
datetime p_fromDate = 0, datetime p_toDate = 0,
int p_forwardMode = 0, datetime p_forwardDate = 0,
int p_deposit = 10000, string p_currency = "USD",
int p_profitInPips = 0, int p_leverage = 200,
int p_executionMode = 0, int p_optimizationCriterion = 7,
string p_status = "Done") :
id_stage(p_idStage),
project(p_project),
id_project(!!p_project ? p_project.id_project : 0),
parent_stage(parentStage),
id_parent_stage(!!parentStage ? parentStage.id_stage : 0),
name(p_name), expert(p_expertName), symbol(p_symbol),
period(p_timeframe), optimization(p_optimization), model(p_model),
from_date(p_fromDate), to_date(p_toDate), forward_mode(p_forwardMode),
forward_date(p_forwardDate), deposit(p_deposit), currency(p_currency),
profit_in_pips(p_profitInPips), leverage(p_leverage), execution_mode(p_executionMode),
optimization_criterion(p_optimizationCriterion), status(p_status) {}
// Создание этапа в базе данных
void Insert();
};
//+------------------------------------------------------------------+
//| Создание этапа в базе данных |
//+------------------------------------------------------------------+
void COptimizationStage::Insert() {
string query = StringFormat("INSERT INTO stages VALUES("
"%s," // id_stage
"%I64u," // id_project
"%s," // id_parent_stage
"'%s'," // name
"'%s'," // expert
"'%s'," // symbol
"'%s'," // period
"%d," // optimization
"%d," // model
"'%s'," // from_date
"'%s'," // to_date
"%d," // forward_mode
"%s," // forward_date
"%d," // deposit
"'%s'," // currency
"%d," // profit_in_pips
"%d," // leverage
"%d," // execution_mode
"%d," // optimization_criterion
"'%s'" // status
");",
(id_stage == 0 ? "NULL" : (string) id_stage), // id_stage
id_project, // id_project
(id_parent_stage == 0 ?
"NULL" : (string) id_parent_stage), // id_parent_stage
name, // name
expert, // expert
symbol, // symbol
period, // period
optimization, // optimization
model, // model
TimeToString(from_date, TIME_DATE), // from_date
TimeToString(to_date, TIME_DATE), // to_date
forward_mode, // forward_mode
(forward_mode == 4 ?
"'" + TimeToString(forward_date, TIME_DATE) + "'"
: "NULL"), // forward_date
deposit, // deposit
currency, // currency
profit_in_pips, // profit_in_pips
leverage, // leverage
execution_mode, // execution_mode
optimization_criterion, // optimization_criterion
status // status
);
PrintFormat(__FUNCTION__" | %s", query);
id_stage = DB::Insert(query);
}
//+------------------------------------------------------------------+