アップデートのお知らせとは?
EAをアップデートするとこのようにMT4上にアラートが自動で表示されます
MQLAuth管理画面でバージョンは管理します
今回解説機能は、MQLAuthに登録したバージョン番号を変えるだけで、配布したEAやインジケーターのMT4アラート画面から利用者様にアップデートをしたことをお知らせする機能です。
この際にお好きなメッセージやダウンロードURLなども合わせて表示することが出来ます。
管理画面設定からメッセージの設定をおこなう
 MQLAuthのマイページより【ユーザー管理】から変更したいEAの【編集】をクリックします
 【EA・インジケーター利用者全員に表示することのできるメッセージの設定】欄でアップデート時に自動で配信されるメッセージと期限を入力してください。
コードを書いていきましょう
#define MQLAUTH_ID ""
#define APPLICATION_NAME ""
#define VERSION "1.00" // 追加した行
#define HTTP_QUERY_FLAG -2147483648
#include <MQLAuth.mqh>
#property copyright "©2020  MT4ツール製作【シストレファクトリー】"
#property link      "https://interactivebrokers.work/"
//#property version   "1.00" // 削除した行
#property version VERSION // 追加した行
#property strict
#property versionで指定したバージョン番号は、EA内で利用することができません。そのため、defineでVERSIONという定義を宣言し、これを利用することにします。
#property versionにはVERSIONを入れておけば、バージョンアップした際に#define VERSIONを書き換えるだけで#propertyのほうにも適用されます。
あとMQLAUTH_IDにはご自分のMQLAuthID、APPLICATION_NAMEには登録してあるインジケーター名を入力してくださいね。
int OnInit() {
//--- create timer
   EventSetTimer(1);
   string downloadurl; // 追加した行
//---
   return(INIT_SUCCEEDED);
}
URLを格納する変数を用意します。URL通知を使わない場合でも用意してください。
int OnInit() {
//--- create timer
   EventSetTimer(1);
   string downloadurl;
   string newestVersion = Auth_GetNewestVersion(MQLAUTH_ID, APPLICATION_NAME, downloadurl); // 追加した行
//---
   return(INIT_SUCCEEDED);
}
バージョン番号を格納する変数を用意し、MQLAuthに登録されたEAのバージョンを取得します。この時、同時に変数downloadurlにURLを格納しています。
int OnInit() {
   if(IsTesting()) {
      // 省略
   }
   EventSetTimer(1);
   string downloadurl;
   string newestVersion = Auth_GetNewestVersion(MQLAUTH_ID, APPLICATION_NAME, downloadurl);
   if(VERSION != newestVersion) {
      Alert("最新バージョンは " + newestVersion + " です。\r\n"
         + "最新バージョンのファイルは " + downloadurl + " からダウンロードすることができます。");
   }
   return(INIT_SUCCEEDED);
}
もし現在のバージョンと違っていたらアラートを表示し、アップデートがあることとダウンロードURLをお知らせするコードを追加します。
int OnInit() {
   if(IsTesting()) {
      // 省略
   }
   EventSetTimer(1);
   string downloadurl;
   string newestVersion = Auth_GetNewestVersion(MQLAUTH_ID, APPLICATION_NAME, downloadurl);
   if(VERSION != newestVersion) {
      Alert("最新バージョンは " + newestVersion + " です。\r\n"
         + "最新バージョンのファイルはEAを購入したサイトからダウンロードすることができます。");
   }
   return(INIT_SUCCEEDED);
}
ダウンロードURLを利用しない場合はこのように書くこともできます。
これで、EAの初期化時にバージョンを確認し、アップデートがある場合にアラートを出す部分が完成しました。MQLAuthのバージョン番号を変更すると、利用者のMT4にこのように表示されるようになります。
今回作成したコード
//+------------------------------------------------------------------+
//|                                                   OneDayAuth.mq4 |
//|                                      ©2020  MT4ツール製作【シストレファクトリー】 |
//|                                 https://interactivebrokers.work/ |
//+------------------------------------------------------------------+
#define MQLAUTH_ID ""
#define APPLICATION_NAME ""
#define VERSION "1.00"
#define HTTP_QUERY_FLAG -2147483648
#include <MQLAuth.mqh>
#property copyright "©2020  MT4ツール製作【シストレファクトリー】"
#property link      "https://interactivebrokers.work/"
#property version VERSION
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit() {
   if(IsTesting()) {
      if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) {
         _isAuthorized = true;
         Print("口座認証に成功しました。");
      } else {
         _isAuthorized = false;
         Print("口座認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
         ExpertRemove();
      }
   }
   EventSetTimer(1);
   string downloadurl;
   string newestVersion = Auth_GetNewestVersion(MQLAUTH_ID, APPLICATION_NAME, downloadurl);
   if(VERSION != newestVersion) {
      Alert("最新バージョンは " + newestVersion + " です。\r\n"
            + "最新バージョンのファイルは " + downloadurl + " からダウンロードすることができます。");
   }
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {
//--- destroy timer
   EventKillTimer();
}
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick() {
   if(!_isAuthorized) return;
   // EAの処理
}
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
datetime _date;
bool _isAuthorized = false;
void OnTimer() {
   if(AccountInfoInteger(ACCOUNT_LOGIN) != 0) {
      if(TimeDay(TimeLocal()) != TimeDay(_date)) {
         _date = TimeLocal();
         if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) {
            _isAuthorized = true;
            Print("口座認証に成功しました。");
         } else {
            _isAuthorized = false;
            Alert("口座認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
            ExpertRemove();
         }
      }
   }
}
//+------------------------------------------------------------------+
#define MQLAUTH_ID “” //””内に自分のMQLAUTH_IDを記入する
#define APPLICATION_NAME “” // “”内に自分の登録したEA・インジケーター名に書き換える(※ユーザー名ではないので注意)
https://interactivebrokers.work/paypal/
										



										
										
										
																	
										
										
										
																	
										
										
										
																	
										
										
										
																	
										
										
										
																	
										
										
										
																	
										
										
										
																	
										
										
										
																	
