#property description "Dieser Indikator berechnet die Werte nicht, und einmal versucht sie zu verwenden" #property description "Der Anruf der Funktion ArrayFree() zu drei Arrays: dynamisch, statisch und" #property description "dem Indikator Puffer. Die Ergebnisse werden in die Zeitschrift der Experten herausgeführt" //--- der Indikator Einstellungen #property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 //--- globale Variablen double ExtDynamic[]; // das dynamische Array double ExtStatic[100]; // das statische Array bool ExtFlag=true; // die Flagge double ExtBuff[]; // der Indikator Puffer //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- trennen Sie den Speicher für den Array ab ArrayResize(ExtDynamic,100); //--- Bindung von Array zum Indikator-Puffer SetIndexBuffer(0,ExtBuff); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const int begin, const double &price[]) { //--- führen Sie die Analyse einmal durch if(ExtFlag) { //--- versuchen Sie den Speicher für die Arrays zu befreien //--- 1. Das dynamische Array Print("+============================+"); Print("1. Überprüfung des dynamischen Arrays:"); Print("Die Größe bis zur Befreiung des Speichers = ",ArraySize(ExtDynamic)); Print("Es ist das dynamische Array = ",ArrayIsDynamic(ExtDynamic) ? "Ja" : "Nein"); //--- versuchen Sie den Speicher des Arrays zu befreien ArrayFree(ExtDynamic); Print("Die Größe nach der Befreiung des Speichers = ",ArraySize(ExtDynamic)); //--- 2. Das statistisches Array Print("2. Überprüfung des statischen Arrays:"); Print("Die Größe bis zur Befreiung des Speichers = ",ArraySize(ExtStatic)); Print("Es ist das dynamische Array = ",ArrayIsDynamic(ExtStatic) ? "Ja" : "Nein"); //--- versuchen Sie den Speicher des Arrays zu befreien ArrayFree(ExtStatic); Print("Die Größe nach der Befreiung des Speichers = ",ArraySize(ExtStatic)); //--- 3. Indikator Puffer Print("3. Überprüfung des Indikator Puffers:"); Print("Die Größe bis zur Befreiung des Speichers = ",ArraySize(ExtBuff)); Print("Es ist das dynamische Array = ",ArrayIsDynamic(ExtBuff) ? "Ja" : "Nein"); //--- versuchen Sie den Speicher des Arrays zu befreien ArrayFree(ExtBuff); Print("Die Größe nach der Befreiung des Speichers = ",ArraySize(ExtBuff)); //--- ändern Sie den Wert der Flagge ExtFlag=false; } //--- den Wert prev_calculated für den nächsten Anruf zurückgeben return(rates_total); } |