TerminalClose

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

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

パラメーター

ret_code

[in]操作完了時にクライアント端末のプロセスによって返されるリターンコード。

戻り値

関数は成功するとtrueを返し、そうでなければfalseを返します。

注意

TerminalClose()関数はすぐに端末を停止するのではなく、端末に操作を完了するように命令するだけです。

TerminalClose()を呼び出したExpert Advisorのコードは、すぐに完了するためのすべての準備が必要です(たとえば、以前に開いたファイルはすべて通常モードで閉じる必要があります)。この関数の呼び出しの後にリターン演算子が必要です。

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

例:

//— input parameters
input int  tiks_before=500; // number of ticks till termination
input int  pips_to_go=15;   // distance in pips 
input int  seconds_st=50;   // number of seconds given to the Expert Advisor
//— globals
datetime   launch_time;
int        tick_counter=0;
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
  {
//—
   Print(__FUNCTION__,” reason code = “,reason);
   Comment(“”);
  }
//+——————————————————————+
//| Expert tick function                                             |
//+——————————————————————+
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;
     }
//— price distance in pips
   distance=(tick.bid-first_bid)/_Point;
//— show a notification to track the EA operation
   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);
//— section for checking condition to close the terminal
   if(tick_counter>=tiks_before)
      TerminalClose(0);    // exit by tick counter
   if(distance>pips_to_go)
      TerminalClose(1);    // go up by the number of pips equal to pips_to_go
   if(distance<-pips_to_go)
      TerminalClose(-1);   // go down by the number of pips equal to pips_to_go
   if(tick.time-launch_time>seconds_st)
      TerminalClose(100);  // termination by timeout
//—
  }

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">