機能
IsStoppede関数は、MQL5プログラムの強制シャットダウンをチェックします。
bool IsStopped(); |
引数
なし
戻り値
_StopFlagシステム変数が 0 以外の場合は true 。
備考
MQL5 プログラムが操作を完了するように命令されている場合、0 以外の値が _StopFlag に書き入れられます。この場合、すぐにプログラムを終了する必要があります。
そうしないとプログラムは 3 秒後に外部から強制的に終了されます。
リファレンスでは、ループの反復数が多いと予期される場合にIsStopped関数を使って強制的なプログラム終了を確認することを推奨しています。
サンプルコード
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
//---
//フィボナッチ数列の計算終点
int countFibo=15;
//計算に必要な変数の宣言
int iCounter=0,first=0,second=1;
//フィボナッチを格納する変数
int nowFiboNum;
do
{
nowFiboNum=first+second;
Print("iCounter = ",iCounter," フィボナッチ数 = ",nowFiboNum," flag=",IsStopped());
first=second;
//firstにsecondの値を代入
second=nowFiboNum;
//secondに nowFiboNumの値を代入
iCounter++;//1増加 (この演算子がない場合、無限ループが発生)
}
while(iCounter<countFibo && !IsStopped());
//15未満で、終了フラグが出ていない間はループする
}//do
//+------------------------------------------------------------------+
結果↓
MT5に標準実装されているパラボリックSARのソースコードを解説している記事を書いたのですが、そのソースコードの中にもIsStoppede関数が、for文ループ内に使われています。
よろしければ参考にしてください。<m(__)m>↓
Print関数については↓をご覧ください
OnStart関数については↓をご覧ください
コメント