TerminalClose

A função ordena o terminal a finalizar a operação.

bool  TerminalClose(
   int ret_code      // código de fechamento do terminal cliente
   );

Parâmetros

ret_code

[in]  Código de retorno, retornado pelo processo do terminal cliente na finalização da operação.

Valor do Retorno

A função retorna true para sucesso, caso contrário - false.

Observação

A função TerminalClose() não interrompe o terminal imediatamente, ela apenas ordena o terminal a finalizar sua operação.

O código de um Expert Advisor que chamou TerminalClose() deve ter todos os arranjos para a finalização imediata (por exemplo, todos os arquivo previamente abertos devem ser fechados no modo normal. A chamada desta função deve ser seguida pelo operador return.

O parâmetro ret_code permite indicar o código de retorno necessário para analise dos motivos da finalização de programa da operação do terminal ao inicializá-lo a partir da linha de comando.

Exemplo:

//--- parâmetros de entrada
input int  tiks_before=500; // número de ticks até finalização
input int  pips_to_go=15;   // distancia em pips
input int  seconds_st=50;   // número de segundos dados para o Expert Advisor
//--- globais
datetime   launch_time;
int        tick_counter=0;
//+------------------------------------------------------------------+
//| Função de Desinicialização do Expert                             |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   Print(__FUNCTION__," código do motivo = ",reason);
   Comment("");
  }
//+------------------------------------------------------------------+
//| Função tick (ponto) de um Expert                                 |
//+------------------------------------------------------------------+
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;
     }
//--- distância do preço em pips
   distance=(tick.bid-first_bid)/_Point;
//--- exibe uma notificação para rastrear a operação do EA
   string comm="A partir do momento da inicial:\r\n\x25CF segundos decorridos: "+
               IntegerToString(tick.time-launch_time)+" ;"+
               "\r\n\x25CF ticks recebidos: "+(string)tick_counter+" ;"+
               "\r\n\x25CF preço passou em pontos: "+StringFormat("%G",distance);
   Comment(comm);
//--- seção para verificar condição para fechar o terminal
   if(tick_counter>=tiks_before)
      TerminalClose(0);    // saída pela contador de tick
   if(distance>pips_to_go)
      TerminalClose(1);    // subida pelo número de pips igual ao pips_to_go
   if(distance<-pips_to_go)
      TerminalClose(-1);   // descida pelo número de pips igual ao pips_to_go
   if(tick.time-launch_time>seconds_st)
      TerminalClose(100);  // finalização por timeout
//---
  }

Também Veja

Execução de programa, Erros de execução, Motivos para desinicialização