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

 
Andrey Voytenko:

オーケー。しかし、プライベート・チャンネルで作業している場合は、チャンネル名ではなくチャンネルIDを使用してください。

こんにちは、アンドレイ


あなたのmt5用ライブラリはテレグラムの非同期モードでは動作しないようです。


mt5のボットが同じ秒数で2つのメッセージを送信すると、片方のメッセージが失われます。


何度もテストしました。

 

こんにちは、 アンドレイ


お時間を割いていただきありがとうございました。

これらの記事を読んで、ようやくMT5で "Telegram_Bot_EA "を使用することができました。

Telegram_Signal_EA "をMT5で試してみましたが、"MA "や "MACD "やカスタムインジケーターで シグナルを送信することができませんでした。

コンパイルはうまくいきますが、アラートもメッセージも送信されません。しかし、「Telegram_Bot_EA」で動くことができたので、うまく設定されていることはわかっています。

EA(Telegram_Signal_EA) はテキスト情報を送信できません。

元の記事と同じファイルです。

このフォーラムでこのコードを見ましたが、私の問題ではないと思います:

   //+------------------------------------------------------------------+
   int SendMessage(const string _channel_name,
                   const string _text,
                   const bool   _as_HTML=false,
                   const bool   _silently=false)
     {
      //--- トークンをチェックする
      if(m_token==NULL)
         return(ERR_TOKEN_ISEMPTY);

      string name=StringTrim(_channel_name);
      if(StringGetCharacter(name,0)!='@')
         name="@"+name;

      string out;
      string url=StringFormat("%s/bot%s/sendMessage",TELEGRAM_BASE_URL,m_token);
      string params=StringFormat("chat_id=%s&text=%s",name,UrlEncode(_text));
      if(_as_HTML)
         params+="&parse_mode=HTML";
      if(_silently)
         params+="&disable_notification=true";
      // Print(params);
      int res=PostRequest(out,url,params,WEB_TIMEOUT);
      return(res);
     }

   //+------------------------------------------------------------------+


注:「Telegram_Bot_EA」がうまく動作しているので、動作は間違いないと思います。


もう一つ:

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   if(id==CHARTEVENT_KEYDOWN && 
      lparam=='Q')
     {
         
         bot.SendMessage(InpChannelName,"ee\nAt:100\nDDDD");
     }
  }

Note:ボットチャットやチャンネルチャットで "Q "を押しても動きません...キーを押せばボットがテキストを送ると思うのですが...このオプションは動きません。mql5のコードをコンパイルしても、エラーや警告は出ません。


レジュメ:私はあなたの例の指標または私のカスタムインジケータルールについてテレグラムにテキスト信号(売買)を送信したいのですが、なぜ私が動作しないのか理解できません。


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


UPDATE1(解決)


私はログをチェックし、この情報を取得します:

HL 0 06:24:00.729テレグラム_シグナル_EAEVO(DE30,M1)エラー:不正なリクエスト

LH 0 06:40:00.916 Telegram_Signal_EAEVO (DE30,M1) {"ok":false, "error_code":400, "description": "Bad Request: chat not found"}.

RG 0 06:40:00.916 Telegram_Signal_EAEVO (DE30,M1) Error:不正なリクエスト

KQ 0 07:31:00.442 Telegram_Signal_EAEVO (DE30,M1) {"ok":false, "error_code":400, "description": "Bad Request: chat not found"}.

MO 0 07:31:00.442 Telegram_Signal_EAEVO (DE30,M1) Error:不正なリクエスト

新しい父親を追加し、最後のエラーを解決しましたが、再びボットにメッセージを送信できません。

EF 0 12:26:44.372 Telegram_Signal_EAEVO (DE30,H1) NAME_bot:NAMEsignalsbot


UPDATE2(解決済み):

このリンクhttp://usefulmix.com/send-message-telegram-channel-bot-http-api/ を確認しました。


テキストで:


というわけで、チャンネルを非公開にする必要があるのですが、そうすると上記のHTTP APIコールが動作しなくなり、メッセージをprublishしようとするとこのようになります:


{
  "ok": false,
  "error_code": 400,
  "description": "Bad Request: chat not found"
}

urlサンプルで確認すると、このようになります:

        
ok      false
error_code      404
description     "Not Found"


common.mqhにはこのエラーがリストアップされていますが、これについては非常に迷っています。

問題 "はコンバート・トークンで、私はテストするためにこのコードを書いてタイプし、ボットは私を書く:

//+------------------------------------------------------------------+
//||
//+------------------------------------------------------------------+

//オリジナルコード

// {
// 
// if(id==CHARTEVENT_KEYDOWN && lparam=="Q")
//bot.SendMessage(InpChannelName, "eenAt:100nDDDD");
//}

