皆さん、みーでございます。
今回は少し上級者向けの内容となっております。
自作したインジケーター、サインツールを販売や配布する場合に、何も対策しないと、簡単にEA化されてしまいます。そして、転売販売される可能性だってあります。
そうした転売防止策の一つとして、EA化されない(させない)手法を公開します。
この手法、、、2024年9月現時点において、ネットに情報がないんです。なので、かなり有益な情報となりますし、完全に私のオリジナル防止策です。間違っても、このノウハウ(テクニック)だけを販売しないでくださいね(笑)
EA化は何が問題か
バイナリ―オプションでのEA化は、他人が作成したインジケーターやサインツールの情報を取得し、自動売買させることを言います。
つまり、皆様が研究して作成したロジックを、他人が勝手に使用して、自動売買として販売することができます。MQL言語の「iCustom」と呼ばれる関数を使用すれば、簡単にサインツールを呼び出すことが可能です。一般的な自動売買ツールには、この「iCustom」を利用してサインを取得する処理が実装されています。
良いサインツールは、すぐにEA化されますので、ノウハウを他人へ流出させないことも、インジケーターやサインツールにおいて重要なことです。そうした方への貢献だけはしたくないものです。他人のロジックで転売して稼がれることは防ぎたいですよね。
少し余談ですが、私の有料サインツール「mi_LineTrade_Signal」は当然、本対策を実施しており、ユーザー認証もありますので、転売への対策も十分です。その経験から、今回は特別に「iCustom」から呼び出されても情報を返却しない方法を公開します。
iCustom()からの呼び出しを防ぐ方法
iCustom()から呼び出されたのか、チャートから呼び出されたかを判断することが出来れば、それが一番簡単な方法なのですが、その方法がないんです・・・
なので、世の中にあるインジケーターやサインツールはiCustom()からの呼び出しを防止できませんので、サイン情報を取得し放題という状況です。
しかし、この方法を使えば、iCustom()から呼び出されても、サインの情報を返却しませんので、EA化されることはありません。
その方法は【Timerイベントを使用】することです。Timerは、チャートから呼び出された場合は正しく機能しますが、iCustom()から呼び出さた場合はイベント処理が行われません。これを利用します!
static int Tick_count = 0; static bool IsCalledCustom = true; // Timerイベント発行 int init() { EventSetTimer(1); ); start(){ // Timerイベントが処理されない場合(IsCalledCustom == true)は処理しない if(Tick_count > 0 && IsCalledCustom == true){ return(0); } Tick_count ++; } void OnTimer(){ // IsCalledCustom をfalse(Timerイベントが処理された) IsCalledCustom = false; EventKillTimer(); }
これだけです。
この実装を組み込んでおくか否かで、EA化されるサインツールになるのか、EA化されないサインツールになるかが決まります。
ぜひ、これからサインツールを作る人も、今まで作成した方も、EA化されたくないツールには必ず実装しておいてください!
この手法の名前は、【mi iCustom Block】(通常:カスブロ)です!
コメントを残す