[MT4]EAに口座縛り/期間限定縛りをかける種類と方法(MT5)

良いEAができた場合、内内で配布したい場合があります。しかし、知らない間に自分のEAが出回っていた場合、身内を疑いたくはないものです。

 

EA・インジケーターを第3者に渡すとき、何かしらの制限をかけておかないと、コピーされてしまう可能性があります。制限がないEAの場合、コピーされれば、知らぬ間にいろいろなところで使われてしまいます。

 

そこで、EAに制限をかける必要性がでてきますが、現在では様々な方法があります。 EAにつける制限にはいろいろありますが、それぞれ一長一短あります。 状況に応じて(技術レベルに応じて)使い分けられるといろいろと便利だと思います。  

固定のパスワードで口座制限をかける

これも比較的安直ですが、ソースコードに適当にパスワードを書いて、それをパラメータで認証させる方法です。

 

お察しの通り、EAとパスワードがセットで流出すると何の意味もありません。もう一捻りしたいところです。

 

コンパイル時に口座番号を書き 口座縛りする方法

これは比較的かんたんで、ソースコードに直接口座番号とFX業者を書き込んでおき、その組み合わせ以外のユーザーの場合は稼働しないようにプログラミングするだけです。

 

口座番号で縛ったり、特定のMT4業者でしか動かないようにしたり、デモ口座では稼働しないようにすることができます。

 

しかし、利用者ごとにソースコードを編集してコンパイルする必要があるため、2~3人の場合は良いですが、数十人に対して配布する場合は、かなり面倒です。

ヒューマンエラーも発生する要因になります。

 

まず、 ソースコードに直接 「この口座番号、この口座名のアカウントでしか動かしませんよ」という 記述をします。

コンパイルすると、 その指定した口座以外では、何も動作しなくなります。  

 

口座番号からパスワードを作って口座縛りをかける

何を言っているのかというと、例えば口座番号が123456789だったとします。

 

その場合、(一桁目の数字)*4+(二桁目の数字)*3+(3桁目の数字)*2の答えである1*4+2*3+9*2=28をパスワードにして、 パラメータ設定でこの数値を入力しないとEAが稼働しないようにします。

これはあくまでわかりやすく伝えるための簡単な計算式ですが、実際にはもっと複雑にします。

メリットとしては、EAを毎回コンパイルしなくていいことと、EAを先にばらまいてからパスワードを発行するという流れを取れることです。  

 

 

サーバーで認証で口座縛りをかける

FXON(ゴゴジャン)のEAがやっている方法です。EAを使う=ネットにつながっているということなので、自サーバーにアクセスさせて、口座番号や口座名の認証を行います。

 

一番強固なプロテクトですが、ちょっと気軽にやるには荷が重すぎます。

今でこそWebRequestで簡単にhttpリクエストできますが、2014年以前はDLLを組まなければいけないわ、ユーザーにDLLをセットしてもらわなくてはいけないわ、で比較的大変でした。

 

(MT4のFTP機能を使えば間接的にアクセス自体はできましたが、FTPのログイン情報がなければ通信できないことを考えると、セキュリティの観点からは現実的ではありませんでした。)

 

しかし、一度作ってしまえば、たとえ誰かがEAをばらまいたとしても、サーバー側からいろいろと操作したり、情報収集することが可能です。(口座番号とか口座名とか資産データとか吸い出すこともその気になれば可能です。)

 

 WebRequestとは、EAからWEBにアクセスする関数で、数行の記述で、ネットワークに接続することが可能です。

 

接続方法もGETメソッドとPOSTメソッドがあるので、ログインが必要なポータル系サイトでも、ログインして表示させたりすることもできます。

てきとうにレンタルサーバーを借りて、データベースを構築しておけば、 このWebRequestと併用することで、オンライン認証ができます。

 

この認証方法の場合、プログラムの組み方によっては、サーバー側からEAを稼働停止したり、リストを取得することができるという非常に強力なメリットがあります。

 

デメリットは、 開発者がMQL、SQL、PHP(もしくはPerl)、HTML、(ちょっとした)サーバー構築、通信プロトコルの知識に精通していなければならないので、すこしハードルが高いということです。  

 