//テストコード

 {

  
   if(id==CHARTEVENT_KEYDOWN && 
      lparam=="Q")
   
      //--- トークンを設定する
   bot.Token(InpToken);
    bot.SendMessage("ID CHAT OR USER","ITS A TEST!");

}
     

イメージ:

というメッセージが表示されました。


アップデートに3!

How to send a message to a Telegram channel using the HTTP bot sendMessage API
How to send a message to a Telegram channel using the HTTP bot sendMessage API
  • 2018.10.08
  • admin
  • usefulmix.com
Here’s a practical example how to send a message to a Telegram channel using a Telegram Bot and the HTTP bot sendMessage API. In order to be able to do so, you will have to the following: Create a Telegram public channel (we’ll make this private later) Create a Telegram BOT via BotFather Set the bot as administrator in your channel After...
 

こんにちは、telegram.mqhをインポートしていることを確認してください:

https://www.mql5.com/en/forum/285054/page2#comment_11220261

MT4 to Telegram
MT4 to Telegram
  • 2019.04.04
  • www.mql5.com
Can anyone code or have any idea how to send trade details from MT4 to a Telegram channel. This is the sort of thing I am talking about. Thanks...
 
Marco vd Heijden:

telegram.mqhをインポートして、こちらをご覧ください:

https://www.mql5.com/en/forum/285054/page2#comment_11220261

確認しました...時間が必要です...後であなたに書きます!
 

Nguyen Van Tuan,
ありがとうございます。以前は、私のボットは公開チャンネルでのみ動作していました。


ジュニア


Nguyen Van Tuan:

こんにちは、

Andrey Voytenkoon MT5のこのライブラリでテストしたところ、うまく動作しませんでした。同じエラーに当たった人は、私のように変更してみてください:

1.リストされたURLのWebRequestを許可にhttps://api.telegram.org

2.channel_nameの代わりにchat_id("-1001301234105 "のような)を使用すると、このコードでエラーが発生するので、変更しました。

以上の2点を実行したところ、このライブラリはMT5で問題なく動作することが確認できた。

Andrey Voytenkoに 感謝します。

 

そうだ!同じ問題だ!!!



Junior:

Nguyen Van Tuan,
ありがとうございます。以前は、私のボットはパブリックチャンネルでのみ動作していました。


ジュニア


 
こんにちは。

MT4からTelegramにメッセージを送信するスクリプトを入手し、MQL5に変換しようとしましたが、失敗しました。このディスカッション・フォーラムを通じて、さらなる勉強のためにMQ4ファイル形式からMQL5に変換する助けを求めています。

私が含むファイル


私は助けるために喜んでいる人に感謝します



ファイル:
 

メタトレーダーvをアップデートしてコンパイルし直したのですが、警告が表示されます:


MT5 5.00ビルド:2170 4 / Oct / 2019:

"" 時代遅れの動作、非表示メソッドへの呼び出しは、MQLTelegram.mqh コンパイラの将来のバージョンで無効になります ""


への参照呼び出し:"StringReplace"


何か代替がないか探していますが、今のところ見つかりませんでした。将来の改訂版では......何かアイデアはありますか?


ありがとうございました


コード


 //+------------------------------------------------------------------+
   void UserNameFilter( const string username_list)
     {
      m_users_filter.Clear();

       //--- 解析
       string text=StringTrim(username_list);
       if (text== "" )
         return ;

       //---
       while ( StringReplace (text, "  " , " " )> 0 );
       StringReplace (text, ";" , " " );
       StringReplace (text, "," , " " );
      

       //---
       string array[];
       int amount= StringSplit (text, ' ' ,array);
       for ( int i= 0 ; i<amount; i++)
        {
         string username=StringTrim(array[i]);
         if (username!= "" )
           {
             //--- 最初の@を削除する
             if ( StringGetCharacter (username, 0 )== '@' )
               username= StringSubstr (username, 1 );

            m_users_filter.Add(username);
           }
        }

     }
   //+------------------------------------------------------------------+ 
 
satrifx7:
こんにちは

MT4からTelegramにメッセージを送信するスクリプトを入手し、MQL5に変換しようとしましたが、失敗しました。このディスカッション・フォーラムを通じて、さらなる勉強のためにMQ4ファイル形式からMQL5に変換する助けを求めています。

含まれるファイル


私は助けるために喜んでいる人に感謝します



このコードは両方のバージョンで実行できます。
 
odlambda:

メタトレーダーVをアップデートし、再度コンパイルしましたが、警告が表示されました:

フォーラムでは英語だけを使用してください。

今回、サイトのツールであなたの投稿を編集し、翻訳しました。