自身で作成したEAに口座縛り (アカウントロック) を付けるコードです。
作成したEAに口座縛りを付けることで、設定したアカウント、設定したFX会社以外でEAが稼働しないようにすることができます。
これをEAに組み込むことで、第三者が勝手にコピーしたEAは他で使用することができなくなります。
口座縛りのコード
次のコードはリアル口座で、こちらが指定したアカウント (口座番号)、指定したFX会社でのみEAを稼働させることができます。
また、指定したFX会社のデモ口座でのみEAが稼働します。デモ口座ではアカウントに関係なくEAは稼働します。
コード
EAの使用を許可するために
4行目に許可するアカウント (口座) 番号、5行目にMT4上でのFX会社名 を設定してください。
FX会社名はこちらのコードを使って出力された⑫がMT4上でのFX会社名になります。アカウント番号は⑩で確認することができます。
// リアル口座、デモ口座の口座縛り
#property strict
int Accountnumber = 12345678; // アカウント 口座番号
string ACompany = "Tradexfin Limited"; // FX会社 ここではXMTrading
void OnInit() {
if(IsDemo()==false) { // リアル口座で口座縛り
if(AccountNumber() != Accountnumber) { // ①アカウント縛り
MessageBox("アカウント" + (string)Accountnumber +
"でのみ有効なEAです。終了します。\n本口座のアカウント:" + (string)AccountNumber(), "確認");
ExpertRemove();
}
if(AccountCompany() != ACompany) { // ②FX会社の縛り
MessageBox("XMTrading口座でのみ有効なEAです。終了します。\n本口座のアカウント:" +
(string)AccountNumber() + " \nFX会社名:" + AccountCompany(), "確認");
ExpertRemove();
}
}else{ // デモ口座で口座縛り
if(AccountCompany() != ACompany) { // ②FX会社の縛り
MessageBox("XMTradingのデモ口座で有効なEAです。終了します。\n本口座のアカウント:" +
(string)AccountNumber() + " \nFX会社名:" + AccountCompany(), "確認");
ExpertRemove();
}
}
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
上記のコードをデモ口座でテストした場合は、EAを通常どおり稼働させることができます。何も起きません。
しかし、リアル口座で、4行目に設定しているアカウント以外のMT4にEAを稼働させようとした場合、次のメッセージが出てEAがチャート上から削除されます。
デモ口座に対して、FX会社に対する縛りを無くしたい時は、22~26行目を削除してください。
デモ口座に対して、FX会社に対する縛りに加えて、アカウント (口座番号) の縛りを付けたい時は、10~14行目のコードをコピーして20と22行目の間の21行目にペーストしてください。