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
|