MQLAuthサポートサイト MQLAuthサポートサイト
  • Support Home
  • Manual
    • 基本マニュアル
    • 応用マニュアル
    • リファレンス
  • MQLAuthへ戻る
  • Checkout-Result
  • Products
leaf leftleaf right

基本マニュアル

  • folder icon closed folder iconMQLAuthの概要
    • MQLAuthとは?
    • MQLAuthの仕組み
    • MQLAuthライブラリとは?
  • folder icon closed folder iconMQLAuthの機能
    • 口座番号・パスワード認証機能
    • EA利用者自身で登録口座番号を変更する機能
    • アップデート通知機能
    • 体験版機能
    • 一斉メッセージ機能
    • 個別メッセージ機能
    • PayPal連携機能
    • 画像表示機能
    • ブラウザオープン機能
    • MT4時間-日本時間相互変換機能
    • LINE通知機能
  • folder icon closed folder iconMQLAuthを実装する手順
    • MQLAuthへの利用登録
    • MQLAuthにEAを登録
    • MQLAuthインクルードファイルのダウンロード
    • EAのソースコードに認証用のコードを追加
    • MQLAuthに口座縛りをする口座番号を登録
  • folder icon closed folder icon注意点
    • 「DLLの使用を許可する」を忘れずに
    • 認証サーバアクセスの制限について
    • 口座番号認証を使用する上での注意点

MQLAuthの概要

このセクションでは、MQLAuthについて紹介します。

Articles

  • MQLAuthとは?
  • MQLAuthの仕組み
  • MQLAuthライブラリとは?

MQLAuthとは?

MQLAuthは、MQL言語で書かれたプログラム(例えばEA・インジケーター・スクリプト等を指します。以後「EA等」と言います。)に認証等を付けることができるウェブサービスです。

通常では、EA等販売プラットフォーム(GogoJungle等)を利用することでこのような口座番号縛りを強制的に実装することができますが、EA等販売プラットフォームを利用しない直販者は、MQLソースコードに直接口座番号を記入し、口座縛りを実装するしかありませんでした。この場合、利用者が増えるたびに口座番号を書き換えコンパイルする必要があり、EA等をバージョンアップした際には全ての利用者に対し口座番号別にコンパイルしたファイルをそれぞれ送付する必要があります。

MQLAuthを利用すれば、遠隔で口座番号縛りを追加したり削除したりすることができます。

遠隔で口座番号縛りを設定できるので、全ての利用者に同一のコンパイル済みプログラムファイルを配布すればよくなるため、いちいち利用者ごとに口座番号を書き換えてコンパイルする手間を0にすることができます。

MQLAuthLの口座番号認証は、5つの口座番号までなら無料で利用できますので、内輪だけでEAを配布するような用途であれば、一切の金銭的負担なくEA等の流出を防ぐことができます

遠隔での口座番号認証の他に、MQLAuthを利用することで、以下のような機能を無料で利用できます。

  • EA等のアップデート通知を自動的に送信する機能

  • EA等に利用期限が設定された体験版機能を付ける機能

  • 利用者に一斉に同じメッセージを送信する機能

  • 特定の利用者にのみメッセージを送信する機能

  • PayPal決済に連動して自動的に口座番号縛りを登録する機能

これらの機能はMQLAuthウェブサービスの利用登録(無料)と、MQLAuthライブラリのダウンロードが必要です。

MQLAuthの仕組み

MQLAuthは、データベースサーバを利用し、データベース上にEA等 [1] の情報、口座番号等 [2] の情報を保存することで、遠隔的に口座番号縛り等 [3] を実装することを実現しています。

MQLAuthライブラリとは?

MQLAuthライブラリは、MQL言語を使った開発で役に立つ機能を盛り込んだライブラリです。MQLAuthライブラリの機能は全て無料で利用できます。

MQLAuthライブラリは例えば、以下のような機能があります。

  • チャート上に画像を表示する機能

  • ブラウザを開きウェブサイトを表示する機能

  • MT4時間と日本時間を正確に変換する機能

  • LINE通知機能

