2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
//| Functions.mqh |
//| 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 strict
# ifndef AIDATATASKRUNNER_BACKEND_MCP_FUNCTIONS_MQH
# define AIDATATASKRUNNER_BACKEND_MCP_FUNCTIONS_MQH
//+------------------------------------------------------------------+
//| Include |
//+------------------------------------------------------------------+
# include <TSN\\Mcp\\Main.mqh>
# include <TSN\\MQLArticles\\Utils\\EnumReg.mqh>
# include "..\\Api\\Protocol\\Def.mqh"
//+------------------------------------------------------------------+
//| Base comun para todas las funciones async de AiDataTaskRunner |
//+------------------------------------------------------------------+
2026-07-14 11:11:53 -05:00
namespace TSN
2026-06-03 22:07:50 -05:00
{
2026-04-17 17:27:10 -05:00
class CMcpFuncAiTaskRunnerBase : public CMcpFunction
{
protected :
//--- Miembros
const long m_chart_id_panel ;
const long m_current_chart_id ;
//--- Funciones
2026-07-14 11:11:53 -05:00
bool DispatchToPanel ( const uint8_t event_id , const string val ) ;
2026-04-17 17:27:10 -05:00
bool TryUnpack ( const string & sparam , string & val ) ;
2026-07-14 11:11:53 -05:00
void SendResult ( const double dparam , const string & val ) ;
2026-04-17 17:27:10 -05:00
public :
CMcpFuncAiTaskRunnerBase ( const string & func_name , const long chart_id_panel , const long curr_chart_id )
: CMcpFunction ( MCPSERVERBYLEO_FLAG_CHARTEVENT , true , func_name ) ,
2026-04-17 22:43:49 -05:00
m_chart_id_panel ( chart_id_panel ) , m_current_chart_id ( curr_chart_id )
2026-04-17 17:27:10 -05:00
{ }
~ CMcpFuncAiTaskRunnerBase ( void ) { }
} ;
//+------------------------------------------------------------------+
2026-07-14 11:11:53 -05:00
bool CMcpFuncAiTaskRunnerBase : : DispatchToPanel ( const uint8_t event_id , const string val )
2026-04-17 17:27:10 -05:00
{
if ( ! : : EventChartCustom ( m_chart_id_panel , AIDATATASKRUNER_API_ON_PARAM_CHANGE ,
m_current_chart_id , double ( event_id ) ,
2026-04-17 22:43:49 -05:00
AiDataTaskRunnerEmpaquetar ( " mcp_server_aidata " , val ) ) )
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
m_shared_builder . PutChar ( ' " ' ) ;
m_shared_builder . Obj ( ) ;
m_shared_builder . KeyWV ( " ok " ) . Val ( false ) ;
m_shared_builder . KeyWV ( " error " ) . ValSWV ( " dispatch_failed " ) ;
m_shared_builder . EndObj ( ) ;
m_shared_builder . PutChar ( ' " ' ) ;
2026-04-17 17:27:10 -05:00
return false ;
}
return true ;
}
//+------------------------------------------------------------------+
bool CMcpFuncAiTaskRunnerBase : : TryUnpack ( const string & sparam , string & val )
{
static string id_call_recv ;
if ( ! AiDataTaskRunnerDesempaquetar ( sparam , id_call_recv , val ) )
return false ;
return true ;
}
//+------------------------------------------------------------------+
2026-07-14 11:11:53 -05:00
//| SendResult - Arma el JSON de respuesta async y lo despacha |
//+------------------------------------------------------------------+
void CMcpFuncAiTaskRunnerBase : : SendResult ( const double dparam , const string & val )
{
//---
m_shared_builder . PutChar ( ' " ' ) ;
m_shared_builder . Obj ( ) ;
m_shared_builder . KeyWV ( " ok " ) . Val ( dparam = = AIDATATASKRUNER_API_RES_EXITO ) ;
m_shared_builder . KeyWV ( " result " ) . ValS ( val ) ;
m_shared_builder . EndObj ( ) ;
m_shared_builder . PutChar ( ' " ' ) ;
m_mcp_server . _RecibedEvent ( m_shared_builder ) ;
}
2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
//| get_task_total |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerGetTaskTotal : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerGetTaskTotal ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_get_task_total " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerGetTaskTotal ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_TASK_TOTAL , " " ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_TASK_TOTAL )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| get_task_by_index |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerGetTaskByIndex : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerGetTaskByIndex ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_get_task_by_index " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerGetTaskByIndex ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_GET_TASK_BY_INDEX , param [ " index " ] . ToString ( ) ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_GET_TASK_BY_INDEX )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| get_task_status |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerGetTaskStatus : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerGetTaskStatus ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_get_task_status " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerGetTaskStatus ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_GET_TASK_STATUS , param [ " index " ] . ToString ( ) ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_GET_TASK_STATUS )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| get_main_folder |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerGetMainFolder : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerGetMainFolder ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_get_main_folder " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerGetMainFolder ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_MAIN_FOLDER , " " ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_MAIN_FOLDER )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| get_task_folder |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerGetTaskFolder : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerGetTaskFolder ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_get_task_folder " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerGetTaskFolder ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_TASK_FOLDER , " " ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_TASK_FOLDER )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| is_in_commonfolder |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerIsInCommonFolder : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerIsInCommonFolder ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_is_in_commonfolder " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerIsInCommonFolder ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_IS_IN_COMMON_FOLDER , " " ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_IS_IN_COMMON_FOLDER )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| clean_all_tasks |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerCleanAllTasks : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerCleanAllTasks ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_clean_all_tasks " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerCleanAllTasks ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_CLEAN_ALL_TASK_OF_TABLE , " " ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_CLEAN_ALL_TASK_OF_TABLE )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| load_tasks_from_file |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerLoadTasksFromFile : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerLoadTasksFromFile ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_load_tasks_from_file " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerLoadTasksFromFile ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_LOAD_TASK_IN_FILE , param [ " file_name " ] . ToString ( ) ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_LOAD_TASK_IN_FILE )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| save_tasks_to_file |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerSaveTasksToFile : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerSaveTasksToFile ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_save_tasks_to_file " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerSaveTasksToFile ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
2026-04-17 17:27:10 -05:00
const string val = StringFormat ( " %d|%s " , int ( param [ " only_unfinished " ] . ToBool ( false ) ) , param [ " file_name " ] . ToString ( ) ) ;
2026-07-14 11:11:53 -05:00
DispatchToPanel ( AIDATATASKRUNER_API_SAVE_TASK_IN_FILE , val ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_SAVE_TASK_IN_FILE )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| load_config |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerLoadConfig : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerLoadConfig ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_load_config " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerLoadConfig ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_LOAD_CONFIG_IN_FILE , param [ " file_name " ] . ToString ( ) ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_LOAD_CONFIG_IN_FILE )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| save_config |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerSaveConfig : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerSaveConfig ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_save_config " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerSaveConfig ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
DispatchToPanel ( AIDATATASKRUNER_API_SAVE_CONFIG_IN_FILE , param [ " file_name " ] . ToString ( ) ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_SAVE_CONFIG_IN_FILE )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| add_task |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerAddTask : public CMcpFuncAiTaskRunnerBase
{
public :
CMcpFuncAiTaskRunnerAddTask ( const long chart_id_panel , const long curr_chart_id )
: CMcpFuncAiTaskRunnerBase ( " aidatataskrunner_add_task " , chart_id_panel , curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerAddTask ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
2026-04-17 17:27:10 -05:00
//---
2026-07-07 19:33:27 -05:00
const int timeframe = CEnumRegBasis : : GetValNoRef < int > ( param [ " timeframe " ] . ToString ( " _Period " ) , _Period ) ;
2026-04-17 17:27:10 -05:00
const string val = StringFormat ( " %d|%s|%s|%s|%s|%s|%s|%s " ,
timeframe ,
param [ " symbol " ] . ToString ( ) ,
param [ " set_file " ] . ToString ( " " ) ,
param [ " start_date " ] . ToString ( ) ,
param [ " end_date " ] . ToString ( ) ,
param [ " symbol_folder " ] . ToString ( " " ) ,
param [ " label " ] . ToString ( " " ) ,
param [ " label_id " ] . ToString ( " 0 " ) ) ;
2026-07-14 11:11:53 -05:00
DispatchToPanel ( AIDATATASKRUNER_API_ADD_TASK_TO_TABLE , val ) ;
2026-04-17 17:27:10 -05:00
}
//---
void ChartEvent ( const int32_t id , const long & lparam , const double & dparam , const string & sparam ) override final
{
if ( id ! = CHARTEVENT_CUSTOM + AIDATATASKRUNER_API_ON_PARAM_CHANGE )
return ;
if ( lparam ! = AIDATATASKRUNER_API_ADD_TASK_TO_TABLE )
return ;
static string val ;
if ( ! TryUnpack ( sparam , val ) )
return ;
2026-07-14 11:11:53 -05:00
SendResult ( dparam , val ) ;
2026-04-17 17:27:10 -05:00
}
} ;
//+------------------------------------------------------------------+
//| execute_all_tasks |
//+------------------------------------------------------------------+
class CMcpFuncAiTaskRunnerExecuteAllTasks : public CMcpFunction
{
private :
const long m_chart_id_panel ;
const long m_current_chart_id ;
public :
CMcpFuncAiTaskRunnerExecuteAllTasks ( const long chart_id_panel , const long curr_chart_id )
: CMcpFunction ( 0 , false , " aidatataskrunner_execute_all_tasks " ) ,
m_chart_id_panel ( chart_id_panel ) , m_current_chart_id ( curr_chart_id ) { }
~ CMcpFuncAiTaskRunnerExecuteAllTasks ( void ) { }
//---
2026-07-14 11:11:53 -05:00
void Run ( CJsonNode & param , CJsonBuilderStr * & out ) override final
2026-04-17 17:27:10 -05:00
{
2026-07-14 11:11:53 -05:00
out = m_shared_builder ;
2026-04-17 17:27:10 -05:00
: : EventChartCustom ( m_chart_id_panel , AIDATATASKRUNER_API_ON_PARAM_CHANGE ,
m_current_chart_id , double ( AIDATATASKRUNER_API_EXECUTE_ALL_TASK_OF_TABLE ) ,
AiDataTaskRunnerEmpaquetar ( " mcp_exec_all " , " " ) ) ;
2026-07-14 11:11:53 -05:00
//---
m_shared_builder . PutChar ( ' " ' ) ;
m_shared_builder . Obj ( ) ;
m_shared_builder . KeyWV ( " ok " ) . Val ( true ) ;
m_shared_builder . KeyWV ( " result " ) . ValSWV ( " queued " ) ;
m_shared_builder . EndObj ( ) ;
m_shared_builder . PutChar ( ' " ' ) ;
2026-04-17 17:27:10 -05:00
}
} ;
2026-07-14 11:11:53 -05:00
}
2026-04-17 17:27:10 -05:00
//+------------------------------------------------------------------+
2026-07-14 11:11:53 -05:00
# endif // AIDATATASKRUNNER_BACKEND_MCP_FUNCTIONS_MQH