MQLAuth マニュアル
MQLAuthの概要
MQLAuthは、MQL言語で書かれたプログラム(例えばEA・インジケーター・スクリプト等を指します。以後「EA等」と言います。)に認証等を付けることができるウェブサービスです。
通常では、EA等販売プラットフォーム(GogoJungle等)を利用することでこのような口座番号縛りを強制的に実装することができますが、EA等販売プラットフォームを利用しない直販者は、MQLソースコードに直接口座番号を記入し、口座縛りを実装するしかありませんでした。この場合、利用者が増えるたびに口座番号を書き換えコンパイルする必要があり、EA等をバージョンアップした際には全ての利用者に対し口座番号別にコンパイルしたファイルをそれぞれ送付する必要があります。
MQLAuthを利用することで、全ての利用者に同一のコンパイル済みプログラムファイルを送付し、MQLAuthの管理画面上で口座番号に対する認証情報を追加することで、上記口座番号を書き換えコンパイルする手間を省くことができます。
MQLAuthの機能
EA等にアクセス認証を付与する機能
MQLAuthの認証を利用することで、以下のアクセス認証を実装することができます。
- 口座番号認証
- パスワード認証
それぞれの制限に対し、利用期限を設けることができます。
例えば、AさんのMT4口座番号【12345678】では2021年12月31日まで、BさんのMT4口座【23456789】では2200年12月31日(実質的に期限無し)まで稼働し、その他の口座では稼働しないような口座縛りをEA等に付けることができます。
FX業者制限については、日常的に変更をするようなものではなく、ソースコードに直接記入するだけで事足りるため、MQLAuthでは採用していません。
EA等が更新された際にMT4上で通知する機能
MQLAuthはEA等のバージョン情報とダウンロードURLを記録することができます。これを利用することで、EA等のバージョンアップを行った際、古いEA等を動かしているMT4に対しAlert()で更新を通知したり、ダウンロードURLを通知したりすることができます。
MQLAuthの仕組み
MQLAuthは、データベースサーバを利用し、データベース上にEA等の情報、口座番号等の情報を保存することで、遠隔的に口座番号縛り等を実装することを実現しています。

EAにMQLAuthを実装する手順
ここでは、MQL4のEAに口座番号縛りを実装する手順を例に、MQLAuthの実装方法について説明します。その他の実装については、リファレンスを参考にしてください。
MQLAuthへの利用登録
ステップ1 MQLAuthにアクセス
https://mql-auth.com/にアクセスし、サイト右上の「利用登録」をクリックします。

ステップ2 必要事項の入力
メールアドレス、パスワードを入力し、「登録する」ボタンをクリックします。

ステップ3 メールアドレス確認用のメール送信
メールアドレス確認用のメールが送信されます。

ステップ4 メールアドレスの認証
メールを開き、「clicking here」をクリックします。

ステップ5 メールアドレスの認証完了
これでアカウントの作成が完了しました。続いて「ログイン」をクリックします。

ステップ6 MQLAuthにログイン
先ほど登録した情報でログインします。
ステップ7 マイページに移動
ログインしたら、マイページに移動します。
ステップ8 MQLAuth IDの確認
「MQLAuth ID」という項目があるので、これをメモしておきます。これがインジケーターの提供者を識別する番号になります。後ほどインジケーターのソースコードに記入します。

MQLAuthにEAの情報を登録
ステップ1 EA・インジケーター登録画面への入り方
サイト上部の「EA・インジケーター登録」をクリックします。

ステップ2 EA・インジケーターの新規登録画面へ
「EA・インジケーター新規登録」をクリックします。

ステップ3 EA・インジケーターの登録

ステップ4 登録完了
これで登録が完了しました。

