【MQL4テクニック】口座縛りの最も簡単な方法。不正なコピーからオリジナルのEAを守れ!!

MQL4テクニック

EAの転売や不正なコピーを防ぐため、最も簡単にEAやインジケータに口座縛りをする方法をご紹介します。

口座番号を取得する方法 (下準備)

//MT4にログインしている口座番号を取得します
int number = AccountNumber();

AccountNumber関数を使用することで、MT4でログインをしている証券会社の口座番号を取得することが出来ます。

これらの情報を踏まえて実際に口座縛りをしてみましょう。

口座縛りの方法1

//渡したい相手の口座番号
int number = 123456789;

int OnInit(){

   if( AccountNumber() != number){
      Alert("Auth failed\n\n","無効な口座番号です。");
      return(INIT_FAILED);
   }
   Comment("Auth completed");
   return(INIT_SUCCEEDED);
}

変数number相手の口座番号を代入し、OnInit関数内に数行のコードを追加するだけでとても簡単に口座縛りを実装することが可能です。

取得した口座番号とソースコードに記載していた口座番号が異なると、「無効な口座番号です。」というアラートが鳴りEAやインジケータが使用不可能になります。

デメリットは毎回コンパイルする負担がかかることですが、少人数のみの販売や共有であればとても便利です。

口座縛りの方法2

input long inputKey = 0;//認証キー

int OnInit(){
   
   long genKey = (long)AccountNumber() * 99 + 99;
 
   if(inputKey != genKey){
      Alert("Auth failed");
      return(INIT_FAILED);
   }
   return(INIT_SUCCEEDED);
}

次に紹介するのは、口座番号を数式に組み込んでキーを作成するタイプの口座縛りになります。

相手の口座番号を聞き、口座番号 × 99+ 99 のキーを相手に伝えます。
そのキーをパラメータから入力することで認証をする仕組みになります。

数式がバレてしまうと口座縛りとしての効果が無くなってしまうので、数式は特定できないような複雑なものにしてください。

方法1に比べて口座番号に応じてソースコードを書き替える必要がないので、こちらの方が負担は少ないです。

POINT

こちらの記事で悩みが解決されない場合は、
MQL4 User Community に参加してお気軽にご質問ください。

MQL4初心者の方や開発に行き詰った方の悩みを、 様々なソフトウェアやツールを開発してきた経験豊富なエンジニアたちが解決いたします。