Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Andrei, você precisa substituir os códigos anexados no artigo? Nesses casos, escreva para os moderadores para que eles façam isso, ok?
Sim, Rashid, você precisa atualizar o arquivo com os códigos. Escrevi pela primeira vez para o moderador sobre isso há alguns dias.
Bom dia , Andrey Voytenko! Obrigado pelo artigo, mas não consigo receber e enviar mensagens de alerta do Telegram da seguinte maneira (cada vez que retorna um alerta vazio, ou seja, o fato de uma nova mensagem é detectado, mas retorna uma variável vazia):
{
for(int i=0; i<m_chats.Total(); i++)
{
CCustomChat *chat=m_chats.GetNodeAtIndex(i);
//--- se a mensagem não for processada
if(!chat.m_new_one.done)
{
chat.m_new_one.done=true;
string text=chat.m_new_one.message_text;
Alert(text);
//--- início
if(text=="/start")
SendMessage(chat.m_id,"Hello, world! I am bot. \xF680");
//--- ajuda
if(text=="/help")
SendMessage(chat.m_id,"My commands list: \n/start-start chatting with me \n/help-get help");
}
}
}
Tentei criar um bot para enviar uma captura de tela para o telegram quando uma oferta aparece.
Ela é enviada de vez em quando por algum motivo, você poderia ver qual é o problema?
Somente este arquivo, que está no anexo.
Roman, se precisar do bot apenas para enviar capturas de tela, você pode fazer isso:
1. Peça ao @MyTelegramID_bot seu número de bate-papo.
2. Escreva um bot simples que verifique se há novos itens e envie imagens para o bate-papo com o ID especificado. Um exemplo é:
//+------------------------------------------------------------------+
//| Parâmetros de entrada|
//+------------------------------------------------------------------+
input ENUM_LANGUAGES InpLanguage=LANGUAGE_EN;//Língua
input string InpToken="";//Token
input long ChatId=0; / ID do bate-papo
//---
CCustomBot bot;
int pos_count;
//+------------------------------------------------------------------+
int OnInit()
{
bot.Token(InpToken);
int res=bot.GetMe();
if(res!=0)
{
Print(GetErrorDescription(res));
}
pos_count=PositionCount(_Symbol);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnTick()
{
int pos_count_new=PositionCount(_Symbol);
if(pos_count_new>pos_count)
{
pos_count=pos_count_new;
int result=SendScreenShot(ChatId,_Symbol,0,NULL);
if(result!=0)
Print(GetErrorDescription(result,InpLanguage));
}
}
//+------------------------------------------------------------------+
int PositionCount(const string _symbol)
{
int count=0;
int orders_total=OrdersTotal();
for(int i=0; i<orders_total; i++)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
PrintError(ERR_ORDER_SELECT);
return(-1);
}
//---
if(_symbol==NULL || OrderSymbol()==_symbol)
count++;
}
//---
return(count);
}
//+------------------------------------------------------------------+
int SendScreenShot(const long _chat_id,
const string _symbol,
const ENUM_TIMEFRAMES _period,
const string _template=NULL)
{
int result=0;
long chart_id=ChartOpen(_symbol,_period);
if(chart_id==0)
return(ERR_CHART_NOT_FOUND);
ChartSetInteger(ChartID(),CHART_BRING_TO_TOP,true);
//--- atualizar gráfico
int wait=60;
while(--wait>0)
{
if(SeriesInfoInteger(_symbol,_period,SERIES_SYNCHRONIZED))
break;
Sleep(500);
}
if(_template!=NULL)
if(!ChartApplyTemplate(chart_id,_template))
PrintError(_LastError,InpLanguage);
ChartRedraw(chart_id);
Sleep(500);
ChartSetInteger(chart_id,CHART_SHOW_GRID,false);
ChartSetInteger(chart_id,CHART_SHOW_PERIOD_SEP,false);
string filename=StringFormat("%s%d.gif",_symbol,_period);
if(FileIsExist(filename))
FileDelete(filename);
ChartRedraw(chart_id);
Sleep(100);
// if(ChartScreenShot(chart_id,filename,800,600,ALIGN_RIGHT))
if(ChartScreenShot(chart_id,filename,1024,768,ALIGN_RIGHT))
{
Sleep(100);
bot.SendChatAction(_chat_id,ACTION_UPLOAD_PHOTO);
//--- aguardando 30 segundos para salvar a captura de tela
wait=60;
while(!FileIsExist(filename) && --wait>0)
Sleep(500);
//---
string screen_id;
result=bot.SendPhoto(_chat_id,filename,screen_id,_symbol+"_"+StringSubstr(EnumToString(_period),7));
}
ChartClose(chart_id);
return(result);
}
//+------------------------------------------------------------------+
Obrigado por este tutorial,
Eu quero fazer um bot de telegrama para mt4, por favor me forneça qualquer tutorial para isso.
Agradecimentos
Que tal ler o artigo em questão? https://www.mql5.com/pt/articles/2355
Ele contém instruções passo a passo...
Você pode tentar e, se não funcionar, publique aqui e poderemos procurar a solução.
Hi,
Antes de mais nada, obrigado pela descrição detalhada, muito apreciada.
Desculpe se isso parece bobagem, mas eu queria experimentar o Telegram_signal_EA e esperava poder ter alertas disparados por um indicador enviado para um canal do Telegram, mas o código que você forneceu para isso no terceiro exemplo foi escrito para o MT4 ou MT5?

Quando eu copio e colo o código em um novo arquivo no MetaEditor e o compilo, recebo um monte de erros e não tenho a menor ideia do que isso significa. É claro que eu deveria dedicar um tempo para descobrir tudo, mas com o código que você forneceu não deve ser muito difícil conseguir o que eu quero, certo?
Se alguém estiver disposto a me ajudar ou me indicar a direção certa, eu ficaria muito grato.
Atenciosamente,
Patrick