MQLAuthインクルードファイルのダウンロード
ファイルのダウンロード
MQLAuthのインクルードファイルをダウンロードし、指定のフォルダに入れます。
[最新版 Ver.1.07(2020/12/18) ダウンロード] MQLAuth_107.zip
[Ver.1.06(2020/12/09) ダウンロード] MQLAuth_106.zip
[Ver.1.05(2020/11/29) ダウンロード] MQLAuth_105.zip
[Ver.1.04(2020/11/11) ダウンロード] MQLAuth_104.zip
[Ver.1.03(2020/11/06) ダウンロード] MQLAuth_103.zip
[Ver.1.02(2020/10/18) ダウンロード] MQLAuth_102.zip
[Ver 1.01(2020/10/12) ダウンロード] MQLAuth_101.zip
[Ver 1.00(2020/09/20) ダウンロード] MQLAuth_100.zip
MQLAuthを使うために必要なインクルードファイルと、MQLAuthのサンプルコードが入った圧縮ファイルです。
サンプルコードはMQL4用のフォーマット「.mq4」になっていますが、「.mq5」にリネームするだけでMQL5でも使用できます。
圧縮ファイルの内容
MQLAuth.zipを解凍すると、Includeフォルダの中に MQLAuth.mqh というファイルがあります。
このMQLAuth.mqhを以下のフォルダにコピーしてください。
MT4の場合
[MT4のファイル保存フォルダ]/MQL4/Include/
MT5の場合
[MT5のファイル保存フォルダ]/MQL5/Include/
EAのソースコードに認証用のコードを追加
ステップ1 ソースコード先頭に追記
MQLソースコードの先頭に以下の3行を追加します。
#define MQLAUTH_ID "先ほどメモした「MQLAuth ID」"
#define APPLICATION_NAME "MQLAuthに登録するEAの名称"
#include <MQLAuth.mqh>
ステップ2 口座認証はタイマーを利用するため、OnInit()に以下の1行を追加します。
EventSetTimer(1);
ステップ3 OnTimer()の実装
OnTimer()に以下のソースコードを追加します。
if(AccountNumber() != 0) {
EventSetTimer(3600);
if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) {
// 認証に成功した場合の処理をここに書く
Print("[口座番号: " + (string)AccountNumber() + "] 認証に成功しました。");
} else {
// 認証に失敗した場合の処理をここに書く
Print("[口座番号: " + (string)AccountNumber()
+ "] 認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
}
}
MQLソースコードの追加は以上です。
MQLAuthに口座縛りをする口座番号を登録
ステップ1 認証追加画面への入り方
サイト上部の「ユーザー登録」をクリックします。

ステップ2 新規ユーザー登録画面へ
「新規ユーザー登録」をクリックします。

ステップ3 ユーザーの登録
各項目を入力し、「ユーザー追加」ボタンをクリックします。

ステップ4 登録完了
これで口座認証をする口座番号の登録が完了しました。MT4でインジケーターを動かしてみてください。DLL許可にチェックを入れるのを忘れずに。

MQLAuthはデータベースサーバとのやりとりにwininit.dllを利用しています。 そのため、MQLAuthを実装したEA等を使用する場合は、MT4のオプションで「DLLの使用を許可する」にチェックを入れる必要があります。

