サンプルプログラムはこちらです。
http://jidoubaibai.com/Sample%20Alert.mq4
サンプルプログラムの使い方は、こちらで説明しています。
http://jidoubaibai.com/burogu11.html
今回も
MetaTrader4の
プログラムの記事です。前回の
Comment関数の記事が思いのほか好評でしたので、今回も似たような関数を紹介していきます。今回紹介するのは
アラートを鳴らす関数です。この関数を使用することで、特定の場面でアラートを鳴らすことが出来ます。パソコンの近くにはいるが、いちいち画面を見ているのは面倒だという時などに役に立ちます。シグナルが出た時にアラートをなるようにしておくと、シグナルが出た時に音を出してシグナルが出たことを知らせてくれます。
アラートを鳴らすには、
Alert関数を使用します。使い方は
Print関数、
Comment関数などとほとんど同じです。
Alert(“RSIが30以下になりました RSI = ”,RSI);
このように使用します。ただ、Comment関数などと違う注意点があります。
Alert関数は条件が成立している間中ずっと鳴り続けてしまいますので、
一度アラートが鳴ったら次の条件成立まで鳴らないようにする処理が必要になります。
方法としては、
グローバル変数を使用します。グローバル変数について分からない人は下記のアドレスのページで解説していますので、ご覧下さい。
http://mastertraders.livedoor.biz/archives/50553465.html
まず、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関数が実行された時は、アラート音と一緒に画像のような新しいウィンドウが出てきます。
----------------------注意----------------------
半角のスペースが認識されない為、コードを見易くするために全角で書いている場合があります。実際にプログラムにコードを書くときは、コピー&ペーストせずに半角で書いて行って下さい。
また、内容には注意を払っていますが、保障は出来ません。実際に運用する場合は、自己責任でお願いします。