これらの機能はMQLAuthインクルードファイルをダウンロードするだけですぐにお使いいただけます。MQLAuthウェブサービスに利用登録する必要はありません。

MQLAuthの機能

Articles

  • 口座番号・パスワード認証機能
  • EA利用者自身で登録口座番号を変更する機能
  • アップデート通知機能
  • 体験版機能
  • 一斉メッセージ機能
  • 個別メッセージ機能
  • PayPal連携機能
  • 画像表示機能
  • ブラウザオープン機能
  • MT4時間-日本時間相互変換機能
  • LINE通知機能

口座番号・パスワード認証機能

MQLAuthの認証を利用することで、以下のアクセス認証を実装することができます。

  • 口座番号による認証
  • パスワードによる認証

それぞれの口座番号またはパスワードに対し、個別に利用期限を設定することができます。

例えば、AさんのMT4口座番号【12345678】では2021年12月31日まで、BさんのMT4口座【23456789】では2200年12月31日(実質的に期限無し)まで稼働し、その他の口座では稼働しないような口座縛りをEA等に付けることができます。

FX業者による利用制限はできないの? FX業者制限については、日常的に変更をするようなものではなく、ソースコードに直接記入するだけで事足りるため、MQLAuthでは採用していません。

EA利用者自身で登録口座番号を変更する機能

MQLAuthLに登録された口座番号は、EA利用者が自分で変更することができます。

この機能をEA等利用者に案内することで、EA等提供者は利用者の口座変更要望に煩わされることがありません。

IB目的のEA等で利用者自身による口座変更をさせたくない場合は、この機能を無効にすることもできます。

こちらの記事で具体的な使い方を解説しています。
EA利用者等自身で口座番号を変更する手順

アップデート通知機能

MQLAuthはEA等のバージョン情報とダウンロードURLを記録することができます。これを利用することで、EA等のバージョンアップを行った際、古いEA等を動かしているMT4に対しAlert()で更新を通知したり、ダウンロードURLを通知したりすることができます。

体験版機能

EA等に短期間の期限付きの口座番号認証を自動的に付ける機能です。

この機能を使うと、EA等をチャートに挿入した時にMT4の口座番号を読み取り、7日後に使えなくなる口座番号認証が自動的に設定されるようになります。

この機能を活用すれば、いちいち利用者の口座番号を聞き取ったり、ソースコード内に期限を制限する内容を書いたりする必要無く、不特定多数に対し期限付きの体験版を配布することができます。

体験版の期間は1日単位で好きな期間を設定することができます。

一斉メッセージ機能

EA等の利用者全員に対し、一斉に同一のメッセージを送信し、チャート画面上やアラートに表示する機能です。

メッセージをクリックすることでブラウザを開くこともできます。

この機能を使うことで、例えば新しいEA商品を販売する際、過去の商品の利用者に対し「新商品が完成しました!詳細はここをクリック」というメッセージを送信することで、新商品の案内をすることができます。

 

個別メッセージ機能

特定の利用者に対し、個別にメッセージを送信し、チャート画面上やアラートに表示する機能です。

メッセージをクリックすることでブラウザを開くこともできます。

この機能を使うことで、例えばEAの利用料を支払っていない利用者に対し「利用料のお支払いが確認できませんでした。こちらをクリックしてサポートにご連絡ください。」といったメッセージを表示することで注意を促すことができます。

PayPal連携機能

PayPalでの決済を自動的に検知し、口座番号認証を設定する機能です。

この機能を利用すると、通常であればPayPalにログインし決済を確認、口座番号と期限を手動で入力するという手間を全自動にすることができます。

また、PayPal決済と同時に「サンキューメール」を送信することもできます。

詳しくは以下のページもご参考ください。

PayPal連携機能を使ってEAやインジケーターの自動決済化をする手順 – シストレファクトリー

画像表示機能

チャート上に画像を表示するのはとっても手間ですよね。オブジェクトをCreateし、立幅横幅設定、表示位置を指定…

MQLAuthライブラリの画像表示機能を使えば、たった一行のコードでチャート上の好きなところに画像を表示させることができます。

