記事"MQL5言語でのTelegram用ボットの作成"についてのディスカッション - ページ 24

 

こんにちは、


私のボットが同じメッセージを何度も送信しているのですが、どこに問題があるのでしょうか?


ありがとうございます。

 
thegosutrader:

こんにちは、


私のボットが同じメッセージを何度も送信しています。


ありがとうございます。

外部のウェブサイトにリンクする代わりに、ここにコードを添付してください。

 
Keith Watford:

外部サイトへのリンクではなく、ここにコードを添付してください。

ボットが同じメッセージを何度も送信しています。ログには次のように書かれています:"Too many requests: retry after 10","parameters":{"retry_after":10}

これが私のmq4ファイルです:

#include <Telegram.mqh>


input string InpChannelName="@xxx";//チャンネル名
input string InpToken="1049045330:AxxxxxxbFxxx0-IxwKXyxxxxxxxx";//ボット・トークン


CCustomBot bot;

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




//+------------------------------------------------------------------+
//| エキスパート初期化関数|
//+------------------------------------------------------------------+
int OnInit()
  {
   time_signal=0;

//--- トークンを設定する
   bot.Token(InpToken);


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

//+------------------------------------------------------------------+
|エキスパート初期化関数|
//+------------------------------------------------------------------+
void OnDeinit(const int reason)

{

}
     
  
//+------------------------------------------------------------------+
//| エキスパート・ティック機能|
//+------------------------------------------------------------------+
void OnTick()
  {
  

   string message = "";
   int total=OrdersTotal();
  
        
   for(int pos=0;pos<total;pos++){  // 現在のオーダー
     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++){  // 履歴の注文
      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}";
}
   

   
//---

ありがとうございました。

 
Antonio Vargas:

こんにちは!彼らはまた、プライベートチャンネルで動作するので、私は何とかやって、すべてがTelegram.mqhにあり、 "@"が配置されているファイルの一部があり、私がやったことは "-"で置き換えられ、InpChannelName変数とチャンネルの名前を配置する際に、次の "-10014749xxxxx"、ボットとチャンネルのトークン

こんにちは、

プライベートチャンネルに送信したい場合

1) Telegram.mqhの1009行目と1010行目の"@"を"-"に置き換える

2) mq4ファイルに、チャンネル・トークンを-1000xxxxで始まるように記述する:InpChannelName="-10000xxxx";//チャンネル名

チャンネルをプライベートに設定すると、メッセージが表示されるはずです。

幸運を祈ります。

ファイル:
 

こんにちは、


複数のメッセージが送信された場合、MT4ジャーナルで表示されるエラーメッセージは以下のとおりです:


{"ok":false, "error_code":429, "description": "Too Many Requests: retry after 11","parameters":{"retry_after":11}} と表示されます。


そして


エラー不明なエラー66965


ご協力ありがとうございました。

 
thegosutrader:

こんにちは、

プライベートチャンネルに送信したい方へ、

1) Telegram.mqhの1009行目と1010行目の"@"を"-"に置き換えてください(添付画像 参照)、

2) mq4ファイルに、チャンネル・トークンを-1000xxxxで始まるように記述する:InpChannelName="-10000xxxx";//チャンネル名

チャンネルをプライベートに設定すると、メッセージが表示されるはずです。

がんばってください。

ということは、すでに"@"を"-"に変更してプライベート・チャンネルに設定している場合、パブリック・チャンネルに送信したいときは、もう一度"@"を"-"に戻せばいいのですか?


ありがとうございます。

 
Agus Wahyu Pratomo:

ということは、"@"を"-"に変更してプライベート・チャンネルに設定した後、パブリック・チャンネルに送信したい場合は、もう一度変更し直せばいいのですか?


ありがとうございます。

そうですね、でも私はコーダーではないので、公開と非公開を同時に送信する方法があると思うのですが・・・。
 
管理者として追加できないテレグラム・チャンネルから、ボットを使ってデータを取得することは可能ですか?可能であれば、どのように行うのですか?
 
2016年の投稿だが、まだ最新のものである!
 

こんにちは、Andrey、HTTPリクエストが失敗しました。


助けてください。


ありがとうございます。

ファイル: