AiDataTaskRuner/Backend/Mcp/McpServ.mq5

114 lines
5.2 KiB
MQL5
Raw Permalink Normal View History

2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
//| 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
2026-05-01 13:27:57 -05:00
//+------------------------------------------------------------------+
//| Defines |
//+------------------------------------------------------------------+
#define PUBLIC_VERSION
2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
2026-04-17 17:53:19 -05:00
//| Include |
2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
#include "Functions.mqh"
2026-07-08 11:03:36 -05:00
#include "Secrets.mqh"
2026-04-17 17:27:10 -05:00
2026-04-17 17:53:19 -05:00
//+------------------------------------------------------------------+
//| Inputs |
//+------------------------------------------------------------------+
2026-07-08 11:03:36 -05:00
input string InpTbpUserId = THE_BOT_PLACE_USER_ID; // Tbp User Id
input string InpSoketAdres = "127.0.0.1"; // Sockets address
input uint InpSoketPort = 9999; // Socket port
2026-07-14 11:11:53 -05:00
input int InpMsPool = 70; // Ms pool
2026-07-08 11:03:36 -05:00
input int InpMsTimeoutReadNoTls = 10000; // Timeout for read (NO-TLS)
2026-04-17 17:53:19 -05:00
input long InpChartIdPanel = 0;
//+------------------------------------------------------------------+
//| Global variables |
//+------------------------------------------------------------------+
2026-06-03 22:07:50 -05:00
TSN::IMcpBase* g_mcp_server;
2026-04-17 17:53:19 -05:00
2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
2026-04-17 17:53:19 -05:00
{
2026-05-01 13:27:57 -05:00
//---
#ifdef TSN_MCPSERVER_FUNC_CTS
2026-07-08 11:03:36 -05:00
g_mcp_server = TSN_MCPSERVER_FUNC_CTS(InpTbpUserId);
2026-05-01 13:27:57 -05:00
#else
2026-07-08 11:03:36 -05:00
g_mcp_server = McpServerByLeo_Create(InpTbpUserId);
2026-05-01 13:27:57 -05:00
#endif // TSN_MCPSERVER_FUNC_CTS
2026-04-17 17:53:19 -05:00
//---
::EventSetMillisecondTimer(InpMsPool);
g_mcp_server.AddLogFlags(LOG_ALL);
2026-04-17 17:27:10 -05:00
//---
2026-04-17 17:53:19 -05:00
const long current_chart_id = ChartID();
2026-06-03 22:07:50 -05:00
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerAddTask(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerGetTaskTotal(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerGetTaskByIndex(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerGetTaskStatus(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerCleanAllTasks(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerExecuteAllTasks(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerSaveTasksToFile(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerLoadTasksFromFile(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerLoadConfig(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerSaveConfig(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerGetMainFolder(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerGetTaskFolder(InpChartIdPanel, current_chart_id));
g_mcp_server.AddItemFast(new TSN::CMcpFuncAiTaskRunnerIsInCommonFolder(InpChartIdPanel, current_chart_id));
2026-04-17 17:27:10 -05:00
//---
2026-04-17 17:53:19 -05:00
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);
}
2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
2026-04-17 17:53:19 -05:00
{
2026-04-17 17:27:10 -05:00
//---
2026-04-17 17:53:19 -05:00
::EventKillTimer();
2026-05-01 13:27:57 -05:00
//---
if(CheckPointer(g_mcp_server) == POINTER_DYNAMIC)
delete g_mcp_server;
2026-04-17 17:53:19 -05:00
}
2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
2026-04-17 17:53:19 -05:00
{
//---
}
//+------------------------------------------------------------------+
//| 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)
{
2026-04-17 17:27:10 -05:00
//---
2026-04-17 17:53:19 -05:00
g_mcp_server.ChartEvent(id, lparam, dparam, sparam);
}
2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+