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

 
Valeriy Yastremskiy #:

Ja, ich verstehe es nicht, ich weiß es nicht, ich kann auch nicht mit dem Namen an den Bot senden, nur mit der ID. Wie schickt man es an sich selbst? Oder besser gesagt, wie bekommst du deine ID in den Warenkorb? Ich bekomme sie nur an den Bot.

Ich erhalte jede ID über den Bot Get My ID

 
Andrey Kaunov #:

Ich erhalte jede ID über den Get My ID-Bot.

Ja, ich habe meine ID und den Bot verwechselt. Wir senden an uns selbst in einer privaten Nachricht von unserem eigenen Bot))))

Aus Andrei's Artikel

Es ist zu beachten, dass wir in diesen Beispielen die chat_id als Empfänger der Nachricht übergeben. Wir können ihn nicht im Voraus kennen, um eine Nachricht an den Benutzer zu senden, bis er/sie anfängt, mit dem Bot zu chatten. Es gibt auch keine Möglichkeit, den Benutzer über seine Handynummer oder seinen @Benutzernamen zu kontaktieren. Dies geschieht natürlich aus Sicherheitsgründen, damit die Bots keinen Spam versenden. Bots können jedoch Nachrichten im Kanal veröffentlichen, indem sie den Benutzer mit seinem Namen ansprechen und die zweite SendMessage-Option verwenden.

[Gelöscht]  

Hallo,

Ich versuche, eine neue Sprache zur Suchdatei hinzuzufügen, aber ich habe diese Hexparameter, deren Bedeutung ich nicht verstehe:

TLanguage languages[6]=
{
   {"English","\xF1EC\xF1E7","en"},
   {"Русский","\xF1F7\xF1FA","ru"},
   {"中文",    "\xF1E8\xF1F3","zh"},
   {"Español","\xF1EA\xF1F8","es"},
   {"Deutsch","\xF1E9\xF1EA","de"},
   {"日本語",   "\xF1EF\xF1F5","ja"}
};

Was ist das \xF1EC\xF1E7 in der englischen Sprache, zum Beispiel, und wie es zu konvertieren, um pt Flagge zu erhalten?

 

Ich hatte letzte Woche eine Störung - die Funktion zum Lesen der Nachrichtenwarteschlange von Telegram funktioniert nicht mehr. D.h. ausgehende Nachrichten werden wie bisher gesendet, sowohl Text als auch Screenshots, aber die Funktion GetUpdates() gibt nichts zurück, die Chat-Warteschlange ist immer leer.

Ist jemandem eine solche Störung aufgefallen? Was kann der Grund dafür sein?

 
Hallo!
Vielen Dank für diese Art von Arbeit!!!!
Könnten Sie mir bitte sagen, wie ich Schriftart, Hintergrund und Textfarbe ändern kann?
Danke
 
lbgraf #:
Hallo!
Vielen Dank für diese Art von Arbeit!!!!
Könnten Sie mir bitte sagen, wie ich Schriftart, Hintergrund und Textfarbe ändern kann?
Danke

Alle Tags sind in den Dokumenten zur Telegram API beschrieben.

 

Hallo Leute,

Ich habe den Code für das Senden von Nachrichten aus Telegramm zu mt5 abgeschlossen, aber ich bin mit einem kleinen Fehler, beim Senden von Close-Befehl von vielen Close-Befehle zur gleichen Zeit, kann es nur eine Bestellung, aber nicht viele Aufträge zu senden.

Kann mir jemand helfen, zu sehen, wo ich falsch gehe?

