TesterStop

Da el comando para finalizar el trabajo del programa durante la simulación.

void  TesterStop();

Valor retornado

No hay valor retornado.

Observación

La función TesterStop() ha sido pensada para finalizar de forma rutinaria y anticipada el funcionamiento de un asesor en un agente de simulación, por ejemplo, al alcanzar el número de establecido de transacciones o el nivel de reducción indicado.

La llamada de TesterStop() se considera una finalización normal de la simulación, por eso se llamará la función OnTester(), proporcionando al simulador de estrategias todas las estadísticas comerciales acumuladas y los valores del criterio de optimización.

La llamada de ExpertRemove() en el simulador de estrategias también significa la finalización normal de la simulación y permite obtener estadísticas comerciales, pero además, en este caso, el asesor es descargado de la memoria del agente. En esta situación, para ejecutar una pasada en el siguiente conjunto de parámetros, se necesitará tiempo para cargar de nuevo el programa. Por eso, para finalizar de forma rutinaria y anticipada el funcionamiento de la simulación, el uso de TesterStop() es la opción preferible.

 

Ejemplo:

//--- defines
#define BALANCE_LOSS_STOP  100.0       // valor de reducción del balance al que se detendrá la prueba
#define EQUITY_LOSS_STOP   100.0       // valor de reducción de los recursos al que se detendrá la prueba
 
//--- input parameters
input  double  InpLots        =  0.1;  // lotes
input  uint    InpStopLoss    =  50;   // Stop loss en puntos
input  uint    InpTakeProfit  =  150;  // Take Profit  en puntos
sinput ulong   InpMagic       =  123;  // MagicNumber
sinput ulong   InpDeviation   =  5;    // desviación
//--- global variables
CTrade      trade;                     // ejemplar de la clase comercial
CSymbolInfo symb;                      // ejemplar de la clase de símbolo
CAccountInfo account;                  // ejemplar de clase de cuenta comercial
...
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ...
//--- la inicialización ha tenido éxito
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- actualizamos las cotizaciones actuales
   if(!symb.RefreshRates())
      return;
   ...
 
//--- si el balance o los fondos se han reducido más de lo indicado en las macrosustituciones BALANCE_LOSS_STOP y EQUITY_LOSS_STOP,
//--- consideramos que la prueba ha fallado y llamamos a la función TesterStop()
//--- comprobamos si la reducción de balance ha sido superior a BALANCE_LOSS_STOP
   if(balance_prev!=account.Balance())
     {
      if(account.Balance()<balance_prev-BALANCE_LOSS_STOP)
        {
         PrintFormat("The initial balance of %.2f %s decreased by %.2f %s, and now has a value of %.2f %s. Stop testing.",balance_prev,account.Currency(),balance_prev-account.Balance(),account.Currency(),account.Balance(),account.Currency());
         TesterStop();
         /*
        Resultado:
         The initial balance of 10000.00 USD decreased by 100.10 USDand now has a value of 9899.90 USDStop testing.
         TesterStop() called on 9of testing interval
         */
        }
     }
//--- comprobamos si la pérdida de recursos ha sido superior a EQUITY_LOSS_STOP
   if(equity_prev!=account.Equity())
     {
      if(account.Equity()<equity_prev-EQUITY_LOSS_STOP)
        {
         PrintFormat("The initial equity of %.2f %s decreased by %.2f %s, and now has a value of %.2f %s. Stop testing.",equity_prev,account.Currency(),equity_prev-account.Equity(),account.Currency(),account.Equity(),account.Currency());
         TesterStop();
         /*
        Resultado:
         The initial equity of 10000.00 USD decreased by 100.10 USDand now has a value of 9899.90 USDStop testing.
         TesterStop() called on 9of testing interval
         */
        }
     }
  }

Ver también

Ejecución de programas, Simulación de estrategias comerciales, ExpertRemove, SetReturnError