yuki
MQLAuthは月額サービスですので、いつでもお好きなタイミングで利用を停止することができます。今回はそれに伴い、EAからMQLAuthを削除する手順をご説明します
カオチャイ
基本的には、MQLAuthを利用している部分のコードを削除し、従来の認証方法に変えるだけのシンプルな変更で問題ありません!
ソースコードの編集
日付が変わるときに口座番号認証をするEAを作る手順で作ったEAのMQLAuthを外し、特定の口座番号12345678で動くEAに変更してみましょう。
下記のサンプルのソースコードを使ってご説明していきます。
//+------------------------------------------------------------------+
//| OneDayAuth.mq4 |
//| ©2020 MT4ツール製作【シストレファクトリー】 |
//| https://interactivebrokers.work/ |
//+------------------------------------------------------------------+
#define MQLAUTH_ID "sample000000"
#define APPLICATION_NAME "sample"
#define HTTP_QUERY_FLAG -2147483648
#include <MQLAuth.mqh>
#property copyright "©2020 MT4ツール製作【シストレファクトリー】"
#property link "https://interactivebrokers.work/"
#property version "1.00"
#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);
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();
}
}
}
}
//+------------------------------------------------------------------+
MQLAuthのコードを削除していきます
// 以下を削除
// #define MQLAUTH_ID "sample000000"
// #define APPLICATION_NAME "sample"
// #define HTTP_QUERY_FLAG -2147483648
// #include <MQLAuth.mqh>
まずは一番上部の、MQLAuthが利用している定義部分を削除します。
#define ACCOUNTNO 12345678 // 認証する口座番号
続いて、認証したい口座番号をdefineで定義します。
int OnInit()
{
if(IsTesting()) {
// if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) { // この行を削除
if(AccountNumber() == ACCOUNTNO) { // この行を追加
_isAuthorized = true;
Print("口座認証に成功しました。");
} else {
_isAuthorized = false;
Print("口座認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
ExpertRemove();
}
}
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer() {
if(AccountInfoInteger(ACCOUNT_LOGIN) != 0) {
if(TimeDay(TimeLocal()) != TimeDay(_date)) {
_date = TimeLocal();
// if(AuthByAccountNumber_ReturnBool(MQLAUTH_ID, APPLICATION_NAME)) { // この行を削除
if(AccountNumber() == ACCOUNTNO) { // この行を追加
_isAuthorized = true;
Print("口座認証に成功しました。");
} else {
_isAuthorized = false;
Alert("口座認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
ExpertRemove();
}
}
}
}
あとは、MQLAuthサーバにアクセスしている関数を、先ほど定義した口座番号の確認に置き換えるだけです。
カオチャイ
たったこれだけの作業ですので、いつでも利用停止が可能ですよ!
今回作成したコード
//+------------------------------------------------------------------+
//| OneDayAuth.mq4 |
//| ©2020 MT4ツール製作【シストレファクトリー】 |
//| https://interactivebrokers.work/ |
//+------------------------------------------------------------------+
#property copyright "©2020 MT4ツール製作【シストレファクトリー】"
#property link "https://interactivebrokers.work/"
#property version "1.00"
#property strict
#define ACCOUNTNO 12345678 // 認証する口座番号
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(IsTesting()) {
if(AccountNumber() == ACCOUNTNO) {
_isAuthorized = true;
Print("口座認証に成功しました。");
} else {
_isAuthorized = false;
Print("口座認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
ExpertRemove();
}
}
EventSetTimer(1);
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(AccountNumber() == ACCOUNTNO) {
_isAuthorized = true;
Print("口座認証に成功しました。");
} else {
_isAuthorized = false;
Alert("口座認証に失敗しました。利用期限が過ぎているか、この口座番号では利用できません。");
ExpertRemove();
}
}
}
}
//+------------------------------------------------------------------+
yuki
既にMQLAuthを利用したEAを配布している場合は、認証情報自体は無くならないのでそのまま置いておいても問題ありませんが、不安であればMQLAuthを削除したソースコードをコンパイルして利用者に配布すれば良いでしょう。
カオチャイ
認証に関わるコード周りは削除しにくいイメージがありますが、MQLAuthはいつでも気軽に削除できますので安心してご利用ください。
yuki
なお、EA販売サイトに出品する場合はその販売サイト独自の認証を利用する場合がほとんどかと思います。その場合は認証に関する部分を全て削除してくださいね
ダウンロードでそのまま使えるコード集
【コピペでOK】RSIのEAに口座認証や一括メッセージ機能を実装してみました
https://interactivebrokers.work/start_mqlauth/
個人でEAを販売する際につけてお...
【コピペでOK】MT4のチャートから飛ばすURLをソースコードを編集せずに、MQLAuthの管理画面から変えられるようにする
https://interactivebrokers.work/start_mqlauth/
メッセージのURL変更を簡単に
...
【コピペでOK】バイナリーオプションサインツールに体験版機能を機能を実装してみました
https://interactivebrokers.work/start_mqlauth/
体験版機能付きのBO用サインツー...
おすすめ参考記事
MT4のEAやインジケーターにサーバー認証(口座番号縛り)を実装する方法MQLAuthを使って、EAやインジケーターに口座番号認証を実装する方法を紹介しています。
従来のコピー防止だけでなく、遠隔での停止や決済機能の自動化なども可能になる画期的な認証方法です。...
自動的に期限付き体験版になる機能をEAに追加する方法
https://interactivebrokers.work/start_mqlauth/
体験版機能を使うとなにができる?...
バイナリーオプションのインジケーターに口座認証を実装する方法
https://interactivebrokers.work/start_mqlauth/
口座番号認証はパスワードよりも安...