//--- jetzt die Liste der geschlossenen Positionen bearbeiten
   max_time = 0;
   double day_profit = 0;
   bool is_closed = false;
   int totalhis = hist_position.PositionsTotal();
   for(int i = 0; i < totalhis; i++) {
      //---
      pos_symbol = PositionGetSymbol(i); // Abrufen des Symbolnamens
      digits = (int)SymbolInfoInteger(pos_symbol, SYMBOL_DIGITS); // Ermittelt die Anzahl der Ziffern des Preises
      //--- Auswahl einer geschlossenen Position anhand ihres Index in der Liste
      if(hist_position.SelectByIndex(i)) {
         ulong    ticket            = hist_position.Ticket();
         datetime time_open         = hist_position.TimeOpen();
         ulong    time_open_msc     = hist_position.TimeOpenMsc();
         datetime time_close        = hist_position.TimeClose();
         ulong    time_close_msc    = hist_position.TimeCloseMsc();
         long     type              = hist_position.PositionType();
         string   type_desc         = hist_position.TypeDescription();
         long     magic             = hist_position.Magic();
         long     pos_id            = hist_position.Identifier();
         double   volume            = hist_position.Volume();
         double   price_open        = hist_position.PriceOpen();
         double   price_sl          = hist_position.StopLoss();
         double   price_tp          = hist_position.TakeProfit();
         double   price_close       = hist_position.PriceClose();
         double   commission        = hist_position.Commission();
         double   swap              = hist_position.Swap();
         double   profit            = hist_position.Profit();
         string   symbol            = hist_position.Symbol();
         string   open_comment      = hist_position.OpenComment();
         string   close_comment     = hist_position.CloseComment();
         string   open_reason_desc  = hist_position.OpenReasonDescription();
         string   close_reason_desc = hist_position.CloseReasonDescription();
         string   deal_tickets      = hist_position.DealTickets(",");
         //---
         int      deals_count       = HistoryDealsTotal();   // der ausgewählten Position
         int      orders_count      = HistoryOrdersTotal();  // der ausgewählten Position
         
         if(TimeToString(TimeCurrent(), TIME_DATE) == TimeToString(time_close, TIME_DATE)) {
            day_profit += profit + swap + commission;
         }
         if(time_close <= _closed_last_time) continue;
         //is_closed = true;
         string msg = StringFormat
                      (
                         "ACCOUNT: { #%s } \n" +
                         "------------ { CLOSE } -----------\n" +
                         "CLOSE ORDER - %s %s\n" +
                         "Time (GTM+0): %s\n" +
                         "------------ { CLOSE } -----------\n" +
                         "Volume: %s\n" +
                         "Open Price: %s\n" +
                         "Close Price: %s\n" +
                         "Gain/Loss: %s USD\n" +
                         "---TOTAL PROFIT TODAY---\n" +
                         "%s USD\n",
                         IntegerToString(login),
                         symbol,
                         PositionTypeToString(type),
                         TimeToString(time_close, TIME_DATE | TIME_SECONDS),
                         DoubleToString(volume, 2),
                         DoubleToString(price_open, digits),
                         DoubleToString(price_close, digits),
                         DoubleToString(profit, 2),
                         DoubleToString(day_profit, 2)
                      );
         
         int res = bot.SendMessage(InpChannelName, msg);
         if(res != 0)
            Print("Error: ", GetErrorDescription(res));
         max_time = MathMax(max_time, time_close);
      }
      _closed_last_time = MathMax(max_time, _closed_last_time);
   }
 
Bui Huy Dat #:

Hallo Leute,

Ich habe den Code für das Senden von Nachricht von Telegramm zu mt5 abgeschlossen, aber ich bin mit einem kleinen Fehler, beim Senden von schließen-Befehl von vielen schließen-Befehle zur gleichen Zeit, es kann nur eine Bestellung, aber nicht viele Aufträge senden.

Kann mir jemand helfen, zu sehen, wo ich falsch gehe?

Unsachgemäß formatierter Code vom Moderator entfernt. @Bui Huy Dat Bitte EDITIEREN Sie Ihren Beitrag und verwenden Sie die CODE-Taste, wenn Sie Code einfügen.

Wenn Sie viele Nutzer über den Bot bedienen, gibt es ein Limit von 30 Interaktionen pro Sekunde, glaube ich.

 
Lorentzos Roussos #:

Wenn Sie viele Nutzer über den Bot bedienen, gibt es ein Limit von 30 Interaktionen pro Sekunde, glaube ich.

Ich benutze ihn nur persönlich und nur, um jedes mt5-Konto an Telegram zu senden.
aber wenn man den Befehl gleichzeitig öffnet oder schließt, kann er nur eine Nachricht an Telegram senden

 
Bui Huy Dat #:

Ich benutze es nur persönlich und nur, um jedes mt5-Konto an Telegram zu senden.
aber wenn ich den Befehl gleichzeitig öffne oder schließe, kann er nur eine Nachricht an Telegram senden

Es gab keinen Code, als ich antwortete, ich sehe, dass Sie die bot.SendMessage mit einer Funktion ersetzen können, die die Nachricht zu einer Burst-Liste hinzufügt. Man könnte die Nachricht auch weiter wachsen lassen und sie aus der Schleife heraus senden, aber da würde man auf Zeichenbeschränkungen stoßen.

Ein kurzes Schema könnte wie folgt aussehen:

  1. Sie haben ein String-Array namens "Postausgang".
  2. Ein Zeitintervall, in dem Sie die Outbox verarbeiten, also "OnTimer()" (Sie verwenden es vielleicht schon, wenn Sie auch aus Telegramm lesen)
  3. Sie erzwingen dann selbst eine Millisekundengrenze zwischen den einzelnen Nachrichten, nicht mit der Funktion Sleep(), sondern indem Sie sich merken, wann die letzte Nachricht gesendet wurde
  4. Sie können GetTickCount() für die Abfrage von Millisekunden verwenden, und Sie würden die letzten ms, die die Nachricht verlassen hat, speichern und von den aktuellen ms abziehen, um den zeitlichen Abstand zu erhalten, wobei es sehr, sehr selten vorkommt, dass die Endzeit < der Startzeit ist, in diesem Fall machen Sie folgendes: (UINT_MAX-start_time+end_time)
  5. Wenn der Abstand in Millisekunden seit der letzten Nachricht größer ist als das Limit in Millisekunden, dann wird die nächste Nachricht aus der Outbox gesendet
  6. Anstatt bot.SendMessage in der Schleife aufzurufen, rufen Sie nun Outbox.add_message_for_sending oder ähnliches auf.
  7. Mit einer Änderung, die auch die Chat-IDs speichert, könnte man auch speichern, wohin die Nachricht geht, und das wäre die Lösung für mehrere Benutzer.