TerminalClose

Envía al terminal el comando de finalizar el trabajo.

bool  TerminalClose(
   int ret_code      // código de cierre del terminal de cliente
   );

Parámetros

ret_code

[in]  Código de devolución devuelto por el proceso del terminal de cliente al terminar su trabajo.

Valor devuelto

Devuelve true en caso de éxito, de lo contrario devuelve false.

Nota

La función TerminalClose() no detiene el terminal inmediatamente, sólo le manda un comando para completar su operatividad.

El código de Asesor Experto que ha llamado a TerminalClose() tiene que realizar todos los preparativos para la finalización inmediata del trabajo (por ejemplo, hay que cerrar todos los archivos abiertos previamente de una forma correcta). Después de la llamada a esta función tiene que seguir el operador return.

El parámetro ret_code permite indicar el código de devolución necesario para analizar las causas de finalización programada del funcionamiento del terminal cuando éste se inicia desde la línea de comandos.

Ejemplo:

//--- input parameters
input int  tiks_before=500; // número de ticks hasta la finalización
input int  pips_to_go=15;   // distancia en pips
input int  seconds_st=50;   // los segundos que damos al Asesor Experto
//--- 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;
     }
//--- distancia de precio en pips
   distance=(tick.bid-first_bid)/_Point;
//--- mostramos una notificación para monitorear el trabajo del AE
   string comm="Desde el momento de inicio:\r\n\x25CF han pasado segundos: "+
               IntegerToString(tick.time-launch_time)+" ;"+
               "\r\n\x25CF ticks que se ha recibido: "+(string)tick_counter+" ;"+
               "\r\n\x25CF precio ha ido en puntos: "+StringFormat("%G",distance);
   Comment(comm);
//--- sección de comprobación de condiciones para el cierre del terminal
   if(tick_counter>=tiks_before)
      TerminalClose(0);    // salida por el contador de ticks
   if(distance>pips_to_go)
      TerminalClose(1);    // vamos arriba al número de pips igual a pips_to_go
   if(distance<-pips_to_go)
      TerminalClose(-1);   // vamos abajo al número de pips igual a pips_to_go
   if(tick.time-launch_time>seconds_st)
      TerminalClose(100);  // trabajo se termina por expiración de plazo
//---
  }

Véase también

Funcionamiento de programas, Errores de ejecución, Razones de deinicialización