TesterDeposit

Función especial para emular operaciones de depósito de fondos durante la simulación. Se puede utilizar en algunos sistemas de gestión de capital.

bool  TesterDeposit(
   double money      // suma a depositar
   );

Parámetros

money

[in]  Suma a ingresar en la cuenta en la divisa del depósito.

Valor retornado

Retorna true en el caso de éxito, de lo contrario, false.

 

Ejemplo:

//--- defines
#define BALANCE_LOSS_DEPOSIT  100.0    // valor de reducción del balance a partir del cual se depositarán fondos en la cuenta del simulador
 
//--- input parameters
input  double  InpLots        =  0.1;  // Lots
input  uint    InpStopLoss    =  50;   // Stop loss in points
input  uint    InpTakeProfit  =  150;  // Take Profit in points
sinput ulong   InpMagic       =  123;  // Magic number
sinput ulong   InpDeviation   =  5;    // Deviation
//--- 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
...
double      balance_dep_summ;          // suma total de las recargas de balance
uint        balance_dep_total;         // número de recargas de balance
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ...
//--- guardamos los valores del balance inicial
   balance_prev=account.Balance();
   balance_dep_summ=0;
   balance_dep_total=0;
//--- 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 se ha reducido más de lo establecido en la macrosustitución BALANCE_LOSS_DEPOSIT,
//--- significa que consideramos imprescindible recargar la cuenta, y llamamos a la función TesterDeposit()
//--- comprobamos si la pérdida de balance ha sido superior a BALANCE_LOSS_DEPOSIT
   if(balance_prev!=account.Balance())
     {
      if(account.Balance()<balance_prev-BALANCE_LOSS_DEPOSIT)
        {
         double loss=balance_prev-account.Balance();
         PrintFormat("The initial balance of %.2f %s decreased by %.2f %s. It is necessary to make a deposit to the account for %.2f %s.",balance_prev,account.Currency(),loss,account.Currency(),loss,account.Currency());
         if(TesterDeposit(loss))
           {
            balance_dep_total++;
            balance_dep_summ+=loss;
            balance_prev=account.Balance();
            PrintFormat("Funds have been deposited into the account. Account balance: %.2f %s.",account.Balance(),account.Currency());
            PrintFormat("Total deposits: %lu. Amount of deposits: %.2f %s.",balance_dep_total,balance_dep_summ,account.Currency());
           }
        /*
        Resultado:
         The initial balance of 10000.00 USD decreased by 116.00 USDIt is necessary to make a deposit to the account for 116.00 USD.
         deal #45 balance 116.00 [depositdone
         Funds have been deposited into the accountAccount balance10000.00 USD.
         Total deposits1Amount of deposits116.00 USD.
        */
        }
     }
  }
//+------------------------------------------------------------------+
//| Tester function                                                  |
//+------------------------------------------------------------------+
double OnTester()
  {
//--- el valor de salida del manejador será el valor de la reducción máxima de balance en dinero
   double ret=TesterStatistics(STAT_BALANCE_DD);
//--- mostramos un mensaje sobre la reducción de fondos, el número de recargas y su importe total en el diario de registro
   PrintFormat("%s: Maximum balance drawdown in money: %.2f %s. Total deposits: %lu. Amount of deposits: %.2f %s.",__FUNCTION__,ret,account.Currency(),balance_dep_total,balance_dep_summ,account.Currency());
//--- retornamos el resultado
   return(ret);
  /*
  Resultado:
   OnTesterMaximum balance drawdown in money5188.50 USDTotal deposits46Amount of deposits5128.50 USD.
   final balance 4867.50 USD
   OnTester result 5188.5
  */
  }

Vea también

TesterDeposit