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
//+------------------------------------------------------------------+