LLmAgentsBasicTools/Src/Utils/TerminalInfo.mqh

84 lines
3.3 KiB
MQL5
Raw Permalink Normal View History

2026-07-13 14:48:50 -05:00
//+------------------------------------------------------------------+
//| TerminalInfo.mqh |
//| Copyright 2026, Niquel Mendoza. |
//| https://www.mql5.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2026, Niquel Mendoza."
#property link "https://www.mql5.com/"
#property strict
#ifndef LLMAGENTSBASICTOOLS_SRC_UTILS_TERMINAL_INFO_MQH
#define LLMAGENTSBASICTOOLS_SRC_UTILS_TERMINAL_INFO_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include "..\\Def.mqh"
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
namespace TSN
{
//+------------------------------------------------------------------+
//| name: terminal_info |
//| desc: Returns a TerminalInfoDouble/Integer/String property |
//| params: |
//| mode integer 0=double, 1=integer, 2=string. Default 0 |
//| property string Name of the ENUM_TERMINAL_INFO_* property |
//| matching the selected mode |
//+------------------------------------------------------------------+
class CLlmBToolTerminalInfo : public CLLmTool
{
public:
CLlmBToolTerminalInfo(void) : CLLmTool("terminal_info") {}
~CLlmBToolTerminalInfo(void) {}
2026-07-15 12:34:01 -05:00
void Run(CJsonNode& param, CJsonBuilderStr* &out) override final
2026-07-13 14:48:50 -05:00
{
2026-07-15 12:34:01 -05:00
out = m_shared_builder;
2026-07-13 14:48:50 -05:00
const int mode = int(param["mode"].ToInt(LLMAGENT_BTOOLS_MODE_DOUBLE));
2026-07-15 12:34:01 -05:00
//---
m_shared_builder.PutChar('"');
m_shared_builder.Obj();
2026-07-13 14:48:50 -05:00
switch(mode)
{
//--- DOUBLE
case LLMAGENT_BTOOLS_MODE_DOUBLE:
{
2026-07-15 12:34:01 -05:00
m_shared_builder.KeyWV("ok").Val(true);
m_shared_builder.KeyWV("result").Val(TerminalInfoDouble(CEnumRegBasis::GetValNoRef<ENUM_TERMINAL_INFO_DOUBLE>(param["property"].ToString(""), WRONG_VALUE)));
break;
2026-07-13 14:48:50 -05:00
}
//--- INTEGER
case LLMAGENT_BTOOLS_MODE_INTEGER:
{
2026-07-15 12:34:01 -05:00
m_shared_builder.KeyWV("ok").Val(true);
m_shared_builder.KeyWV("result").Val(TerminalInfoInteger(CEnumRegBasis::GetValNoRef<ENUM_TERMINAL_INFO_INTEGER>(param["property"].ToString(""), WRONG_VALUE)));
break;
2026-07-13 14:48:50 -05:00
}
//--- STRING
case LLMAGENT_BTOOLS_MODE_STRING:
{
2026-07-15 12:34:01 -05:00
m_shared_builder.KeyWV("ok").Val(true);
m_shared_builder.KeyWV("result").ValS(TerminalInfoString(CEnumRegBasis::GetValNoRef<ENUM_TERMINAL_INFO_STRING>(param["property"].ToString(""), WRONG_VALUE)));
break;
2026-07-13 14:48:50 -05:00
}
default:
2026-07-15 12:34:01 -05:00
{
m_shared_builder.KeyWV("ok").Val(false);
m_shared_builder.KeyWV("error").ValS(StringFormat("Invalid mode = %d", mode));
break;
}
2026-07-13 14:48:50 -05:00
}
2026-07-15 12:34:01 -05:00
m_shared_builder.EndObj();
m_shared_builder.PutChar('"');
2026-07-13 14:48:50 -05:00
}
};
}
//+------------------------------------------------------------------+
#endif // LLMAGENTSBASICTOOLS_SRC_UTILS_TERMINAL_INFO_MQH