クリックした位置の価格で通知するインジケーター「320_ClickNotice」


チャートをクリックした所に線を引き、価格がその線に達すると音やメールで通知します。
また、通知する時にディスプレイのスリープ解除も行えます。

MT5での動作確認済みです。拡張子を「mq4」から「mq5」に変更して使用してください。

なお、ディスプレイのスリープ解除はWindowsのみが対象です。
また、インジケーターの修正と「DLLの使用を許可する」にチェックを入れる必要があります。
詳細は後述のディスプレイのスリープ解除についてを参照してください。

ファイルはMT4用のトップページからダウンロードできます。

画面イメージ
320_ClickNotice.mq4を使用した時のイメージ
チャートをクリックすると黄色い線が引かれます。
現在の価格より高い価格帯と安い価格帯にそれぞれ1本ずつ引けます。
別の位置でクリックすると改めて線を引き直します。
同じ位置でクリックまたは別の位置でダブルクリックすると線が消えます。
(処理の都合上、線が消えるまで1秒ほど時間がかかります)
Ver2.10から線が消えるまでの時間を0.1秒に変更しました。


当インジケーターのメリットとデメリット

当インジケーターはMT4のターミナルにある「アラーム設定」に似ています。
なので、アラーム設定と比較してのメリット・デメリットになります。

メリットは以下の通りです。
1.クリックするだけなのでアラームの設定が簡単
2.ディスプレイのスリープ解除ができる

デメリットは以下の通りですが、使う人によっては他にもデメリットに感じられるものがあるかもしれません。
1.クリック指定なので価格を細かく設定できない
 Ver2.10から価格を手動で設定(変更)しやすくしました。詳細はパラメーター「線の選択(=true)」を参照してください。

2.インジケーターを挿入したチャートは常に表示しておく必要がある
3.価格の条件にAskを指定できない(条件は「Bid>=」と「Bid<=」のみ)
 Ver2.10からAskを指定できるようにするためパラメーター「価格の条件にAskを指定する(=true)」を追加しました。


導入方法(インストール)

ダウンロードしたZIPファイルを適当なフォルダに展開(解凍)後、通常のインジケーターと同様にMT4に導入してください。
Ver2.10から「WindowsAPI版」が追加されました。詳細は既知の不具合とWindowsAPI版についてを参照してください。

  1. MT4のメニュー「ファイル」から「データフォルダを開く」をクリックする。
  2. エクスプローラーが表示されたら「MQL4」フォルダ内にある「Indicators」フォルダに当インジケーター「320_ClickNotice.mq4」をコピーする。
  3. MT4のナビゲーターウィンドウで右クリックして「更新」をクリックする。またはMT4を再起動する。
  4. ナビゲーターウィンドウに当インジケーターが表示されたらチャートに挿入する。
  5. 必要に応じてパラメーターを変更する。

補足:ZIPファイルはMT4用のトップページからダウンロードできます。

補足:MT5の場合は「MQL5」フォルダの「Indicators」フォルダにコピーしますが、その後、「更新」してもMT5を再起動しても自動的にコンパイルされない場合があるようです。その場合はMetaEditorで開いてからコンパイルしてください。


削除方法(アンインストール)

通常のインジケーターと同様にMT4から削除してください。
インジケーターを削除したら「Files」フォルダにある「320_ClickNotice」で始まるCSVファイルも削除してください。

  1. チャートから当インジケーターを削除する。
  2. MT4のメニュー「ファイル」から「データフォルダを開く」をクリックする。
  3. エクスプローラーが表示されたら「MQL4」フォルダ→「Indicators」フォルダ内の「320_ClickNotice.ex4」や「320_ClickNotice.mq4」を削除する。
  4. MT4のナビゲーターウィンドウで右クリックして「更新」をクリックする。またはMT4を再起動する。

補足:「Files」フォルダはMT4のメニュー「ファイル」から「データフォルダを開く」をクリックし、表示されたエクスプローラーの「MQL4」フォルダ内にあります。


パラメーターの説明

Custom Indicatorの「パラメーターの入力」の画面イメージ(通常版)
パラメーターの入力画面

Custom Indicatorの「パラメーターの入力」の画面イメージ(WindowsAPI版)
パラメーターの入力画面

補足:「■」で始まる項目について

当サイトのインジケーターではパラメーターの仕切りとして使用したり、コメント(注記など)を記載するために使用しています。なので値を変更しても何も変わりません。
当インジケーターはパラメーターが多いので見やすくするための仕切りとして使用しています。

メールを送信する(=true)

メール通知するかを指定します。「true」にするとメール通知します。

補足:メール通知は最大反復数が「2」以上の場合でも1回だけの通知になります。
チャートをクリックして線の位置(通知する価格)が変わった場合は、再度その価格に達した時に1回だけ通知します。

