//+------------------------------------------------------------------+ //| McpServ.mq5 | //| Copyright 2026, Niquel Mendoza. | //| https://www.mql5.com/es/users/nique_372 | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, Niquel Mendoza." #property link "https://www.mql5.com/es/users/nique_372" #property version "1.00" #property strict //+------------------------------------------------------------------+ //| Include | //+------------------------------------------------------------------+ #include "Functions.mqh" //+------------------------------------------------------------------+ //| Inputs | //+------------------------------------------------------------------+ input string InpSoketAdres = "127.0.0.1"; input uint InpSoketPort = 9999; input int InpMsPool = 10000; input int InpMsTimeoutReadNoTls = 10000; input long InpChartIdPanel = 0; //+------------------------------------------------------------------+ //| Global variables | //+------------------------------------------------------------------+ CMcpServer g_mcp_server; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- ::EventSetMillisecondTimer(InpMsPool); g_mcp_server.AddLogFlags(LOG_ALL); //--- const long current_chart_id = ChartID(); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerAddTask(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerGetTaskTotal(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerGetTaskByIndex(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerGetTaskStatus(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerCleanAllTasks(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerExecuteAllTasks(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerSaveTasksToFile(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerLoadTasksFromFile(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerLoadConfig(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerSaveConfig(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerGetMainFolder(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerGetTaskFolder(InpChartIdPanel, current_chart_id)); g_mcp_server.AddItemFast(new CMcpFuncAiTaskRunnerIsInCommonFolder(InpChartIdPanel, current_chart_id)); //--- g_mcp_server.Set(InpMsPool, InpMsTimeoutReadNoTls); if(!g_mcp_server.Conectar(InpSoketAdres, InpSoketPort, (10 * 1000))) // 10 segundos de espera para conectarse return INIT_FAILED; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- ::EventKillTimer(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- } //+------------------------------------------------------------------+ //| Timer function | //+------------------------------------------------------------------+ void OnTimer(void) { g_mcp_server.TimerEvent(); } //+------------------------------------------------------------------+ //| ChartEvent function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- g_mcp_server.ChartEvent(id, lparam, dparam, sparam); } //+------------------------------------------------------------------+