2006年04月10日

MT4入門(9) - 通知に関する関数の使い方(2)

MetaTrader4入門の第9回目です。前回の予告通り、Alert()関数について説明します。

と言っても、Alert() 関数自体の使い方は、前回の Comment()関数と全く同じです。表示させたい文字列や数値をコンマで区切って指定するだけです。
ただ、Comment()は常にチャートの左上に小さく表示されるのに比べて、Alert()はウィンドウがポップアップし、さらにが出ます。MT4を起動しながらちょっと他のことをやっている時とかに、レートがある条件に達したのを知らせるときに便利な関数です。

ここで簡単な使用例を見てみましょう。具体的なプライスをセットしておき、それにヒットしたら知らせるという簡単な例です。

まず、通知したい具体的なプライスは、日によっても通貨ペアによっても変わるので、外部変数 Alert_Price として、宣言しておきます。

extern double Alert_Price=0;

初期値はここでは0としておきます。後でこの0という値を特別な役割として使います。

Alert()関数は、strat()関数の中に書きます。但し、Alert()だけ書くと、レートが変わるたびにstart()関数が実行され、その都度ポップアップ画面が出るのでアラートの意味がありません。

なので、Alart_Price に達したときだけ Alert()を実行できるように if文を使います。
プライスにヒットすると言っても、下から上がってきてヒットする場合と上から下がってきてヒットする場合と二通りあります。
予め下からか上からかを指定してもいいですが、ここではどちらでも使えるように条件を別々に書いておきます。

まず、下から上がってきてヒットする場合、1サンプル前のバーの終値 Close[1] はまだアラートプライスより下のはずです。なので、その場合、Close[0] つまり、現在のプライスが Alert_Price に等しくなるか超える場合に Alert()関数を実行するようにします。
プログラムは次のように書きます。

if(Close[1] < Alert_Price && Close[0] >= Alert_Price) //クロスアップ
{

  Alert(Symbol(), " hit ", Alert_Price); //アラート表示
}

if文の中の && という記号は、両側の条件を両方満たすとき、つまり、論理演算の AND を意味します。
ちなみに両側のどちらかを満たせばよいという OR 演算の場合は、|| という記号を使います。これはC言語と同じ仕様です。
if文の条件を満たせば {} の中を実行します。

同じようにプライスが上から下がってきてヒットする場合は、次のようなプログラムとなります。

if(Close[1] > Alert_Price && Close[0] <= Alert_Price) //クロスダウン
{

  Alert(Symbol(), " hit ", Alert_Price); //アラート表示
}

不等号の向きが逆になっているだけです。

Alert()関数のパラメータの意味は、" hit " は、文字列そのまま、 Alert_Price は、その変数の値というのは前に説明したとおりです。もう一つSymbol() というのは、通貨ペアの名前を表します。例えば、EURUSD とか USDJPY とかです。ブローカーによってはちょっと違う場合もあります。

Alert()のポップアップの例です。

時間は勝手に入るみたいです。ローカルタイムがそのまま出るので、補正する必要はありません。

これでアラートプログラムの基本的な部分はOKです。このままチャートにアタッチして、Alert_Price を設定すればいいだけですが、ちょっと問題があります。

それは、プライスが、Alert_Price の前後を何度も行ったり来たりすると、その都度、if文の条件にマッチするので、頻繁にポップアップします。

それを避けるために、ちょっと細工したのが以下のプログラムです。

Sample6_srcfinal.png

start()関数の最初の方に、Alert_Price が0のときに何もしないでリターンするという文が挿入されています。
このインディケータをアタッチしたときに Alert_Price に0以外の値が入っていれば、ここはスキップし、アラートプライスの条件チェックを行います。
一旦、条件がマッチしてAlert() が実行された後に、Alert_Price を0にする文が追加されているので、その次からは何も実行されません。
これで、最初に条件がマッチした時だけ、Alert()が実行されるようになります。

さらにわかりやすいように、Comment()文を使ってAlert_Price の値を表示させたり、チャート上にラインを表示させたりしています。

なお、Alert()で画面がポップアップしても音が出ない人は、MT4 のメニューの [Tools]-[Options]Events タブで Enable がチェックしてあり、その中の Alert に alert.wav など適当な wav ファイルが指定されているかを確認してみてください。

今回作ったプログラムを Sample6_Ind.mq4 としてアップロードしておきます。
(Download Sample6_Ind.mq4)

次回はPCから離れていてもアラートを受け取れるように、メールで送信する方法を説明します。

にほんブログ村 為替ブログへ為替ブログランキング 現在15位
「次の記事も読んでみたい!」
と思った方はクリックにご協力ください。↑

Trackback on "MT4入門(9) - 通知に関する関数の使い方(2)"

このエントリーのトラックバックURL: 

"MT4入門(9) - 通知に関する関数の使い方(2)"へのトラックバックはまだありません。

Comment on "MT4入門(9) - 通知に関する関数の使い方(2)"

"MT4入門(9) - 通知に関する関数の使い方(2)"へのコメントはまだありません。