Diskussion zum Artikel "Die Erstellung des Bots für Telegram in der Sprache MQL5" - Seite 5

Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Andrei, müssen Sie die beigefügten Codes im Artikel ersetzen? Bitte schreiben Sie in solchen Fällen an die Moderatoren, um es zu tun, okay?
Ja, Rashid, Sie müssen das Archiv mit den Codes aktualisieren. Ich habe den Moderator schon vor ein paar Tagen darauf hingewiesen.
Guten Tag Andrey Voytenko! Vielen Dank für den Artikel, aber ich kann nicht empfangen und Ausgabe in Alert-Nachricht von Telegram in der folgenden Weise (jedes Mal gibt einen leeren Alarm, das heißt, die Tatsache einer neuen Nachricht erkannt wird, sondern gibt eine leere Variable):
{
for(int i=0; i<m_chats.Total(); i++)
{
CCustomChat *chat=m_chats.GetNodeAtIndex(i);
//--- wenn die Nachricht nicht verarbeitet wird
if(!chat.m_new_one.done)
{
chat.m_new_one.done=true;
string text=chat.m_new_one.message_text;
Alert(text);
//--- Start
if(text=="/start")
SendMessage(chat.m_id,"Hello, world! I am bot. \xF680");
//--- Hilfe
if(text=="/help")
SendMessage(chat.m_id,"My commands list: \n/start-start chatting with me \n/help-get help");
}
}
}
Ich habe versucht, einen Bot für mich selbst zu erstellen, um einen Screenshot an Telegram zu senden, wenn ein Geschäft erscheint.
Es wird immer wieder aus irgendeinem Grund gesendet, könnten Sie sehen, was das Problem ist?
nur diese Datei, die im Anhang ist.
Roman, wenn Sie den Bot nur zum Senden von Screenshots benötigen, können Sie dies tun:
1. Frag den @MyTelegramID_bot nach deiner Chatnummer.
2. Schreiben Sie einen einfachen Bot, der nach neuen Elementen sucht und Bilder an den Chat mit der angegebenen ID sendet. Ein Beispiel ist:
//+------------------------------------------------------------------+
//| Eingabeparameter|
//+------------------------------------------------------------------+
input ENUM_LANGUAGES InpLanguage=LANGUAGE_EN;//Sprache
input string InpToken="";//Token
input long ChatId=0; //Chat-ID
//---
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);
//--- Diagramm aktualisieren
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);
//--- 30 Sekunden warten, um Bildschirmfoto zu speichern
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);
}
//+------------------------------------------------------------------+
Vielen Dank für dieses Tutorial,
Ich möchte ein Telegram Bot für mt4 machen bitte bieten Sie mir ein Tutorial für diese.
Danke
Wie wäre es, den eigentlichen Artikel zu lesen? https://www.mql5.com/de/articles/2355
Er enthält eine Schritt-für-Schritt-Anleitung...
Sie können es versuchen, und wenn es nicht funktioniert, dann posten Sie hier und wir können nach der Lösung suchen.
Hallo,
zunächst einmal vielen Dank für die detaillierte Beschreibung, sehr geschätzt.
Verzeihen Sie, wenn dies klingt dumm, aber ich wollte versuchen, die Telegram_signal_EA und war in der Hoffnung, ich könnte Alarme durch einen Indikator abgefeuert werden, die an einen Telegram-Kanal gesendet, jedoch der Code, den Sie für diese im dritten Beispiel gab, wurde es für MT4 oder MT5 geschrieben?

Wenn ich den Code kopiere und in eine neue Datei in MetaEditor einfüge und kompiliere, erhalte ich eine ganze Reihe von Fehlern, und ich habe keine Ahnung, was das bedeutet. Sicherlich sollte ich Zeit investieren, um das alles herauszufinden, aber mit dem von Ihnen angegebenen Code sollte es nicht allzu schwierig sein, das zu erreichen, was ich will, oder?
Wenn jemand bereit ist, mir zu helfen oder mir die richtige Richtung zu zeigen, wäre ich wirklich dankbar.
Mit freundlichen Grüßen,
Patrick