今回はアラートを鳴らす方法です。
サンプルプログラムはこちらです。Zip圧縮していますので解凍してご利用ください。
サンプルプログラムの使い方は、以下の記事で説明しています。
アラートを鳴らす方法
今回もMetaTrader 4のプログラムの記事です。前回のComment関数の記事が思いのほか好評でしたので、今回も似たような関数を紹介していきます。 今回紹介するのはアラートを鳴らす関数です。この関数を使用することで、特定の場面でアラートを鳴らすことが出来ます。パソコンの近くにはいるが、 いちいち画面を見ているのは面倒だという時などに役に立ちます。シグナルが出た時にアラートをなるようにしておくと、シグナルが出た時に音を出してシグナルが出たことを知らせてくれます。
アラートを鳴らすには、Alert関数を使用します。使い方はPrint関数、Comment関数などとほとんど同じです。
Alert(“RSIが30以下になりました RSI = ”,RSI);
このように使用します。ただ、Comment関数などと違う注意点があります。Alert関数は条件が成立している間中ずっと鳴り続けてしまいますので、一度アラートが鳴ったら次の条件成立まで鳴らないようにする処理が必要になります。
方法としては、グローバル変数を使用します。グローバル変数とは、全ての関数内で使用出来る変数で、更新されるたびに初期化されない変数です。
まず、int start()の上で変数宣言をしてフラグを作ります。このフラグで、アラートがシグナルが出てから一度もなっていないかどうかを判断します。次に、シグナルの条件の後にこのフラグを使って、一度もなっていなかったらという条件のif文を付けます。これにより二度目以降を鳴らさないようにします。
次に、シグナルが成立してAlert関数で音を鳴らした後に、フラグを立てておきます。最後にシグナルが出なくなったときにフラグを元に戻します。これでシグナルが成立してからアラートが一度しかならないようにすることが可能です。この処理を実際にプログラムのコードに書くと下記のようになります。
//グローバル変数
bool AlertFlag = false;
int start()
{
//変数の宣言
double RSI;
RSI = iRSI(NULL,0,14,PRICE_CLOSE,0);
if( RSI >= 70 )
{
//まだ一度も鳴っていなかったら
if( AlertFlag == false)
{
//アラートを鳴らす
Alert(" RSIが70以上になりました RSI = ",RSI);
//連続でならないようにする処理
AlertFlag = true;
}
}
//それ以外だったら
else
{
//また条件が一致したらアラートを鳴らすようにする
AlertFlag = false;
}
return(0);
}
サンプルプログラムはこのコードにif文を一つ増やして、RSIが70以上の時と30以下の時にアラートが鳴るようにしています。 また、現在のRSIの数値が分かるようにComment関数でチャートにRSIの数値を表示しています。
最後に注意点として、Comment関数と同じで、Alert関数を使用する場合はそのシステムが動いていないと駄目です。 他のシステムを動かすときみたいにニコマークを出してください。また、ニコマークが出てからレートが動かないとアラートが鳴りませんので、ご注意下さい。

条件が成立して、Alert関数が実行された時は、アラート音と一緒に画像のような新しいウィンドウが出てきます。
内容には注意を払っていますが、保障は出来ません。
実際に運用する場合は、自己責任でお願いします。