MQL&PHP サーバーを経由するコピートレードシステムを作るやり方 についても1から解説していますので、余力がある方はトライしてみてください。  

MQL&PHP サーバーを経由するコピートレードシステムを作るやり方1

 

もしどうしても、開発者がいなければご相談ください。 (サーバーが絡む場合の開発相場はEA開発とは全然違いますからね…)  

 

 

有効期限をつけるやり方(超簡単バージョン)

EAやインジケーターをお試しで使ってもらい、気に入ってもらったら購入してもらうというビジネスモデルは、買い手にとっても売り手に取ってもそこそこメリットのある販売方法です。

 

そのためには、EA、インジケーターに有効期限機能をつける必要があります。 一番いいのはウェブサーバー認証方式にして管理することですが、簡易的にEAに制限をつけることもできます。

 

例えば、2019年10月1日から2019年12月31日までの間、 利用可能にしたい場合、

これをOnCalculate(OnStart, Start)の直下に貼り付ければ、 その期間だけ有効なEA,インジケーターが出来上がります。

ここで注意してもらいたいのは、 日付のフォーマットです。 日付は、必ず半角で 2003.8.12 17:35 西暦.月.日 時:分 のフォーマットで記入してください。 「日」と「時」の間は、半角スペースです。  

 

ワンタイムパスワードで口座縛りをかける

銀行とかが最近導入している認証にワンタイムパスワードというものがあります。

これはその時、数分間だけ有効なパスワードというやつです。

 

逆に言うと、このワンタイムパスワードは時刻から生成されています。 これはEAの縛りにももちろん使えます。

 

たとえば、2017年5月の間だけEAをお試しで配布したいとします。 その場合、口座番号が1234567だったとして、2017と5から適当な四則演算をしてパスワードを生成します。(2017x5x1234567=12450608195)

 

このパスワードをEAと一緒に配布すれば5月の間だけ有効なEAができるわけです。

  6月以降も引き続き利用する場合は、またワンタイムパスワードを発行すれば、EAを再配布する手間なしに、システムを実質的に継続利用させることができます。

 

※パスワードの生成アルゴリズムは推測されないように、実際にはもっと複雑にしましょう。  

 

EAのトレードがコピートレードで流出するのを防ぐ方法

何かしらEAを配布するときには流出のリスクが伴います。EAそのものにアカウント縛りや、FX業者縛りなどをつけることが一般的ですが、他のチャートにコピートレードシステムを設置されると、リアルタイムでトレードデータが流出する可能性があります。

 

コピートレードでEAの口座縛りが回避される

これはどういうことかというと、例えば50,000円するEAが販売されていて、それを3つのアカウントで使用したいと考えています。しかし、そのEAには口座認証があり、複数のアカウント上で稼働させることはできません。

しかし、一つのアカウント上でその有料EAを稼働させて、そのMT4にコピートレードシステムを稼働させれば、第二・第三のMT4にトレードをコピーすることが可能というわけです。

EAを利用する側からすればお得な使い方ですが、販売する側、提供する側からすると、何とかしてこれを阻止したいというわけです。

 

ちょっとした対策

解決法から言うと、
他のチャート、ファイル、グローバル変数、ログ上でコピーツールEAを稼働させないように記述すれば可能です。

 

EAをセットしているチャート以外のチャートを強制的に閉じさせる

コピーツールを稼働させるには、それが中継システムを経由するしないに関係なく、
少なくとも一つのチャート上に専用のEAなりスクリプトなりを設置しなければならないタイプが多いです。

 

EAでは他のチャートにアクセスして、それを閉じることができる関数
ChartFirst()、ChartNext()、ChartID、ChartCloseがあるので、これで自分以外のチャートを強制的に閉じます。

 

ファイル関数でアクセスできる位置にあるファイルをEAから全部削除させる

コピートレードツールがファイル関数でトレードデータを出力している可能性も高いので、定期的にファイル関数(FolderClean()など)で削除し続ける記述をします。ただし、ファイル名の推測ができていないとファイル名の取得の点がちょっと問題になります。

 

大量のダミーログを出力する