MQLAuthリファレンス
認証サーバアクセスの制限について
MQLAuthはサーバにアクセスし認証情報を読み取っています。
サーバアクセスはアクセス回数上限が設定されており、同一端末からのアクセスが30回/60秒を超えるとサーバがエラーを返します。
サーバがエラーを返すと、認証が失敗します。 そのため、不必要な連続認証アクセスとならないよう、実装には気を付けてください。
なお、ダウンロードしたMQLAuth.mqhを改変せず使用する場合は、2回目のアクセスからはローカルキャッシュを読み込むため、サーバへのアクセスは行われません。
認証システムへのアクセス回数上限 : 30回/60秒毎 (超過した場合はエラーを返す)
関数一覧(MQL4, MQL5共通)
- bool AuthByAccountNumber_ReturnBool(
string ManagerName,
string ApplicationName
) - datetime AuthByAccountNumber_ReturnDatetime(
string ManagerName,
string ApplicationName
) - datetime AuthByAccountNumberWithAddUser_ReturnDatetime(
string ManagerName,
string ApplicationName,
int period,
) - bool AuthByPassword_ReturnBool(
string ManagerName,
string ApplicationName,
string Password
) - datetime AuthByPassword_ReturnDatetime(
string ManagerName,
string ApplicationName,
string Password
) - string Auth_GetNewestVersion(
string ManagerName,
string ApplicationName,
string &downloadurl
) - string Auth_GetApplicationMessage(
string ManagerName,
string ApplicationName
) - string Auth_GetUserMessageByAccountNumber(
string ManagerName,
string ApplicationName
) - string Auth_GetUserMessageByPassword(
string ManagerName,
string ApplicationName,
string Password
) - bool Auth_OpenURL(
string aURL
) -
void Auth_ShowIMG(
int &rgb[],
string imgname,
int xsize,
int ysize,
int corner = 0,
int xdistance = 20,
int ydistance = 20,
int scale = 1
) -
void Auth_ShowBMPIMG(
string imgpath,
string imgname,
ENUM_BASE_CORNER corner = 0,
int xdistance = 20,
int ydistance = 20
) -
datetime Auth_ServerTimeToJapanTime(
datetime time,
MQLAUTHENUM_GMTOFFSET gmtoffset,
MQLAUTHENUM_SUMMERTIMECOUNTRY summertimecountry
) -
datetime Auth_JapanTimeToServerTime(
datetime time,
MQLAUTHENUM_GMTOFFSET gmtoffset,
MQLAUTHENUM_SUMMERTIMECOUNTRY summertimecountry
) -
string Auth_LineNotify(
string token,
string message
)
列挙型一覧(MQL4, MQL5共通)
AuthByAccountNumber_ReturnBool
EA等を利用する口座番号が認証可能かどうかを取得します。この関数を利用すると、自動的にAccountInfoInteger(ACCOUNT_LOGIN)から口座番号を取得します。
bool AuthByAccountNumber_ReturnBool(
string ManagerName,
string ApplicationName
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
戻り値
認証成功の場合はtrue、それ以外の場合はfalse。データベースアクセス過多等によりエラーになった場合もfalseを返します。
例
if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) {
Print("[口座番号: " + (string)AccountNumber() + "] 認証に成功しました。");
isAuthorization = true;
} else {
Print("[口座番号: " + (string)AccountNumber() + "] 認証に失敗しました。"
+ "利用期限が過ぎているか、この口座番号では利用できません。");
isAuthorization = false;
}
こちらの記事でも具体的に説明しています。
AuthByAccountNumber_ReturnDatetime
EA等を利用する口座番号が認証可能な期限を取得します。この関数を利用すると、自動的にAccountInfoInteger(ACCOUNT_LOGIN)から口座番号を取得します。
datetime AuthByAccountNumber_ReturnDatetime(
string ManagerName,
string ApplicationName
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
戻り値
EA等を利用する口座番号の利用期限。データベースアクセス過多等によりエラーになった場合はfalseを返します。
例
datetime period = AuthByAccountNumber_ReturnDatetime(MQLAUTH_ID, APPLICATION_NAME);
if(period >= TimeLocal()) {
Print("[口座番号: " + (string)AccountNumber() + "] 認証に成功しました。"
+ "利用期限は " + TimeToString(period) + " です。");
isAuthorization = true;
} else {
Print("[口座番号: " + (string)AccountNumber() + "] 認証に失敗しました。"
+ "利用期限が過ぎているか、この口座番号では利用できません。");
isAuthorization = false;
}
AuthByAccountNumberWithAddUser_ReturnDatetime
EA等を利用する口座番号が認証可能な期限を取得します。口座番号が存在しない場合は、引数periodを利用期間とした新たなユーザーを作成します。この関数を利用すると、自動的にAccountInfoInteger(ACCOUNT_LOGIN)から口座番号を取得します。
この関数を使うには、EA・インジケーターの登録画面で「自動体験版作成機能を有効にする」にチェックを入れる必要があります。
datetime AuthByAccountNumberWithAddUser_ReturnDatetime(
string ManagerName,
string ApplicationName,
int period
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
period
[in] 新たに作成される体験版ユーザーの期間
戻り値
EA等を利用する口座番号の利用期限。データベースアクセス過多等によりエラーになった場合はfalseを返します。
例
datetime period = AuthByAccountNumberWithAddUser_ReturnDatetime(MQLAUTH_ID, APPLICATION_NAME, 7);
if(period >= TimeLocal()) {
Print("[口座番号: " + (string)AccountNumber() + "] 認証に成功しました。"
+ "利用期限は " + TimeToString(period) + " です。");
isAuthorization = true;
} else {
Print("[口座番号: " + (string)AccountNumber() + "] 認証に失敗しました。"
+ "利用期限が過ぎているか、この口座番号では利用できません。");
isAuthorization = false;
}
こちらの記事でも具体的に説明しています。
AuthByPassword_ReturnBool
EA等を利用するパスワードが正しいかどうかを取得します。
bool AuthByPassword_ReturnBool(
string ManagerName,
string ApplicationName,
string Password
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
Password
[in] EA等のMQLAuthに登録した認証用パスワード
戻り値
パスワードが正しい場合はtrue、それ以外の場合はfalse。データベースアクセス過多等によりエラーになった場合もfalseを返します。
例
if(AuthByPassword_ReturnBool(MQLAUTH_ID, APPLICATION_NAME, _password)) {
Print("[Password: " + _password + "] 認証に成功しました。");
} else {
Print("[Password: " + _password + "] 認証に失敗しました。"
+ "利用期限が過ぎているか、パスワードが間違っています。");
return(INIT_FAILED);
}
AuthByPassword_ReturnDatetime
EA等を利用するパスワードが認証可能な期限を取得します。この関数を利用すると、自動的にMQL4のAccountNumber()から口座番号を取得します。
datetime AuthByPassword_ReturnDatetime(
string ManagerName,
string ApplicationName,
string Password
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
Password
[in] EA等のMQLAuthに登録した認証用パスワード
戻り値
パスワードが正しい場合はEA等の利用期限、それ以外の場合はfalse。データベースアクセス過多等によりエラーになった場合もfalseを返します。
例
datetime period = AuthByPassword_ReturnDatetime(MQLAUTH_ID, APPLICATION_NAME, _password);
if(period >= TimeLocal()) {
Print("[Password: " + _password + "] 認証に成功しました。"
+ "利用期限は " + TimeToString(period) + " です。");
} else {
Print("[Password: " + _password + "] 認証に失敗しました。"
+ "利用期限が過ぎているか、パスワードが間違っています。");
return(INIT_FAILED);
}
Auth_GetNewestVersion
EA等の最新バージョン番号とダウンロードURLを取得します。
string Auth_GetNewestVersion(
string ManagerName,
string ApplicationName,
string &downloadurl
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
downloadurl
[out] EA等のMQLAuthに登録したダウンロードURL
戻り値
バージョン番号。データベースアクセス過多等によりエラーになった場合は 空文字 を返します。
例
string downloadurl;
string newestVersion = Auth_GetNewestVersion(APPLICATION_NAME, downloadurl);
if(VERSION != newestVersion) {
Alert("最新バージョンは " + newestVersion + " です。\r\n"
+ "最新バージョンのファイルは " + downloadurl + " からダウンロードすることができます。");
}
こちらの記事でも具体的に説明しています。
Auth_GetApplicationMessage
アプリケーションに設定したメッセージを取得します。
string Auth_GetApplicationMessage(
string ManagerName,
string ApplicationName
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
戻り値
メッセージ内容。データベースアクセス過多等によりエラーになった場合は 空文字 を返します。
例
string message = Auth_GetApplicationMessage(MQLAUTH_ID, APPLICATION_NAME);
if(message != "") {
Comment(message);
}
こちらの記事でも具体的に説明しています。
Auth_GetUserMessageByAccountNumber
口座番号認証を利用するユーザーに設定したメッセージを取得します。
string Auth_GetUserMessageByAccountNumber(
string ManagerName,
string ApplicationName
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
戻り値
メッセージ内容。データベースアクセス過多等によりエラーになった場合は 空文字 を返します。
例
string message = Auth_GetUserMessageByAccountNumber(MQLAUTH_ID, APPLICATION_NAME);
if(message != "") {
Comment(message);
}
こちらの記事でも具体的に説明しています。
Auth_GetUserMessageByPassword
パスワード認証を利用するユーザーに設定したメッセージを取得します。
string Auth_GetUserMessageByPassword(
string ManagerName,
string ApplicationName,
string Password
);
パラメータ
ManagerName
[in] EA等をMQLAuthに登録したアカウントのMQLAuth ID
ApplicationName
[in] EA等のMQLAuthに登録した名称
Password
[in] パスワード認証のパスワード
戻り値
メッセージ内容。データベースアクセス過多等によりエラーになった場合は 空文字 を返します。
例
string message = Auth_GetUserMessageByPassword(MQLAUTH_ID, APPLICATION_NAME, _password);
if(message != "") {
Comment(message);
}
こちらの記事でも具体的に説明しています。
Auth_OpenURL
ブラウザを開きます。
bool Auth_OpenURL(
string aURL
);
パラメータ
aURL
[in] ブラウザで開くURL
戻り値
ブラウザで開くのに成功するとTrueを、失敗するとFalseを返します。
例
bool result = Auth_OpenURL("https://mql-auth.com/");
こちらの記事でも具体的に説明しています。
Auth_ShowIMG
画像を表示します。
void Auth_ShowIMG(
int &rgb[],
string imgname,
int xsize,
int ysize,
int corner = 0,
int xdistance = 20,
int ydistance = 20,
int scale = 1
);
パラメータ
&rgb[]
[in] 画像をRGB値に数値化したint配列
imgname
[in] 画像を構成するオブジェクト名
x
[in] 画像の横画素数
y
[in] 画像の横画素数
corner
[in] チャートコーナー(MQLのENUM_BASE_CORNER)
xdistance = 20
[in] 画像のX軸の表示位置
xdistance = 20
[in] 画像のY軸の表示位置
scale
[in] 画像のスケール
例
Auth_ShowIMG(_logo, "MQLAuth_LOGO", 64, 24, 0, 20, 20, 1);
こちらの記事で画像のRGB値変換方法も含め具体的に説明しています。
Auth_ShowBMPIMG
画像を表示します。
void Auth_ShowBMPIMG(
string imgpath,
string imgname,
ENUM_BASE_CORNER corner = 0,
int xdistance = 20,
int ydistance = 20
);
パラメータ
imgpath
[in] 画像ファイルの場所
imgname
[in] 画像のオブジェクト名
corner
[in] 画像を表示する位置
xdistance = 20
[in] 画像のX軸の表示位置
xdistance = 20
[in] 画像のY軸の表示位置
例
Auth_ShowBMPIMG("\\Include\\Images\\MQLAuthLogo.bmp", "MQLAuth_LOGO", CORNER_LEFT_LOWER);
こちらの記事で画像の変換方法も含め具体的に説明しています。
Auth_ServerTimeToJapanTime
サーバー時間を日本時間に変換します。
datetime Auth_ServerTimeToJapanTime(
datetime time,
MQLAUTHENUM_GMTOFFSET gmtoffset,
MQLAUTHENUM_SUMMERTIMECOUNTRY summertimecountry
);
パラメータ
time
[in] 変換前の時間です。datetime型で指定します。
gmtoffset
[in] サーバー時間のGMTオフセット。MQLAUTHENUM_GMTOFFSET型で指定します。
summertimecountry
[in] サーバー時間のサマータイム基準国。MQLAUTHENUM_SUMMERTIMECOUNTRY型で指定します。
例
Auth_ServerTimeToJapanTime(TimeCurrent(), 2, STC_US);
こちらの記事で画像の変換方法も含め具体的に説明しています。
MQLAUTHENUM_GMTOFFSET型についてはこちらを参照してください。
MQLAUTHENUM_SUMMERTIMECOUNTRY型についてはこちらを参照してください。
Auth_JapanTimeToServerTime
日本時間をサーバー時間に変換します。
datetime Auth_JapanTimeToServerTime(
datetime time,
MQLAUTHENUM_GMTOFFSET gmtoffset,
MQLAUTHENUM_SUMMERTIMECOUNTRY summertimecountry
);
パラメータ
time
[in] 変換前の時間です。datetime型で指定します。
gmtoffset
[in] サーバー時間のGMTオフセット。MQLAUTHENUM_GMTOFFSET型で指定します。
summertimecountry
[in] サーバー時間のサマータイム基準国。MQLAUTHENUM_SUMMERTIMECOUNTRY型で指定します。
例
Auth_JapanTimeToServerTime(TimeLocale(), 2, STC_US);
こちらの記事で画像の変換方法も含め具体的に説明しています。
MQLAUTHENUM_GMTOFFSET型についてはこちらを参照してください。
MQLAUTHENUM_SUMMERTIMECOUNTRY型についてはこちらを参照してください。
Auth_LineNotify
LINE通知を送信します。
string Auth_LineNotify(
string token,
string message
);
パラメータ
token
[in] LINE Notify Token
message
[in] LINE通知するメッセージ
戻り値
LINE NotifyからのメッセージをJson形式でそのまま返します。
例
Auth_LineNotify(p_lineNotifyToken, "\nただ今のレート\nBid: " + DoubleToString(Bid, Digits) + "\nAsk: " + DoubleToString(Ask, Digits));
LINE通知を送信するにはLINE Notify Tokenの取得が必要です。LINE Notify Tokenの取得方法に関してはこちらの記事を参考にして下さい。
こちらの記事でも具体的に説明しています。
MQLAUTHENUM_GMTOFFSET列挙型
ID | 値 | 詳細 |
---|---|---|
GF_12 | -12 | -12時間 |
GF_11 | -11 | -11時間 |
GF_10 | -10 | -10時間 |
GF_9 | -9 | -9時間 |
GF_8 | -8 | -8時間 |
GF_7 | -7 | -7時間 |
GF_6 | -6 | -6時間 |
GF_5 | -5 | -5時間 |
GF_4 | -4 | -4時間 |
GF_3 | -3 | -3時間 |
GF_2 | -2 | -2時間 |
GF_1 | -1 | -1時間 |
GF00 | 0 | ±0時間 |
GF01 | 1 | +1時間 |
GF02 | 2 | +2時間 |
GF03 | 3 | +3時間 |
GF04 | 4 | +4時間 |
GF05 | 5 | +5時間 |
GF06 | 6 | +6時間 |
GF07 | 7 | +7時間 |
GF08 | 8 | +8時間 |
GF09 | 9 | +9時間 |
GF10 | 10 | +10時間 |
GF11 | 11 | +11時間 |
GF12 | 12 | +12時間 |
MQLAUTHENUM_SUMMERTIMECOUNTRY列挙型
ID | 値 | 詳細 |
---|---|---|
STC_NONE | 0 | なし |
STC_US | 1 | アメリカ |
STC_EU | 2 | ヨーロッパ |
STC_AU | 3 | オーストラリア |
口座番号認証を使用する上での注意点
MQLのAccountInfoInteger(ACCOUNT_LOGIN)で得られる口座番号は、MT4サーバにログインしてからでないと0を返します。
MT4を起動した直後は、MT4サーバにログインする前なのでAccountInfoInteger(ACCOUNT_LOGIN)は必ず0を返します。
チャートにインジケーターを挿入している状態でMT4を起動したとき、MT4サーバにログインする前にインジケーターの初期化(OnInit())が終了してしまいます。
そのため、AccountInfoInteger(ACCOUNT_LOGIN)を利用する口座番号認証では、OnInit()内に認証用コードを書くと、MT4サーバにログインする前に認証が行われてしまうため、必ず認証に失敗します。
この問題を解決するため、口座番号認証を利用する場合は、OnTimer()内に認証用コードを書きます。
例
void OnTimer() {
if(AccountNumber() != 0) { ・・・①
EventSetTimer(3600); ・・・②
if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) {
Print("[口座番号: " + (string)AccountNumber() + "] 認証に成功しました。");
} else {
Print("[口座番号: " + (string)AccountNumber() + "] 認証に失敗しました。"
+ "利用期限が過ぎているか、この口座番号では利用できません。");
}
}
}
① MT4サーバにログインする前はAccountInfoInteger(ACCOUNT_LOGIN)は0を返すので、その場合は認証を行いません。
② MT4サーバにログインした後はAccountInfoInteger(ACCOUNT_LOGIN)が口座番号を返すようになります。その後は繰り返し認証をする必要がないため、タイマー時間を延ばします。なお、OnTimer()で認証を繰り返し行ったとしても、デフォルトのMQLAuth.mqhではキャッシュの値を読み込むだけなので、2回目以降の認証ではサーバへのアクセスは行われません。
サンプルコード
EA等に口座番号縛りを付けるサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_UseAccountNumber.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
こちらの記事で具体的に説明しています。
EA等に口座番号縛りを付け、期限を通知するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_UseAccountNumberReturnDatetime.mq4 をご覧ください、
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
EA等に口座番号縛りを付け、口座番号が登録されていないMT4からの利用に対し自動的に期限付きユーザーを作成し、期限を通知するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_UseAccountNumberWithAddUser.mq4 をご覧ください、
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
こちらの記事で具体的に説明しています。
EA等にパスワード縛りを付けるサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_UsePassword.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
EA等にパスワード縛りを付け、期限を通知するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_UsePasswordReturnDatetime.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
EA等のバージョンを確認し通知するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_VersionNotice.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
こちらの記事で具体的に説明しています。
EA等ユーザー全員に同じメッセージを表示するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_ApplicationMessage.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
こちらの記事で具体的に説明しています。
口座番号認証を利用しているユーザー個別にメッセージを表示するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_UserMessageUseAccountNumber.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
こちらの記事で具体的に説明しています。
パスワード認証を利用しているユーザー個別にメッセージを表示するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_UserMessageUsePassword.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
こちらの記事で具体的に説明しています。
オブジェクトをクリックするとブラウザを開くサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_OpenURL.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
チャート上に画像を表示するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_ShowBMPIMG.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
チャート上に画像を表示し、クリックするとブラウザを開くサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_ShowBMPIMGWithOpenURL.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
MT4時間と日本時間を相互に変換するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_ConvertTime.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
LINE通知を送信するサンプルコード
ダウンロードファイル内の /Indicators/MQLAuthSample_LINENotify.mq4 をご覧ください。
MQL5で使用する場合は、拡張子を「.mq5」に変更してください。
MQLAuth管理画面の使い方
ここでは、MQLAuthの管理画面(https://mql-auth.com/)の使い方を説明します。
利用登録
こちらをご覧ください。
登録情報の確認
MQLAuth管理画面は、マイページで登録情報を確認することができます。

① MQLAuthに登録されたメールアドレスが表示されます。後述の「メールアドレスの変更」で変更することができます。
② MQLAuthを利用するためのIDです。変更することはできません。
③ 登録可能なEA・インジケーターの数です。
④ 登録可能なユーザーの数です。
メールアドレスの変更
登録したメールアドレスはいつでも変更することができます。

① 現在登録しているメールアドレスが表示されます。
② 変更したいメールアドレスを入力します。
③ 入力が完了したら「Emailを変更する」ボタンを押します。

「Emailを変更する」ボタンを押すと、確認のメールが送信されます。

メールボックスを確認し、「clicking here」をクリックしてください。

「メールアドレスの変更が完了しました。」と表示されたら、メールアドレスの変更は完了です。
パスワードの変更
ここでは、パスワードを変更する手順を説明します。

① 現在のパスワードを入力します。
② 新たなパスワードを入力します。
③ 新たなパスワードを再度入力します。
④ 全て入力したら「パスワードを変更する」ボタンを押します。

「Your password has been changed.」と表示されたら、パスワードの変更は完了です。
EA・インジケーターの登録
ユーザーの登録
EA利用者等自身で口座番号を変更する手順
MQLAuthは、口座番号認証に登録されてEA等利用者が、自分で口座番号を変更できる機能を備えています。以下にその手順を説明します。
上部メニューの「口座番号変更」をクリックします。

必要事項を入力します。

① 登録されているメールアドレスを入力します。なお、メールアドレスの登録がない場合は口座番号をEA利用者等が変更することはできません。
② 現在登録されている口座番号を入力します。
③ 変更したい口座番号を入力します。
④ 「変更申請」ボタンを押します。
確認メールが送信されます。

メールが送信されるので、確認してください。
認証番号を確認します。
送信されたメール内に、口座番号変更に必要な認証番号が書かれていますので、メモしてください。

認証番号を入力

① メールに記載された認証番号を記入します。
② どのEA・インジケーターに登録されている口座番号を変更するかを選択します。
③ 「変更する」ボタンをクリックします。
変更完了

便利な使い方
利用期限付きの体験版EA等を作成する
次のようなユーザーを作り、EA等にパスワード認証を付けることで、体験版EA等を作成することができます。

特定のユーザーの利用を停止する
ユーザーの利用を停止する方法は2つあります。
方法1 ユーザーを削除する
この方法では、ユーザー情報を元に戻すことができないため、注意してください。 ユーザー情報を元に戻す必要がある場合は、次の「ユーザーの利用期限を過去の時間にする」を参考にしてください。
ステップ1 ユーザー削除画面へ

ステップ2 ユーザーを削除する
削除するユーザーの情報を確認し、「削除する」ボタンを押します。「削除する」ボタンを押すと、この処理は取り消すことができませんので注意してください。

方法2 ユーザーの利用期限を過去の時間にする
ステップ1 ユーザー編集画面へ

ステップ2 ユーザーの利用期限を過去の時間にする

ステップ3 変更後の利用期限を確認する
利用期限が過去の時間になっていれば完了です。

アクセスする毎にデータの取得を行う
MQLAuthはデフォルトでは2回目の認証以降はキャッシュを使うため、1日ごとに認証を行う等、MT4を起動してから一定期間ごとに認証を行う場合は、実装するEAに以下のコードを追記する必要があります。
#define HTTP_QUERY_FLAG -2147483648
このコードは、必ずMQLAuth.mqhをインクルードするコードの前に追加してください。
