TerminalClose

この関数は端末に操作完了を命令します。

bool  TerminalClose(
  int ret_code      // クライアント端末のコードを終了する
  );

パラメータ

ret_code

[in]  動作完了時にクライアント端末の処理によって返されたリターンコード

戻り値

成功の場合は true、それ以外の場合は false

注意事項

TerminalClose() 関数は、すぐに端末を停止せずに、動作を完了するように端末に命令します。

TerminalClose() を呼び出したエキスパートアドバイザーのコードは、即時完了のための準備を(例えば、開いているファイルは、通常モードで閉じる)終える必要があります。この関数の呼び出しは リターンオペレータ で続かれる必要があります。

ret_code パラメータは、コマンドプロンプトからの起動時に端末操作のプログラム終了の理由を分析するのに必要なリターンコードを示すことが出来ます。

例:

//--- 入力パラメータ
input int  tiks_before=500; // 終了までのティック数
input int  pips_to_go=15;   // ピップス(為替差益)
input int  seconds_st=50;   // エキスパートアドバイザーに与えられた秒数
//--- グローバル
datetime   launch_time;
int        tick_counter=0;
//+------------------------------------------------------------------+
//| エキスパート初期化解除に使用される関数                                    |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
 {
//---
  Print(__FUNCTION__," reason code = ",reason);
  Comment("");
 }
//+------------------------------------------------------------------+
//| エキスパートティック関数                                                 |
//+------------------------------------------------------------------+
void OnTick()
 {
  static double first_bid=0.0;
  MqlTick       tick;
  double        distance;
//---
  SymbolInfoTick(_Symbol,tick);
  tick_counter++;
  if(first_bid==0.0)
    {
     launch_time=tick.time;
     first_bid=tick.bid;
    Print("first_bid =",first_bid);
    return;
    }
//--- 価格距離(ピップス単位)
  distance=(tick.bid-first_bid)/_Point;
//--- EA 動作を追跡するための通知を表示する
  string comm="From the moment of start:\r\n\x25CF elapsed seconds: "+
              IntegerToString(tick.time-launch_time)+" ;"+
              "\r\n\x25CF ticks received: "+(string)tick_counter+" ;"+
              "\r\n\x25CF price went in points: "+StringFormat("%G",distance);
  Comment(comm);
//--- 端末を閉じる状態を確認するためのセクション
  if(tick_counter>=tiks_before)
    TerminalClose(0);   // ティックカウンタによる終了
  if(distance>pips_to_go)
    TerminalClose(1);   // pips_to_go に等しいピップスの数で上がる
  if(distance<-pips_to_go)
    TerminalClose(-1);   // pips_to_go に等しいピップスの数で下げる
  if(tick.time-launch_time>seconds_st)
    TerminalClose(100); // 時間切れによる終了
//---
 }

参照

プログラム実行実行エラー初期化解除の理由