//+------------------------------------------------------------------+ //| 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 #include "Def.mqh" #include //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ 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