前回、「
インジゲーターに利用期限の制御をつける方法」という記事を書きました。
日付や時間を指定して、制御をかける方法も有効的ですが、これだけだと、 誰でもその期間内であれば、
インジゲーターやEAを利用することができてしまいます。
そこで今回は、指定した口座番号でのみインジゲーターを利用することができるように制御をつけてみます。
以下から作成過程を説明していきます。
今回は、利用制限に口座番号を指定する場合を例に紹介していきます。
わかりやすいように自作したインジゲーターにコードを追加して結果を見ていきます。
前回同様に、利用したインジゲーターは、「
UP DOWN ARROWS」です。
このインジゲーターは、陰線なら下矢印、陽線なら上矢印を表示するというシンプルなものです。
まず、制御をつける場所ですが、前回はOnInit内にコードを追加した場合、
チャートを切り替えたり、MT4を再起動しない限り、インジゲーターが正常に動き続けて、
矢印が表示されてしまうということがわかったので、
今回は、start内だけにコードを追加していきます。
■グローバル変数の設定
start()の中で利用する変数を宣言します。
①int flag = 0;
■start内に追加するコード
start()の中で処理をします。以下、start内に追加したコード。
今回は、わかりやすいように口座番号が一致した場合にもアラートを鳴らしています。
①if(AccountNumber() != 1234567 && flag == 0){
②Alert("無効な口座番号です。");
③flag = 1;
④return(INIT_FAILED);
}
⑤if(AccountNumber() == 1234567 && flag == 0){
⑥Alert("利用可能な口座番号です。");
⑦flag = 1;
}
①if(AccountNumber() != 1234567 && flag == 0){
ここで、口座番号のチェックをします。
今回は、口座番号が1234567ではなければという条件を指定。
そして、アラートを連続で鳴らさないためにflagで制御します。
②Alert("無効な口座番号です。");
口座番号が間違っていたら、アラートを鳴らして、メッセージを表示させます。
③flag = 1;
アラートを連続で鳴らさないようにフラグを立てます。
本当は、bool変数でtrueとfalseの判定で...。
④return(INIT_FAILED);
インジゲーターを強制終了させます。
⑤if(AccountNumber() == 1234567 && flag == 0){
ここで、口座番号のチェックをします。
今回は、口座番号が1234567であればという条件を指定。
そして、アラートを連続で鳴らさないためにflagで制御します。
⑥Alert("利用可能な口座番号です。")
口座番号が一致していたら、アラートを鳴らして、メッセージを表示させます。
⑦flag = 1
アラートを連続で鳴らさないようにフラグを立てます。
本当は、bool変数でtrueとfalseの判定で...。
それでは、コンパイルして実行してみます。
今回は、口座番号が1234567でなければインジゲーターを稼動させないという制御をつけました。
まず、口座番号が1234567でない場合でインジゲーターを稼動させてみました。
ちゃんと、アラートを鳴らし、矢印も表示されませんでした。
次に、口座番号が1234567という口座はないので、ソースコードの口座番号を実行するMT4の口座番号に変えて実行します。
こちらもちゃんと、アラートを鳴らしてくれました。
そして、チャート上には矢印が表示されました。(今回は結果画像は省かせていただきます)