インジゲーターに利用期限の制御をつける方法
公開日:2018/06/11
通常、インジゲーターは自分で作ったり、購入したりすれば、ずっと利用することができます。
しかし、一部のインジゲーターには、利用期限の制御がついていたりするものもあります。
自分で使うだけなら必要のない機能ですが、インジゲーターを配布したり販売したりするときに制御をつける必要が出てくる場合もあります。
例えば、1ヶ月のみ体験版として利用できるインジゲーターとか、
月額制で、毎月契約を更新したら使えるようにする場合など。
このようなインジゲーターを作りたいときに利用期限の機能をつける必要があると思います。
今回は、この利用期限をつける方法について書いていきます。
以下から作成過程を説明していきます。
準備
今回は、利用期限に時間を指定する場合を例に紹介していきます。
わかりやすいように自作したインジゲーターにコードを追加して結果を見ていきます。
利用したインジゲーターは、「
UP DOWN ARROWS」です。
このインジゲーターは、陰線なら下矢印、陽線なら上矢印を表示するというシンプルなものです。
ソースコードの説明
まず、制御をつける場所ですが、2パターン作ってみました。
■パターン①インジゲーターを起動したときに判定する方法
これは、インジゲーターをMT4で起動したタイミングで判定する方法で、
OnInit()の中で処理をします。以下、OnInit内に追加したコード。
①if(Minute() >= 20){
②Alert("利用期限を過ぎました。");
③return(INIT_FAILED);
}
①if(Minute() >= 20){}
ここで、利用期限の条件を指定します。
今回は、時刻が20分以降になったら利用できなくするという条件を指定。
②Alert("利用期限を過ぎました。");
利用期限を過ぎたら、アラートを鳴らして、メッセージを表示させます。
③return(INIT_FAILED);
インジゲーターを強制終了させます。
■パターン②ティックごとに判定する方法
これは、ティックが更新されるごとに判定する方法で、
start()の中で処理をします。コード内容は上記パターン①と同じです。
それでは、コンパイルして実行してみます。
実行結果
今回は、20分以降に制御をつけたので、18分にインジゲーターを稼動させました。
このときは、まだ利用期限の制御の条件を満たしていないので、通常どおり矢印が表示されました。
そして、20分になったときの結果が以下です。
パターン①(int OnInit内のみで制御)
パターン②(int start内で制御)
キャプチャしたタイミングが微妙にずれましたが、違いがわかるでしょうか?
19分の足が、パターン①は右から2番目の陰線、パターン②は一番右の陽線です。
わかりずらくてすみません。。
20分になったときにパターン②では、アラートが鳴り、以下のようなポップアップが表示されて、20分の足には矢印が表示されていません。
しかし、パターン①の場合は、20分になってもアラートは鳴らず、ポップアップも表示されませんでした。
そして、何もなかったかのように、20分以降の足にも矢印が表示されています。
これは、当たり前といえば当たり前なんですが、
OnInitはインジゲーターを稼動させたときに1回だけ実行される処理なので、
稼動させたときに利用期限内であれば、そのあと、いくら時間が経過しようが、もう処理されることはないので、利用期限が判定されることがないため、動き続けます。
ちなみに、チャートを5分足や1時間足に切り替えた場合やMT4を再起動した場合には、OnInitの処理がされるので、アラートが鳴り、矢印はすべて消えます。
実際やってみた結果が以下の画像です。
きれいさっぱり、矢印は消えてます。
まとめ
いかがだったでしょうか?
利用期限の制御をつけることは簡単にできますが、処理をする場所によっては、意図しない動きをしてしまうので注意が必要です。
まあ、普通の使い方であれば、MT4を稼動させっぱなしにすることはないと思いますが、
VPSとかでずーっと動かし続けることも可能なので、制御はstartの中で処理させた方がいいですね。
今回は、サクッと作った制御で分でしか判定してませんでしたが、
このほかにも、西暦とか月、日、時間を指定することもできます。
また、時間だけじゃなく、口座番号や業者名、アカウント名などでも制御をかけることもできます。
これについては、また別の日に詳しく紹介していきます。
それでは、また。
今回使用したMQL一覧
関連ページ