注意:メール通知を行う場合は、あらかじめMT4のオプションにてメールの設定(SMTPサーバーなど)およびメール送信テストを行ってください。

間隔設定(秒)

音で通知してから次の通知までの間隔を指定します。

注意:通貨ペアの価格が変わるたびに指定された価格に達しているか確認するので、間隔が短すぎると音声ファイルが短時間に何度も再生されることになります。

最大反復数

音で通知する回数を指定します。

補足:チャートをクリックして線の位置(通知する価格)が変わった場合は、通知した回数をクリアして最初から数え直します。

線の色

チャートをクリックした時に表示される水平線の色を指定します。
高値用と安値用は別々に指定します。

線の太さ

チャートをクリックした時に表示される水平線の太さを指定します。
高値用と安値用は別々に指定します。

線の種類

チャートをクリックした時に表示される水平線の種類(実線や点線など)を指定します。
高値用と安値用は別々に指定します。
ただし、線の太さが「1:極細」でない場合は常に「実線」になるようです。(MT4の仕様?)

線の選択(=true)

チャートをクリックした時に表示される水平線を選択できるようにするか指定します。
「true」にすると水平線をダブルクリックして選択できるようになります。
ただし、パラメーター「同時押下キー」で同時に押下するキーを指定してる場合のみ有効です。

選択された状態で水平線を右クリックして「Horizontal Lineプロパティ」を表示させ、「パラメーター」タブの「価格」にて価格を設定(変更)できます。

音声ファイル名

MT4の「Sounds」フォルダに存在するWAVファイル名を指定します。
高値用と安値用は別々に指定します。
ファイル名を指定しない、またはファイルが存在しない場合は音による通知は行いません。

補足:「Sounds」フォルダはMT4をインストールしたフォルダ内にあります。
自作のWAVファイルなど、MT4で予め用意されたWAVファイル以外を使用したい場合は、そのWAVファイルを「Sounds」フォルダに格納してから指定してください。

価格の条件にAskを指定する(=true)

価格の条件をAskにするか指定します。「true」にすると価格はAsk(買値)で処理されます。

同時押下キー

チャートをクリックしたときに指定されたキーを押下している場合にのみ水平線を引き(消し)ます。

通常版の場合
「Shiftキー」または「Ctrlキー」を指定した場合、指定したキーを押下した状態でクリックした場合のみ水平線を引き(消し)ます。
「なし」を指定した場合、キー押下は判断しないので、ShiftキーやCtrlキーを押下している場合でも水平線を引き(消し)ます。

通常版では「Altキー」を指定できません。また、ShiftキーとCtrlキーの組み合わせ(同時押し)も指定できません。
ShiftキーとCtrlキーを同時に押した場合は最後に押したキーが優先されます。
例:「Shiftキー」を指定した場合
・Ctrlキー→Shiftキーの順でキーを押してクリックした場合は水平線を引きます。(「Shiftキー」が優先されるため)
・Shiftキー→Ctrlキーの順でキーを押してクリックした場合は水平線は引きません。(「Ctrlキー」が優先されるため)
・Shiftキー→Altキーの順でキーを押してクリックした場合は水平線を引きます。(「Altキー」は押下判断できないため)
・Shiftキー→その他キー(英字数字や記号)の順でキーを押してクリックした場合は水平線は引きません。(その他キーが優先されるため)

WindowsAPI版の場合
「Shiftキー」や「Ctrlキー」、「Altキー」を「true」に指定した場合、指定したキーをすべて押下した状態でクリックした場合のみ水平線を引き(消し)ます。
すべて「false」に指定した場合、いずれかのキーを押下している場合は水平線を引き(消し)ません。

WindowsAPI版では「Altキー」を指定することができます。また、各キーの組み合わせ(同時押し)も指定できます。
各キーを同時に押した場合、押したキーの組み合わせで判断します。
例:「Shiftキー」と「Ctrlキー」に「true」を、「Altキー」に「false」指定した場合
・ShiftキーとCtrlキーを押してクリックした場合は水平線を引きます。(キーを押す順番はどちらでも良い)
・ShiftキーとCtrlキーとAltキーを押してクリックした場合は水平線を引きません。(Altキーが押下されているため)
・Shiftキーのみを押してクリックした場合は水平線を引きません。(Ctrlキーが押下されていないため)

補足:同時押下キーを「なし」(WindowsAPI版ではすべてfalse)にした場合はVer2.00までと同じ動きとなり、チャートをクリックするだけで手軽に水平線を引く(消す)ことができます。
しかし、チャートを操作したり、トレンドラインなどを描画したりする際には、この手軽さが邪魔になります。
それを回避するためにVer2.10から、このパラメーターが追加されました。
(このパラメーター追加のキッカケになった記事は掲示板(MT4専用)320_ClickNoticeにつきましてを参照してください。)

