// Create a Telegram object
CTrade trade
CTelegram telegram
No terminating semicolons.
I'm sorry, William, but I'm new to programming and still have some difficulty understanding most of the logic, but I want to learn. You said my file won't compile. Have you seen the complete file I posted? I confess to you that I didn't understand what's missing in my code for it to compile. Could you please detail the step-by-step process for me to resolve the problem? If you prefer, you can correct the file and explain the corrections to me, and then return it to me; I would be very grateful.
Lokk my code below:
As you can see, I have created
// Create a Telegram object
CTrade trade
CTelegram telegram
Look below
//+------------------------------------------------------------------+
//| Telegram EA |
//| |
//+------------------------------------------------------------------+
#property copyright "SAS"
#property link ""
#property version "1.10"
#property strict
// Include the Telegram library
#include <Telegram.mqh>
#include <Trade/Trade.mqh>
// Create a Telegram object
CTrade trade
CTelegram telegram
// Define the input parameters
input string TelegramToken = "";
input string TelegramChatID = "";
input double Lots = 0.1;
input int MaxRetries = 3; // Número máximo de tentativas de conexão com o Telegram
// Define a struct to hold order parameters
struct OrderParameters {
string symbol;
double price;
double stopLoss;
double takeProfit;
};
// Define the order prefixes
input string BuyOrderPrefix = "🟢 COMPRA ↗️";
input string SellOrderPrefix = "🔴 VENDA ↘️";
input string CloseOrderPrefix = "🚪ATENÇÃO SAIR";
// Define the order types enumeration
enum OrderTypes {
BUY,
SELL,
CLOSE
};
// Define the timer interval
input int TimerIntervalMilissegs = 500; // Intervalo de verificação em milissegundos
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Iniciar o timer para verificar mensagens do Telegram
EventSetTimer(TimerIntervalMilissegs);
// Conectar ao Telegram com tratamento de exceções
int retries = 0;
while (!telegram.Connect(TelegramToken) && retries < MaxRetries)
{
Print("Erro ao conectar ao Telegram. Tentando novamente...");
retries++;
Sleep(1000); // Aguardar 1 segundo antes da próxima tentativa
}
if (retries == MaxRetries)
{
Print("Não foi possível conectar ao Telegram após várias tentativas. Encerrando o Expert Advisor.");
return INIT_FAILED;
}
Print("Conectado ao Telegram com sucesso!");
return INIT_SUCCEEDED;
}
// Restante do código...
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Parar o timer
EventKillTimer();
// Desconectar do bot do Telegram
telegram.Disconnect();
Print("Desconectado do Telegram.");
}
//+------------------------------------------------------------------+
//| Timer event handler |
//+------------------------------------------------------------------+
void OnTimer()
{
Print("Verificando mensagens do Telegram...");
// Obter as últimas mensagens do Telegram
string updates = telegram.GetUpdates();
// Verificar se há novas mensagens
int messageCount = telegram.MessageCount(updates);
for (int i = 0; i < messageCount; i++)
{
// Obter o texto da mensagem
string messageText = telegram.MessageText(updates, i);
// Verificar se a mensagem é do contato autorizado
if (StringFind(messageText, TelegramChatID) == 0)
{
Print("Mensagem do contato autorizado recebida!");
// Verificar se a mensagem indica uma operação de compra
if (StringFind(messageText, BuyOrderPrefix) != -1)
{
ExecuteTradeOrder(messageText, OrderTypes::BUY);
}
// Verificar se a mensagem indica uma operação de venda
else if (StringFind(messageText, SellOrderPrefix) != -1)
{
ExecuteTradeOrder(messageText, OrderTypes::SELL);
}
// Verificar se a mensagem indica fechamento de operação
else if (StringFind(messageText, CloseOrderPrefix) != -1)
{
ExecuteTradeOrder(messageText, OrderTypes::CLOSE);
}
}
}
}
//+------------------------------------------------------------------+
//| Função para executar operações de trading |
//+------------------------------------------------------------------+
void ExecuteTradeOrder(string& message, OrderTypes orderType)
{
Print("Executando ordem de trading...");
// Extrair o símbolo do ativo da mensagem
int symbolStart = StringFind(message, "📣📣📣") + 6;
int symbolEnd = StringFind(message, "📣📣📣", symbolStart);
string symbol = StringSubstr(message, symbolStart, symbolEnd - symbolStart);
// Extrair os parâmetros da ordem da mensagem
OrderParameters orderParams;
orderParams.symbol = symbol;
orderParams.price = ExtractParameter(message, "Preço de Abertura:");
orderParams.stopLoss = ExtractParameter(message, "Stop Loss:");
orderParams.takeProfit = ExtractParameter(message, "Take Profit:");
// Executar a operação correspondente
if (orderType == OrderTypes::BUY)
{
// Executar operação de compra
ExecuteBuyOrder(orderParams);
}
else if (orderType == OrderTypes::SELL)
{
// Executar operação de venda
ExecuteSellOrder(orderParams);
}
else if (orderType == OrderTypes::CLOSE)
{
// Fechar operação
CloseTrade(orderParams);
}
}
//+------------------------------------------------------------------+
//| Função para executar uma ordem de compra |
//+------------------------------------------------------------------+
void ExecuteBuyOrder(OrderParameters& params)
{
Print("Executando ordem de compra...");
// Implementar a lógica para executar a ordem de compra
if (trade.Buy(Lots, params.symbol, params.price, params.stopLoss, params.takeProfit))
{
Print("Ordem de compra executada com sucesso!");
}
else
{
Print("Erro ao executar a ordem de compra.");
}
}
//+------------------------------------------------------------------+
//| Função para executar uma ordem de venda |
//+------------------------------------------------------------------+
void ExecuteSellOrder(OrderParameters& params)
{
Print("Executando ordem de venda...");
// Implementar a lógica para executar a ordem de venda
if (trade.Sell(Lots, params.symbol, params.price, params.stopLoss, params.takeProfit))
{
Print("Ordem de venda executada com sucesso!");
}
else
{
Print("Erro ao executar a ordem de venda.");
}
}
//+------------------------------------------------------------------+
//| Função para fechar uma operação de trading |
//+------------------------------------------------------------------+
void CloseTrade(OrderParameters& params)
{
Print("Fechando operação de trading...");
// Implementar a lógica para fechar a operação
if (trade.PositionClose(params.symbol))
{
Print("Operação fechada com sucesso!");
}
else
{
Print("Erro ao fechar a operação.");
}
}
//+------------------------------------------------------------------+
//| Função para extrair um parâmetro da mensagem do Telegram |
//+------------------------------------------------------------------+
double ExtractParameter(string message, string parameterName)
{
Print("Extraindo parâmetro da mensagem do Telegram...");
int start = StringFind(message, parameterName) + StringLen(parameterName);
int end = StringFind(message, "\n", start);
string valueStr = StringSubstr(message, start, end - start);
return StringToDouble(valueStr);
}
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Hey guys,
I have a problem with "telegram undeclared identifier in the attached code.
I've tried every way but I haven't been able to resolve it.
If anyone knows and can solve it I would really appreciate it.
tks
Samuel