ログからコピートレードデータを引っ張ってくるパターンのツールもあるので、ダミーのログを大量に出力します。本当はオーダーを出していないのに”OrderOpen”などの文字列が入ったログを出力します。

 

グローバル変数をすべて削除する

可能性としては低いですが、グローバル変数を使っているツールの可能性もなくはないので、GlobalVariablesDeleteAll()で一応消しておきます。

 

チャート上のオブジェクトを定期的に強制削除する

これも可能性としては低いですが、チャート上のオブジェクトからトレードデータを取っている可能性もなくはないので、オブジェクトも排除します。

 

この対策のデメリット

この方法を使うともちろんデメリットもあります。

それは利用者からするとそのEAが稼働しているチャートしか開けないということです。

もし裁量トレードもする利用者であれば苦情がきてもしょうがないですね。事前告知は必須です。

しかし、この業界にはそれでもOKという層も比較的あって、特にMT4のアカウントだけ借りて疑似的にファンドをしているような層と取引する場合にはこういった処理は必要になるかと思います。

もしコピートレードを阻止するだけでなく、コピートレードされていることを遠隔で把握したい場合には、(”お仕置き”をしたい場合には)
サーバーを設置して、EAからサーバーにデータを流すシステムをあらかじめ設置しておく必要があります。

もともとがWEBアカウント認証方式の場合、データベースのテーブルの列にほかのチャートの情報を入れる列を作ればいいだけなので簡単です。

 

100%防げるわけではない

この方法の場合でも完全にコピートレードによるトレードの流出を防げるわけではありません。もし使わられているコピートレードシステムがチャートに依存しない仕様のシステムの場合、突破される可能性があります。

 

具体的にはEAではなく、インジケーターの形式でコピーするとかです。しかし、その場合、コピー元はインジケーターで、コピー先はEAになるので、ユーザーフレンドリーなコピートレードシステムとは言い難いですね。

また、ファイル関数やログ出力でトレードデータを抜き取る、ということも考えられますが、安定性とスピードにかけるので、そういったコピートレードシステムもあまり優秀なシステムとは言えないと思います。(本題からはそれますけど…)

この投稿は役に立ちましたか? 役に立った 役に立たなかった 6 人中 6 人がこの 投稿 は役に立ったと言っています。
 

コメント

  1. K より:

    こんにちは。

    いきなりの御連絡すいません。

    私のEAに使用期間の縛りを入れたいのですがうまく出来ません。

    簡単に組み込めるコードは無いでしょうか?

    有料で構いませんので御教授お願い致します。

  2. 山﨑謙二 より:

    お世話になります。

    オリジナルインジケーターを作成しているのですが、、
    貸出に期限をつけたいと思っています。

    1週間、1ヶ月のスパンを考えています。

    操作手順が全くわかりません。
    簡単に活用できる物がありましたらよろしくお願い致します。

  3. Golgo13 より:

    XMの口座縛りをやりたいです。ソースコードの何番目に入れたらよいですか?詳しく知りたいです。ご教授お願いいたします。

  4. マッキー より:

    初めまして。EAの口座縛りをしたいのですが具体的なやり方を教えていただきたいのですが、よろしくお願いいたします。

Message

メールアドレスが公開されることはありません。

CAPTCHA


関連記事

(MQL4)初めてのEA自作のための教科書~実用編~[EA自作]

実用に向けたEAのコーディングについて説明します。本当に1からEAの開発について知りたい方はこちら。

記事を読む

(MQL4)WEBサイトの情報を取得するやり方[EA]WebRequest

MT4のチャート上にWEBサイトの情報を参照する方法について紹介します。   背景

記事を読む

2chの市況版のスレをテキストマイニングして逆張りするやり方

よく「大衆の逆をいけば勝てる」みたいなことが相場の世界では言われますよね。今回は2chの市況版の住民

記事を読む

(MQL4)インジケーターをEA化するやり方[EA自作]

iCustomでZigZagをEA化する(初歩編) インジケーターとiCustom 今回はインジ

記事を読む

とある両建てロジックのEA検証(コードあり)

今回はちょっとしたシンプルな実験を行います。 お題は両建てです。 ポジションが0の場合SLTP付

記事を読む

 

Translate »
上に戻る