ZeroMemory

La funzione consente di ripristinare una variabile passata per riferimento.

void  ZeroMemory(
   void & variable      // variabile di reset
   );

Parametri

variabile

[In] [out] Variabile passata per riferimento che si vuole resettare (inizializzare con valori zero).

Valore restituito

Nessun valore restituito.

Nota

Se il parametro della funzione è una stringa, la chiamata sarà equivalente a NULL come valore.
Per i tipi semplici e loro array, nonché per strutture/classi composte di questi tipi, questo è un semplice reset.
Per gli oggetti che contengono le stringhe e gli array dinamici, viene chiamata ZeroMemory() per ogni elemento.
Per gli array non protetti dal modificatore const, questa è l'azzeramento di tutti gli elementi.
Per array di oggetti complessi, ZeroMemory() viene chiamata per ogni elemento.

ZeroMemory() non può essere applicata alle classi membri protetti o ereditati.

Esempio:

// L'EA basato su file standard "MACD Sample.mq5"
// mostra il risultato di TesterStatistics() nel gestore di eventi del Tester
#define MACD_MAGIC 1234502
//---
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\AccountInfo.mqh>
//---
input double InpLots          =0.1// Lotti
input int    InpTakeProfit    =50;  // Take Profit (in pips)
input int    InpTrailingStop  =30;  // Livello di Trailing Stop (in pips)
input int    InpMACDOpenLevel =3;   // Livello di apertura MACD (in pips)
input int    InpMACDCloseLevel=2;   // Livello di chiusura MACD (in pips)
input int    InpMATrendPeriod =26;  // periodo di tendenza della MA
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//-- creare tutti gli oggetti necessari
   if(!ExtExpert.Init())
      return(INIT_FAILED);
//-- inizializzazione avvenuta con successo
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert new tick handling function                                |
//+------------------------------------------------------------------+
void OnTick(void)
  {
   static datetime limit_time=0// tempo dell'ultima chiamata considerando 'timeout'
//-- se il tempo supera il valore limite specificato
   if(TimeCurrent()>=limit_time)
     {
 //-- controllare i dati
      if(Bars(Symbol(),Period())>2*InpMATrendPeriod)
        {
 //-- se ha successo, aumentare limit_time con i secondi di 'timeout'
         if(ExtExpert.Processing())
            limit_time=TimeCurrent()+ExtTimeOut;
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tester handling function                                  |
//+------------------------------------------------------------------+
double OnTester(void)
  {
   double ret=TesterStatistics(STAT_PROFIT_FACTOR);
   double profit=TesterStatistics(STAT_PROFIT);
   int    trades_total=(int)TesterStatistics(STAT_TRADES);
   int    profit_total=(int)TesterStatistics(STAT_PROFIT_TRADES);
   int    loss_total=(int)TesterStatistics(STAT_LOSS_TRADES);
   PrintFormat("%s: Profit = %.2f, trades total: %lu, profit trades total: %lu, loss trades total: %lu, profit factor: %.2f",__FUNCTION__,profit,trades_total,profit_total,loss_total,ret);
   return(ret);
   /*
  Risultato:
   OnTesterProfit = 209.84trades total13profit trades total11loss trades total2profit factor3.02
   final balance 10209.84 USD
   OnTester result 3.020606644198363
   */
  }