#property description "Cet indicateur ne calcule pas de valeurs. Il effectue une tentative"
#property description "d'appeler la fonction ArrayFree() sur 3 tableaux : dynamique, statique et "
#property description "un buffer d'indicateur. Les résultats sont affichés dans le journal de l'Expert."
//--- paramètres de l'indicateur
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
//--- variables globales
double ExtDynamic[]; // tableau dynamique
double ExtStatic[100]; // tableau statique
bool ExtFlag=true; // flag
double ExtBuff[]; // buffer de l'indicateur
//+------------------------------------------------------------------+
//| Fonction d'initialisation de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int OnInit()
{
//--- alloue la mémoire du tableau
ArrayResize(ExtDynamic,100);
//--- mapping des buffers de l'indicateur
SetIndexBuffer(0,ExtBuff);
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Fonction d'itération de l'indicateur personnalisé |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
{
//--- effectue une analyse simple
if(ExtFlag)
{
//--- tentative de libérer la mémoire des tableaux
//--- 1. Tableau dynamique
Print("+============================+");
Print("1. Vérification du tableau dynamique :");
Print("Taille avant que la mémoire ne soit libérée = ",ArraySize(ExtDynamic));
Print("Est-ce que c'est un tableau dynamique = ",ArrayIsDynamic(ExtDynamic) ? "Oui" : "Non");
//--- tentative de libérerr la mémoire du tableau
ArrayFree(ExtDynamic);
Print("Taille après la libération de la mémoire = ",ArraySize(ExtDynamic));
//--- 2. Tableau statique
Print("2. Vérification du tableau statique :");
Print("Taille avant que la mémoire ne soit libérée = ",ArraySize(ExtStatic));
Print("Est-ce que c'est un tableau dynamique = ",ArrayIsDynamic(ExtStatic) ? "Oui" : "Non");
//--- tentative de libérerr la mémoire du tableau
ArrayFree(ExtStatic);
Print("Taille après la libération de la mémoire = ",ArraySize(ExtStatic));
//--- 3. Buffer de l'indicateur
Print("3. Vérification du buffer de l'indicateur :");
Print("Taille avant que la mémoire ne soit libérée = ",ArraySize(ExtBuff));
Print("Est-ce que c'est un tableau dynamique = ",ArrayIsDynamic(ExtBuff) ? "Oui" : "Non");
//--- tentative de libérerr la mémoire du tableau
ArrayFree(ExtBuff);
Print("Taille après la libération de la mémoire = ",ArraySize(ExtBuff));
//--- change la valeur du flag
ExtFlag=false;
}
//--- retourne la valeur de prev_calculated pour le prochain appel
return(rates_total);
}
|