AiFullTab/Src/Tlg/TlgmSend.mqh
Nique_372 f214332240
2026-07-17 17:20:14 -05:00

233 lines
9 KiB
MQL5

//+------------------------------------------------------------------+
//| Tlgm.mqh |
//| Copyright 2025, Niquel Mendoza. |
//| https://www.mql5.com/es/users/nique_372 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, Niquel Mendoza."
#property link "https://www.mql5.com/es/users/nique_372"
#property strict
#ifndef AIFULLTAB_SRC_TLG_TLGMSEND_MQH
#define AIFULLTAB_SRC_TLG_TLGMSEND_MQH
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
#include "..\\..\\..\\TelegramByLeo\\Telegram.mqh"
#include "..\\..\\..\\Xoshiro256\\Xoshiro256.mqh"
#include <TSN\\ExtraCodes\\Expert.mqh>
#include "Def.mqh"
#include <TSN\\MQLArticles\\Utils\\Basic.mqh>
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
class CChatTelegramAgentLLmBase : public CLoggerBase
{
protected:
long m_bot_chart_id;
double m_key;
public:
CChatTelegramAgentLLmBase(void);
~CChatTelegramAgentLLmBase(void);
//---
void RunEA(const string& ea_path_tlg,
const string& tbp_id, const string& folder_sql, bool comon);
//---
void LLmMaxTokens(const int max);
void LlmApiKey(const string& token);
void LlmModelName(const string model_name);
//---
bool LLmMemoryLoad(const string& file_name, int extra_file_flags);
bool LLmMemorySave(const string& file_name, int extra_file_flags);
//---
void TlgChatId(const long chat_id);
void TlgToken(const string token);
//---
void GeneralConfig(const string& file_name, int extra_file_flags);
//---
void TlgConnectReconect(bool conect);
//---
//void ChartEvent(const int32_t id, const long& lparam, const double& dparam, const string& sparam);
};
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
CChatTelegramAgentLLmBase::CChatTelegramAgentLLmBase(void)
: m_bot_chart_id(-1)
{
//---
Xoshiro256 random;
m_key = double(random.RandomLong(1, 10000000));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
CChatTelegramAgentLLmBase::~CChatTelegramAgentLLmBase(void)
{
if(m_bot_chart_id != -1)
::ChartClose(m_bot_chart_id);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CChatTelegramAgentLLmBase::RunEA(const string& ea_path_tlg,
const string& tbp_id, const string& folder_sql, bool comon)
{
//---
const long chart_id = ChartID();
//---
::ResetLastError();
m_bot_chart_id = OpenChartAndDevoler(chart_id, _Symbol, _Period, 225);
if(m_bot_chart_id == -1)
{
LogFatalError(StringFormat("Fallo al abrir grafico, ultimo error = %d", ::GetLastError()), FUNCION_ACTUAL);
Remover();
return;
}
//--- Check sincronizacion del grafico
while(ChartGetInteger(m_bot_chart_id, CHART_VISIBLE_BARS) < 1)
{
// Espera para la siguiente iteracion
Sleep(250);
}
//---
MqlParam params[6];
//ArrayResize(params, 4);
params[0].type = TYPE_STRING;
params[0].string_value = ea_path_tlg;
params[1].type = TYPE_STRING;
params[1].string_value = tbp_id;
params[2].type = TYPE_LONG;
params[2].integer_value = chart_id;
params[3].type = TYPE_DOUBLE;
params[3].double_value = m_key;
params[4].type = TYPE_STRING;
params[4].string_value = folder_sql;
params[5].type = TYPE_BOOL;
params[5].integer_value = int(comon);
// permitimos DLL para que tlgbot pueda usar tools mas complejas
if(!EXPERT::Run(m_bot_chart_id, params, EXPERT_PERMISOS_FLAG_DLL))
{
//---
::ChartClose(m_bot_chart_id);
//---
LogError("Fallo al correr EA runner", FUNCION_ACTUAL);
Remover();
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CChatTelegramAgentLLmBase::LlmApiKey(const string& token)
{
::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_APIKEY, m_key, token);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CChatTelegramAgentLLmBase::TlgToken(const string token)
{
::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_TOKEN, m_key, token);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CChatTelegramAgentLLmBase::TlgChatId(const long chat_id)
{
::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_CHATID, m_key, string(chat_id));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CChatTelegramAgentLLmBase::LlmModelName(const string model_name)
{
::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_MODELNAME, m_key, model_name);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CChatTelegramAgentLLmBase::LLmMaxTokens(const int max)
{
::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_MAXTOKENS, m_key, string(max));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CChatTelegramAgentLLmBase::GeneralConfig(const string &file_name, int extra_file_flags)
{
::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_CONFIG, m_key, (string(extra_file_flags) + "|" + file_name));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void CChatTelegramAgentLLmBase::TlgConnectReconect(bool conect)
{
::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_STATE, m_key, string(int(conect)));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CChatTelegramAgentLLmBase::LLmMemoryLoad(const string &file_name, int extra_file_flags)
{
::ResetLastError();
if(! ::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_LOAD_MEMORY, m_key, (string(extra_file_flags) + "|" + file_name)))
{
LogError(StringFormat("Fallo al enviar evento custom de load mem en model, ultimo error = %d", ::GetLastError()), FUNCION_ACTUAL);
return false;
}
return true;
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
bool CChatTelegramAgentLLmBase::LLmMemorySave(const string &file_name, int extra_file_flags)
{
if(!::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
TLGM_RECIBER_PARAM_SAVE_MEMORY, m_key, (string(extra_file_flags) + "|" + file_name)))
{
LogError(StringFormat("Fallo al enviar evento custom de save mem en model, ultimo error = %d", ::GetLastError()), FUNCION_ACTUAL);
return false;
}
return true;
}
//+------------------------------------------------------------------+
#endif // AIFULLTAB_SRC_TLG_TLGMSEND_MQH