自分のツイッターアイコンをチャート画面隅に表示させ、アイコンをクリックしたらブラウザオープン機能を使ってツイッターを開く、なんてのも面白いかもしれません。

ブラウザオープン機能

チャート上の画像をクリックしたら自分のウェブサイトに飛ばしたい、と考えるEA販売者は少なくありません。

MQLAuthライブラリのブラウザオープン機能を使えば、チャート上に表示させた画像、文字をクリックした時に、ブラウザを開きウェブサイトを表示する機能がお手軽に実装できます。

チャートの片隅にアイコンを表示しておき、クリックすれば販売しているEA一覧ページが開く、といった用途にお使いいただくことで、EA等の販売に役立てることができます。

MT4時間-日本時間相互変換機能

時間の変換

MT4は通常、サーバー時間(通称:MT4時間)で表示されています。業者によってサーバー時間が異なっており、サマータイムが絡むケースも多く、正確な日本時間を出すのが困難です。

特に、根強い人気のある東京仲値トレード等の時間アノマリー戦略では、時間の計算を正確に行うことが非常に重要です。

MQLAuthライブラリでは、MT4時間を日本時間に変換、日本時間をMT4時間に変換するための関数が用意されています。この関数を利用すれば、チャート画面上の時間表示を簡単に日本時間にしたり、パラメータで利用者が入力した日本時間をMT4時間に変換し正確な稼働時間設定を行ったりすることができます。

サマータイムの変換も自動的に行われるので、一度EA等に組み込んでしまえば、もう時間の変換に悩まされることはありません。

LINE通知機能

EAがポジションを持ったときや決済した時にLINE通知を行う機能は根強い人気があります。

MQLAuthライブラリのLINE通知機能を使えば、難しいLINE Notifyの実装を行う必要なく、簡単に自作のEA等にLINE通知を実装することができます。

LINE通知機能のコードについてはこちらをご覧ください
LINE通知[Auth_LineNotify]

MQLAuthを実装する手順

ここでは、MQL4のEAに口座番号縛りを実装する手順を例に、MQLAuthの実装方法について説明します。その他の実装については、リファレンスを参考にしてください。

Articles

  • MQLAuthへの利用登録
  • MQLAuthにEAを登録
  • MQLAuthインクルードファイルのダウンロード
  • EAのソースコードに認証用のコードを追加
  • MQLAuthに口座縛りをする口座番号を登録

MQLAuthへの利用登録

ステップ1 MQLAuthにアクセス

https://mql-auth.com/にアクセスし、サイト右上の「利用登録」をクリックします。

ステップ2 必要事項の入力

メールアドレス、パスワードを入力し、「登録する」ボタンをクリックします。

ステップ3 メールアドレス確認用のメール送信

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

ステップ4 メールアドレスの認証

メールを開き、リンク部分をクリックします。

メールが届いていない場合は迷惑メールフォルダもご確認ください。

ステップ5 メールアドレスの認証完了

これでアカウントの作成が完了しました。続いて「ログイン」をクリックします。

ステップ6 MQLAuthにログイン

先ほど登録した情報でログインします。

ステップ7 マイページに移動

ログインしたら、マイページに移動します。

ステップ8 MQLAuth IDの確認

「MQLAuth ID」という項目があるので、これをメモしておきます。これがインジケーターの提供者を識別する番号になります。後ほどインジケーターのソースコードに記入します。

次の項目 MQLAuthにEAを登録 >>

MQLAuthにEAを登録

ステップ1 EA・インジケーター登録画面に入る

サイト上部メニューの「ユーザー管理」をクリックします。

ステップ2 EA・インジケーターの新規登録画面へ

「EA・インジケーターの登録」をクリックします。

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

必要事項を記入します。一斉メッセージ機能はここでは利用しないので説明を省いています。

ステップ4 登録完了

これで登録が完了しました。

<< 前の項目 MQLAuthへの利用登録

次の項目 MQLAuthインクルードファイルのダウンロード >>

MQLAuthインクルードファイルのダウンロード

ファイルのダウンロード