注意:通常版には「キーを放した後にクリックしても水平線が引かれる」という不具合があります。詳細は後述の既知の不具合とWindowsAPI版についてを参照してください。

注意:指定できるキー以外との組み合わせ(同時押し)は動作保証しません。(水平線が引かれる場合もあれば引かれない場合もある)


ディスプレイのスリープ解除について

ディスプレイのスリープ解除は、Windowsの「KERNEL32.dll」にある「SetThreadExecutionState」というAPIを呼び出す方法を採用しているので、Windows以外で使用している方や「DLLの使用を許可する」にチェックを入れたくない方を考慮してスリープ解除に関する処理はコメントアウトしています。
よって、スリープ解除の機能を使用したい場合はインジケーターの修正が必要です。

修正方法は簡単で、インジケーター内の「この行を削除してディスプレイスリープ解除機能を有効にする」というコメント行を探して削除するだけです。
コメントの開始行(/*で始まる行)と終了行(*/で終わる行)が計8行あるのでそれを削除してください。
修正したらコンパイルしてエラーが発生していないか確認してください。

インジケーターをチャートに挿入する際には「DLLの使用を許可する」にチェックを入れることを忘れないでください。

補足:ディスプレイのスリープとは、例えば以下のようなWindowsの設定画面で「次の時間が経過後、ディスプレイの電源を切る」で指定した時間パソコンを操作しなかったことで自動的にディスプレイの電源が切れたときのことです。

Windowsのスリープを設定する画面

「普段は他の作業をしているのでチャートを見てないが、通知があれば取引するか判断するためにチャートを見る」といった場合、ディスプレイをつけっぱなしだと電気代がもったいないしディスプレイの寿命も縮む、だからといって通知があるたびに電源を入れるとかスリープ解除のためにキーボードやマウスを操作するのは面倒、という方には便利な機能だと思います。

注意:上記画面の「次の時間が経過後、PCをスリープ状態にする」でパソコンがスリープした場合のスリープ解除(つまりパソコンの電源を入れること)はできませんのでご注意ください。
(パソコンがスリープ状態だとMT4も止まっているのでどうしようもありません)

追記:ディスプレイのスリープ解除は別のインジケーターでも使用できます。
「この行を削除してディスプレイスリープ解除機能を有効にする」で囲まれた部分だけを別のインジケーターに組み込むだけです。
「SetThreadExecutionState(2);」の行はスリープ解除したい場所(例えばインジケーター内で音を鳴らしたり、チャートにマークを付ける処理があるところなど)に、それ以外は当インジケーターと同様な場所に記述してください。


MT4 DDE Serverと組み合わせについて

当サイトで公開してる「MT4 DDE Server」と組み合わせることによってDDE送信が可能になります。

ExcelへのDDE送信では使い道が無いかもしれませんが、アプリケーションを開発できる方であればアイデア次第でなにか良いものが作れるかもしれません。


既知の不具合とWindowsAPI版について

通常版には「キーを放しても水平線が引かれる(消される)場合がある」という不具合があります。

MT4は、「キーを押した」や「キーを押し続けている(キーリピート)」の通知(OnChartEventが呼び出される)はありますが、「キーを放した」という通知はありません。
そのため、
・キーを押す→クリックする→水平線を引く(消す)
は問題ないのですが、
・キーを押す→キーを放す→クリックする→水平線は引かない(消さない)
ができません。(放したことが通知されないためキー押下中と判断され水平線を引いて(消して)しまう)
また、「キーが押下中か?」を調べる方法はMT4の標準機能には無いようです。

よって「最後のキー押下通知から一定時間(1秒)以内にクリックした場合に水平線を引く(消す)」という仕様にしています。
このような仕様のためキーを放してから1秒以内にクリックした場合も水平線が引かれる(消される)場合があります。

この不具合への対応版が「WindowsAPI版」です。正確に「キー押下中」を判断します。
WindowsAPI版は、クリックされた時にWindowsAPIのGetAsyncKeyStateを呼び出して「キーが押下中か?」を判断しますので、キーを放した直後にクリックしても水平線は引かれません(消されません)。
チャートへの挿入時に「DLLの使用を許可する」にチェックを入れる必要があるので、チェックを入れることに抵抗が無い方はWindowsAPI版を使用することをお勧めします。


更新履歴

リリース日 バージョン 内容
2018/03/26 1.00 初リリース
2019/03/10 2.00 MT5に対応しました。
2020/12/04 2.10 1.ShiftやCtrl、Altキー押下中のみ線を引く(消す)機能を追加しました。
2.価格を設定(変更)しやすくするため線を選択できるようにしました。
3.価格の条件に買値(Ask)を指定できるようにしました。
4.線が消えるまでの時間を0.1秒に変更しました。