EAアップデート時に自動でMT4のアラートを表示する機能を追加する

アップデート自動通知
yuki
yuki
今回は、日付が変わるときに口座番号認証をするEAを作る手順で作ったEAがアップデートされたら、お知らせ自動で表示する機能を追加する方法をご説明します
カオチャイ
カオチャイ
MT4のアラート機能を利用してお知らせしますので、そこへダウンロードURLなどの表示も可能ですよ!
yuki
yuki
こちらの機能は無料でご利用できますが、MQLAuth.mqhのバージョン1.04以降が必要ですので、まだご利用の準備ができていない方は下記の記事を参考にしてくださいね
カオチャイ
カオチャイ
自分でつけるのが面倒くさいという方はシストレファクトリーのMQLAuth実装代行のサービスもご利用くださいね!
MQLAuth準備編
MQLAuthシステムを利用するための事前準備 MQLAuthを使うための準備 MQLAuthシステムを使う前提条件として「インジケーターをMT4の口座番号やパスワードで縛って管...

アップデートのお知らせとは?

アップデートのお知らせEAをアップデートするとこのようにMT4上にアラートが自動で表示されます

 

 

バージョンのお知らせMQLAuth管理画面でバージョンは管理します

 

今回解説機能は、MQLAuthに登録したバージョン番号を変えるだけで、配布したEAやインジケーターのMT4アラート画面から利用者様にアップデートをしたことをお知らせする機能です。

この際にお好きなメッセージやダウンロードURLなども合わせて表示することが出来ます。

カオチャイ
カオチャイ
これまでTwitterやブログでお知らせしていたアップデートのお知らせを、MQLAuth管理画面の数値を変えるだけで自動一斉配布できてしまう便利な機能ですよ!

 

管理画面設定からメッセージの設定をおこなう

インジケーター設定画面 MQLAuthのマイページより【ユーザー管理】から変更したいEAの【編集】をクリックします

 

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を利用しない場合はこのように書くこともできます。

 

MT4アラート表示画面これで、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();
         }
      }
   }
}
//+------------------------------------------------------------------+

 

yuki
yuki
こちらのコードを使う場合は下記の2箇所を修正してくださいね!

#define MQLAUTH_ID “” //””内に自分のMQLAUTH_IDを記入する

#define APPLICATION_NAME “” // “”内に自分の登録したEA・インジケーター名に書き換える(※ユーザー名ではないので注意)

インジケーターのカスタマイズ色々
MQLコードでEAをカスタマイズ
【MQLコード解説】EA・インジケーターのカスタマイズ【体験版・LINE通知】EAやインジケーターに口座番号認証を実装する方法を紹介しています。 認証システムにはMQLAuthを利用して解説していきます。...
ダウンロードでそのまま使えるコード集
MQL実装例
【コピペでOK】RSIのEAに口座認証や一括メッセージ機能を実装してみました https://interactivebrokers.work/start_mqlauth/ 個人でEAを販売する際につけてお...
MQL実装例
【コピペでOK】MT4のチャートから飛ばすURLをソースコードを編集せずに、MQLAuthの管理画面から変えられるようにする https://interactivebrokers.work/start_mqlauth/ メッセージのURL変更を簡単に ...
MQL実装例
【コピペでOK】バイナリーオプションサインツールに体験版機能を機能を実装してみました https://interactivebrokers.work/start_mqlauth/ 体験版機能付きのBO用サインツー...
おすすめ参考記事
EA&インジケーター制作代行
【MT4&MT5】EA&インジケーター制作代行承ります EA&インジケーター制作代行とは? EA&インジケーター制作代行では、皆さんが日頃使っている手法をMT4(MT5)でエントリーサイ...
体験版EA
自動的に期限付き体験版になる機能をEAに追加する方法 https://interactivebrokers.work/start_mqlauth/ 体験版機能を使うとなにができる?...
PayPalとEAを連携
PayPal連携機能を使ってEAやインジケーターの自動決済化をする手順 https://interactivebrokers.work/start_mqlauth/ PayPal連携機能とは...