MQLAuthのインクルードファイル(.mqh)をダウンロードし、指定のフォルダに入れます。

  • [最新版 Ver.1.08(2022/06/03) ダウンロード] MQLAuth_108.zip
  • [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を使うために必要なインクルードファイル(.mqh)と、MQLAuthのサンプルコードが入った圧縮ファイルです。
サンプルコードはMQL4用のフォーマット”.mq4″になっていますが、”.mq5″にリネームするだけでMQL5でも使用できます。

圧縮ファイルの内容

MQLAuth.zipを解凍すると、Includeフォルダの中に MQLAuth.mqh というファイルがあります。

このMQLAuth.mqhを以下のフォルダにコピーしてください。
MT4の場合
   [MT4のファイル保存フォルダ]/MQL4/Include/
MT5の場合
   [MT5のファイル保存フォルダ]/MQL5/Include/

<< 前の項目 MQLAuthにEAを登録

次の項目 EAのソースコードに認証用のコードを追加 >>

EAのソースコードに認証用のコードを追加

ステップ1 ソースコード先頭に追記

MQLソースコードの先頭に以下の3行を追加します。

				
					#define MQLAUTH_ID "先ほどメモした「MQLAuth ID」"
#define APPLICATION_NAME "MQLAuthに登録するEAの名称"
#include <MQLAuth.mqh>				
			

ステップ2 OnInit()に追記

口座認証はタイマーを利用するため、OnInit()に以下のソースコードを追加します。

				
					EventSetTimer(1);				
			

ステップ3 OnTimer()の実装

OnTimer()に以下のソースコードを追加します。この例では、最初の認証の後、タイマーを1日後にセットしています。

				
					if(AccountNumber() != 0) {
    if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) {
      // 認証に成功した場合の処理をここに書く
      Print("[口座番号: " + (string)AccountNumber() + "] 認証に成功しました。");
    } else {
      // 認証に失敗した場合の処理をここに書く
      Print("[口座番号: " + (string)AccountNumber() 
      + "] 認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
    }
    EventSetTimer(86400);
}				
			

OnTimer()がない場合は、以下のソースコードを追加します。

				
					void OnTimer() {
    if(AccountNumber() != 0) {
        if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) {
            // 認証に成功した場合の処理をここに書く
            Print("[口座番号: " + (string)AccountNumber() + "] 認証に成功しました。");
        } else {
            // 認証に失敗した場合の処理をここに書く
            Print("[口座番号: " + (string)AccountNumber() 
            + "] 認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
        }
        EventSetTimer(86400);
    }
}				
			

MQLソースコードの追加は以上です。

<< 前の項目 MQLAuthインクルードファイルのダウンロード

次の項目 MQLAuthに口座縛りをする口座番号を登録 >>

MQLAuthに口座縛りをする口座番号を登録

ステップ1 認証追加画面へ入る

サイト上部メニューの「ユーザー管理」をクリックします。

ステップ2 新規ユーザー登録画面へ

「ユーザーの登録」をクリックします。

ステップ3 ユーザーの登録

各項目を入力し、「ユーザー追加」ボタンをクリックします。

ステップ4 登録完了

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

<< 前の項目 EAのソースコードに認証用のコードを追加

注意点

Articles

  • 「DLLの使用を許可する」を忘れずに
  • 認証サーバアクセスの制限について
  • 口座番号認証を使用する上での注意点

「DLLの使用を許可する」を忘れずに

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

認証サーバアクセスの制限について

MQLAuthはサーバにアクセスし認証情報を読み取っています。

サーバアクセスはアクセス回数上限が設定されており、同一端末からのアクセスが30回/60秒を超えるとサーバがエラーを返します。

サーバがエラーを返すと、認証が失敗します。 そのため、不必要な連続認証アクセスとならないよう、実装には気を付けてください。

なお、ダウンロードしたMQLAuth.mqhを改変せず使用する場合は、2回目のアクセスからはローカルキャッシュを読み込むため、サーバへのアクセスは行われません。

認証システムへのアクセス回数上限
30回/60秒毎 (超過した場合はエラーを返す)

口座番号認証を使用する上での注意点

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(86400); ・・・②
      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回目以降の認証ではサーバへのアクセスは行われません。

© 2020 MQLAuth. All rights reserved