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

 
Jefferson Metha #:

In der rechten oberen Ecke befindet sich ein Lupensymbol, das auch als Suchsymbol bekannt ist.
Klicken Sie mit der linken Maustaste darauf
und geben Sie dann
" Binance"
Drücken Sie die [ENTER]-Taste auf Ihrem Desktop

und Sie werden sie erhalten, ohne nach unten scrollen zu müssen.

Herzlich willkommen

Danke, ich habe die Bibliothek gefunden

 
HOW getfile zu BOT für Benutzer Download-Datei
 
telegram bot inputFile

Wie man das schreibt

Mein Englisch ist nicht gut, sorry danke
 

Toller Artikel. Es funktioniert. Kann ich Ihnen eine nubische Frage stellen. In den Indikatoren heißt es, dass die URL für WebRequest nicht erlaubt ist.

Verstehe ich das richtig, dass WebRequest in Indikatoren nicht funktioniert ?

Ich habe es herausgefunden. Synchrone Pausen. Es funktioniert nicht. Das ist schade.


	          
 
Valeriy Yastremskiy WebRequest in Indikatoren nicht erlaubt

Verstehe ich das richtig, dass WebRequest in Indikatoren nicht funktioniert?

Es funktioniert nicht

 
Vitaly Muzichenko #:

Es funktioniert nicht

Aber es funktioniert in der Testversion)) SendNotification müssen. Nicht so bequem, und es funktioniert nicht in der Testversion.

 

Hilfe bitte, ich bin verwirrt. Wie kann man programmatisch die ID des Chats in einer globalen Variable erhalten, wenn man das Token des Bots kennt. Es ist klar, dass man verschiedene Bots nach der ID fragen kann, aber ich möchte das programmatisch machen.

Es gibt eine Schleife in der Funktion ProcessMessage, die die gesuchte Nummer ermittelt, aber sie gibt oft Null zurück, und ich kann mich nicht daran erinnern.

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2022.02.10
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
Eine weitere Frage. Ist es möglich, mit dem Token des Bots die Chat-ID des Benutzers, der diesen Bot erstellt hat, von Telegram zu erhalten, ohne eine Nachricht vom Bot zu senden. Wir erhalten den Namen des Bots durch den Token.
 
auf mq5 Seite "chat.m_new_one.message_text" erhält die Nachricht, die der Benutzer direkt an den Bot sendet, was großartig ist.
Kann es jedoch verwendet werden, um die Nachricht zu erhalten, die an den Kanal gesendet wird, in dem der Bot (derjenige, der mit dem mt5 EA kommuniziert) ein Mitglied ist?
 

Hallo Freunde, ich verwende den folgenden Code, um eine Nachricht an Telegram zu senden. Mein Problem ist, dass eine Nachricht nicht nur einmal, sondern mehrmals gesendet wird.

bitte führen Sie mich.

#include <Telegram\TelegramL.mqh>


input string InpChannelName="";//Kanalname
input string InpToken="";//Bot Token


CCustomBot bot;

datetime time_signal=0;
//int SendMessage(const string channel_name,
                //const string text);




//+------------------------------------------------------------------+
//| Experten-Initialisierungsfunktion|
//+------------------------------------------------------------------+
int OnInit()
  {
   time_signal=0;

//--- Token setzen
   bot.Token(InpToken);


//--- erledigt
   return(INIT_SUCCEEDED);
  }
 
  datetime _opened_last_time = TimeCurrent() ;
  datetime _closed_last_time = TimeCurrent()  ;
  
 

//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)

{

}
     
  
//+------------------------------------------------------------------+
//| Experten-Tick-Funktion|
//+------------------------------------------------------------------+
void OnTick()
  {
  

   string message = "";
   int total=OrdersTotal();
 
       
   for(int pos=0;pos<total;pos++){  // Aktuelle Aufträge -----------------------
     if(OrderSelect(pos,SELECT_BY_POS)==false) continue;
     if(OrderOpenTime() <= _opened_last_time) continue;
     
     message += StringFormat("Order opened!\r\nType: %s\r\nSymbol: %s\r\nPrice: %s\r\nSL: %s\r\nTP: %s\r\nTime: %s\r\nTicket:.%s ",
     order_type(),
     OrderSymbol(),
     DoubleToStr(OrderOpenPrice(),MarketInfo(OrderSymbol(),MODE_DIGITS)),
     DoubleToStr(OrderStopLoss(),MarketInfo(OrderSymbol(),MODE_DIGITS)),
     DoubleToStr(OrderTakeProfit(),MarketInfo(OrderSymbol(),MODE_DIGITS)),
     TimeToStr(OrderOpenTime(),TIME_MINUTES),
     IntegerToString(OrderTicket())
          
      );
    
     int res=bot.SendMessage(InpChannelName,message);
     if(res!=0)
         Print("Error: ",GetErrorDescription(res));
     
     }
  
      
  
      bool is_closed = false;

                   
  total = OrdersHistoryTotal();
      
   for(int pos=0;pos<total;pos++){  // Geschichte Bestellungen-----------------------
      if(OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY)==false) continue;
      if(OrderCloseTime() <= _closed_last_time) continue;
     printf(OrderCloseTime());
     is_closed = true;
     
     message += StringFormat("Order closed!\r\nTicket: %s\r\nSymbol: %s\r\nClosing Price: %s\r\nTime: %s",
     IntegerToString(OrderTicket()),
     OrderSymbol(),
     DoubleToStr(OrderClosePrice(),MarketInfo(OrderSymbol(),MODE_DIGITS)),
     TimeToStr(OrderCloseTime(),TIME_MINUTES),
     DoubleToStr(order_pips(),1)
     
    
     );
      
      int res=bot.SendMessage(InpChannelName,message);
     if(res!=0)
         Print("Error: ",GetErrorDescription(res));
      
     }
 
   }
   
   
double order_pips() {
   double pips;
   
   if(OrderType() == OP_BUY) {
      pips =  (OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
   } else {
      pips =  (OrderOpenPrice()-OrderClosePrice())/MarketInfo(OrderSymbol(),MODE_POINT);
   }
   return pips/10;
}

string order_type_to_str(int type)
{
   return StringSubstr(EnumToString((ENUM_ORDER_TYPE)type), 11);
}
string order_type () {
   return order_type_to_str(OrderType());
   
   if(OrderType() == OP_BUY)        return "BUY";
   if(OrderType() == OP_SELL)       return "SELL";
   if(OrderType() == OP_BUYLIMIT)   return "BUY LIMIT";
   if(OrderType() == OP_SELLLIMIT)  return "SELL LIMIT";
   if(OrderType() == OP_BUYSTOP)    return "BUYSTOP";
   if(OrderType() == OP_SELLSTOP)   return "SELLSTOP";
   
   return "{err}";
}
   

   
//---