#property description "Questo indicatore non calcola i valori. Fa un singolo tentativo di"
#property description "applicare la chiamata alla funzione ArrayFree() a tre array: quello dinamico, quello statico ed"
#property description "un buffer indicatore. I risultati vengono mostrati nel journal Experts (il registro degli Expert)."
//--- impostazioni indicatore
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
//--- variabili globali
double ExtDynamic[]; // array dinamico
double ExtStatic[100]; // array statico
bool ExtFlag=true; // flag
double ExtBuff[]; // buffer indicatore
//+--------------------------------------------------------------------------------+
//| Funzione di inizializzazione Indicatore Personalizzato |
//+--------------------------------------------------------------------------------+
int OnInit()
{
//--- alloca la memoria per l'array
ArrayResize(ExtDynamic,100);
//--- mappatura buffers indicatore
SetIndexBuffer(0,ExtBuff);
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---
return(INIT_SUCCEEDED);
}
//+--------------------------------------------------------------------------------+
//| Funzione di iterazione indicatore personalizato |
//+--------------------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
//--- esegue una singola analisi
if(ExtFlag)
{
//--- tenta di liberare la memoria per gli array
//--- 1. Array dinamico
Print("+============================+");
Print("1. Controlla l' array dinamico:");
Print("Grandezza prima che la memoria venga liberata = ",ArraySize(ExtDynamic));
Print("E' questo un array dinamico = ",ArrayIsDynamic(ExtDynamic) ? "Yes" : "No");
//--- tentativo di liberare la memoria dell'array
ArrayFree(ExtDynamic);
Print("Grandezza dopo che la memoria è stata liberata = ",ArraySize(ExtDynamic));
//--- 2. Array statico
Print("2. Controlla l'array statico:");
Print("Grandezza prima che la memoria venga liberata = ",ArraySize(ExtStatic));
Print("E' questo un array dinamico = ",ArrayIsDynamic(ExtStatic) ? "Yes" : "No");
//--- tentativo di liberare la memoria dell'array
ArrayFree(ExtStatic);
Print("Grandezza dopo che la memoria è stata liberata = ",ArraySize(ExtStatic));
//--- 3. Buffer Indicatore
Print("3. Controlla il buffer indicatore:");
Print("Grandezza prima che la memoria venga liberata = ",ArraySize(ExtBuff));
Print("E' questo un array dinamico = ",ArrayIsDynamic(ExtBuff) ? "Yes" : "No");
//--- tentativo di liberare la memoria dell'array
ArrayFree(ExtBuff);
Print("Grandezza dopo che la memoria è stata liberata = ",ArraySize(ExtBuff));
//--- cambia il valore della flag
ExtFlag=false;
}
//--- restituisce il valore di prev_calculated per la prossima chiamata
return(rates_total);
}
|