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;   // pips 거리 
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;
     }
//--- pips 가격 거리
   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와 같은 pips의 수로 올라감
   if(distance<-pips_to_go)
      TerminalClose(-1);   // pips_to_go와 같은 pips 수만큼 내려감
   if(tick.time-launch_time>seconds_st)
      TerminalClose(100);  // 시간제한으로 종료
//---
  }

추가 참조

Program running, Execution errors, Reasons for deinitialization