2026-04-17 12:28:17 -05:00
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| 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"
|
2026-04-25 21:50:36 -05:00
|
|
|
#include <TSN\\MQLArticles\\Utils\\Basic.mqh>
|
2026-04-17 12:28:17 -05:00
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
class CChatTelegramAgentLLmBase : public CLoggerBase
|
|
|
|
|
{
|
|
|
|
|
protected:
|
|
|
|
|
long m_bot_chart_id;
|
|
|
|
|
double m_key;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
CChatTelegramAgentLLmBase(void);
|
|
|
|
|
~CChatTelegramAgentLLmBase(void);
|
|
|
|
|
|
|
|
|
|
//---
|
2026-07-17 17:20:14 -05:00
|
|
|
void RunEA(const string& ea_path_tlg,
|
|
|
|
|
const string& tbp_id, const string& folder_sql, bool comon);
|
2026-04-17 12:28:17 -05:00
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
void LLmMaxTokens(const int max);
|
|
|
|
|
void LlmApiKey(const string& token);
|
2026-07-12 22:38:00 -05:00
|
|
|
void LlmModelName(const string model_name);
|
2026-04-17 12:28:17 -05:00
|
|
|
|
|
|
|
|
//---
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
2026-07-17 17:20:14 -05:00
|
|
|
void CChatTelegramAgentLLmBase::RunEA(const string& ea_path_tlg,
|
|
|
|
|
const string& tbp_id, const string& folder_sql, bool comon)
|
2026-04-17 12:28:17 -05:00
|
|
|
{
|
|
|
|
|
//---
|
|
|
|
|
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
|
2026-04-17 15:45:52 -05:00
|
|
|
Sleep(250);
|
2026-04-17 12:28:17 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//---
|
2026-07-17 17:20:14 -05:00
|
|
|
MqlParam params[6];
|
|
|
|
|
//ArrayResize(params, 4);
|
2026-04-17 12:28:17 -05:00
|
|
|
params[0].type = TYPE_STRING;
|
|
|
|
|
params[0].string_value = ea_path_tlg;
|
2026-07-15 13:46:05 -05:00
|
|
|
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;
|
2026-07-15 18:18:57 -05:00
|
|
|
params[3].double_value = m_key;
|
2026-07-17 17:20:14 -05:00
|
|
|
params[4].type = TYPE_STRING;
|
|
|
|
|
params[4].string_value = folder_sql;
|
|
|
|
|
params[5].type = TYPE_BOOL;
|
|
|
|
|
params[5].integer_value = int(comon);
|
|
|
|
|
|
2026-07-15 13:46:05 -05:00
|
|
|
|
2026-04-17 12:28:17 -05:00
|
|
|
// 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));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
2026-07-12 22:38:00 -05:00
|
|
|
void CChatTelegramAgentLLmBase::LlmModelName(const string model_name)
|
2026-04-17 12:28:17 -05:00
|
|
|
{
|
|
|
|
|
::EventChartCustom(m_bot_chart_id, CHATELGRAM_E_ON_CHANGE_PARAM,
|
2026-07-12 22:38:00 -05:00
|
|
|
TLGM_RECIBER_PARAM_MODELNAME, m_key, model_name);
|
2026-04-17 12:28:17 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
//| |
|
|
|
|
|
//+------------------------------------------------------------------+
|
|
|
|
|
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
|