Stop / kill calculating a function. - page 2

 

Please make sure you understand the use of the function.

Call by the first position and the number of required elements
int  CopyRates( 
   string           symbol_name,       // symbol name 
   ENUM_TIMEFRAMES  timeframe,         // period 
   int              start_pos,         // start position 
   int              count,             // data count to copy 
   MqlRates         rates_array[]      // target array to copy 
   );
Call by the start date and the number of required elements
int  CopyRates( 
   string           symbol_name,       // symbol name 
   ENUM_TIMEFRAMES  timeframe,         // period 
   datetime         start_time,        // start date and time 
   int              count,             // data count to copy 
   MqlRates         rates_array[]      // target array to copy 
   );
Call by the start and end dates of a required time interval
int  CopyRates( 
   string           symbol_name,       // symbol name 
   ENUM_TIMEFRAMES  timeframe,         // period 
   datetime         start_time,        // start date and time 
   datetime         stop_time,         // end date and time 
   MqlRates         rates_array[]      // target array to copy 
   );
 
Thank you.
I will take a look on it next week.

Regards.
 
Marco vd Heijden:

Please make sure you understand the use of the function.

So i can set all the parameters (datetime, int, ...etc) to NULL according the "true/false" state of my button (?).
Thank you for your help.

 
double m_MN1[][6];
ArrayCopyRates(m_MN1,Symbol(),PERIOD_MN1);

This is incorrect use of the function.

If you look at my examples above you can see that the first parameter is symbol_name followed by timeframe, then the start and stop positions and finally the target array.

 
Here is the original indicator (not mine), that i have modified later.
How can I nullify all the parameters ?

//+------------------------------------------------------------------+
//|                                                  mn OHLC Data    +                
//+------------------------------------------------------------------+

#property indicator_chart_window
#property copyright "mn"

extern int mBarsToCheck = 5;
extern bool mPlotOC = false, mPlotHL = true, mPlotm1 = false, mPlotm5 = false, mPlotm15 = false, 
            mPlotm60 = false, mPlotm240 = false, mPlotm1440 = true, mPlotm10080 = true, mPlotm43200 = true;
extern color mCol1 = White, mCol2 = Red, mCol3 = Blue, mCol4 = Aqua,  mCol5 = Gold;            
extern int mWidth = 1;
            
double m1[][6], m5[][6], m15[][6], m60[][6], m240[][6], m1440[][6], m10080[][6], m43200[][6],
       m1_0p, m1_High, m1_Low, m1_Close,
       m5_0p, m5_High, m5_Low, m5_Close,
       m15_0p, m15_High, m15_Low, m15_Close,
       m60_0p, m60_High, m60_Low, m60_Close,
       m240_0p, m240_High, m240_Low, m240_Close,
       m1440_0p, m1440_High, m1440_Low, m1440_Close,
       m10080_0p, m10080_High, m10080_Low, m10080_Close,
       m43200_0p, m43200_High, m43200_Low, m43200_Close;
   
int init()
  {
  
   return(0);
  }
  
//-------------------------------------------------------- 
  
int deinit()
  {
   DeleteObjects();

   return(0);
  }
//--------------------------------------------------------- 

int start()
 {

  ArrayCopyRates(m1, Symbol(), 1);
  ArrayCopyRates(m5, Symbol(), 5);
  ArrayCopyRates(m15, Symbol(), 15);
  ArrayCopyRates(m240, Symbol(), 240);
  ArrayCopyRates(m1440, Symbol(), 1440);
  ArrayCopyRates(m10080, Symbol(), 10080);
  ArrayCopyRates(m43200, Symbol(), 43200);

  for(int i = 0; i < mBarsToCheck; i++)
    {
     m1_0p    = m1[i][1];
     m1_High  = m1[i][3];
     m1_Low   = m1[i][2];
     m1_Close = m1[i][4];

     m5_0p    = m5[i][1];
     m5_High  = m5[i][3];
     m5_Low   = m5[i][2];
     m5_Close = m5[i][4];

     m15_0p    = m15[i][1];
     m15_High  = m15[i][3];
     m15_Low   = m15[i][2];
     m15_Close = m15[i][4];

     m60_0p    = m60[i][1];
     m60_High  = m60[i][3];
     m60_Low   = m60[i][2];
     m60_Close = m60[i][4];

     m240_0p    = m240[i][1];
     m240_High  = m240[i][3];
     m240_Low   = m240[i][2];
     m240_Close = m240[i][4];

     m1440_0p    = m1440[i][1];
     m1440_High  = m1440[i][3];
     m1440_Low   = m1440[i][2];
     m1440_Close = m1440[i][4];

     m10080_0p    = m10080[i][1];
     m10080_High  = m10080[i][3];
     m10080_Low   = m10080[i][2];
     m10080_Close = m10080[i][4];
 
     m43200_0p    = m43200[i][1];
     m43200_High  = m43200[i][3];
     m43200_Low   = m43200[i][2];
     m43200_Close = m43200[i][4];
     
     mPlotLines(i);
    }

   return(0);
}

//--------------------------------------------------------
void mPlotLines(int j)
 {
 // DeleteObjects();
 // for(int j = 0; j < mBarsToCheck; j++)
    {
     if(mPlotm1)
      {
        if(mPlotOC)
         {
          ObjectCreate("mLinem1_Op"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem1_Op"+j, OBJPROP_PRICE1, m1_0p);
          ObjectSet("mLinem1_Op"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem1_Op"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem1_Close"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem1_Close"+j, OBJPROP_PRICE1, m1_Close);
          ObjectSet("mLinem1_Close"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem1_Close"+j, OBJPROP_WIDTH, mWidth);
         }
        if(mPlotHL)
         {
          ObjectCreate("mLinem1_High"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem1_High"+j, OBJPROP_PRICE1, m1_High);
          ObjectSet("mLinem1_High"+j, OBJPROP_COLOR, mCol3);
          ObjectSet("mLinem1_High"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem1_Low"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem1_Low"+j, OBJPROP_PRICE1, m1_Low);
          ObjectSet("mLinem1_Low"+j, OBJPROP_COLOR, mCol2);
          ObjectSet("mLinem1_Low"+j, OBJPROP_WIDTH, mWidth);
         }
      }
     
     if(mPlotm5)
      {
        if(mPlotOC)
         {
          ObjectCreate("mLinem5_Op"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem5_Op"+j, OBJPROP_PRICE1, m5_0p);
          ObjectSet("mLinem5_Op"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem5_Op"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem5_Close"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem5_Close"+j, OBJPROP_PRICE1, m5_Close);
          ObjectSet("mLinem5_Close"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem5_Close"+j, OBJPROP_WIDTH, mWidth);
         }
        if(mPlotHL)
         {
          ObjectCreate("mLinem5_High"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem5_High"+j, OBJPROP_PRICE1, m5_High);
          ObjectSet("mLinem5_High"+j, OBJPROP_COLOR, mCol3);
          ObjectSet("mLinem5_High"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem5_Low"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem5_Low"+j, OBJPROP_PRICE1, m5_Low);
          ObjectSet("mLinem5_Low"+j, OBJPROP_COLOR, mCol2);
          ObjectSet("mLinem1_Low"+j, OBJPROP_WIDTH, mWidth);
         }
      }

     if(mPlotm15)
      {
        if(mPlotOC)
         {
          ObjectCreate("mLinem15_Op"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem15_Op"+j, OBJPROP_PRICE1, m15_0p);
          ObjectSet("mLinem15_Op"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem15_Op"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem15_Close"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem15_Close"+j, OBJPROP_PRICE1, m15_Close);
          ObjectSet("mLinem15_Close"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem15_Close"+j, OBJPROP_WIDTH, mWidth);
         }
        if(mPlotHL)
         {
          ObjectCreate("mLinem15_High"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem15_High"+j, OBJPROP_PRICE1, m15_High);
          ObjectSet("mLinem15_High"+j, OBJPROP_COLOR, mCol3);
          ObjectSet("mLinem15_High"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem15_Low"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem15_Low"+j, OBJPROP_PRICE1, m15_Low);
          ObjectSet("mLinem15_Low"+j, OBJPROP_COLOR, mCol2);
          ObjectSet("mLinem15_Low"+j, OBJPROP_WIDTH, mWidth);
         }
      }

     if(mPlotm60)
      {
        if(mPlotOC)
         {
          ObjectCreate("mLinem60_Op"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem60_Op"+j, OBJPROP_PRICE1, m60_0p);
          ObjectSet("mLinem60_Op"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem60_Op"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem60_Close"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem60_Close"+j, OBJPROP_PRICE1, m60_Close);
          ObjectSet("mLinem60_Close"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem60_Close"+j, OBJPROP_WIDTH, mWidth);
         }
        if(mPlotHL)
         {
          ObjectCreate("mLinem60_High"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem60_High"+j, OBJPROP_PRICE1, m60_High);
          ObjectSet("mLinem60_High"+j, OBJPROP_COLOR, mCol3);
          ObjectSet("mLinem60_High"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem60_Low"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem60_Low"+j, OBJPROP_PRICE1, m60_Low);
          ObjectSet("mLinem60_Low"+j, OBJPROP_COLOR, mCol2);
          ObjectSet("mLinem60_Low"+j, OBJPROP_WIDTH, mWidth);
         }
      }

     if(mPlotm240)
      {
        if(mPlotOC)
         {
          ObjectCreate("mLinem240_Op"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem240_Op"+j, OBJPROP_PRICE1, m240_0p);
          ObjectSet("mLinem240_Op"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem240_Op"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem240_Close"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem240_Close"+j, OBJPROP_PRICE1, m240_Close);
          ObjectSet("mLinem240_Close"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem240_Close"+j, OBJPROP_WIDTH, mWidth);
         }
        if(mPlotHL)
         {
          ObjectCreate("mLinem240_High"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem240_High"+j, OBJPROP_PRICE1, m240_High);
          ObjectSet("mLinem240_High"+j, OBJPROP_COLOR, mCol3);
          ObjectSet("mLinem240_High"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem240_Low"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem240_Low"+j, OBJPROP_PRICE1, m240_Low);
          ObjectSet("mLinem240_Low"+j, OBJPROP_COLOR, mCol2);
          ObjectSet("mLinem240_Low"+j, OBJPROP_WIDTH, mWidth);
         }
      }

     if(mPlotm1440)
      {
        if(mPlotOC)
         {
          ObjectCreate("mLinem1440_Op"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem1440_Op"+j, OBJPROP_PRICE1, m1440_0p);
          ObjectSet("mLinem1440_Op"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem1440_Op"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem1440_Close"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem1440_Close"+j, OBJPROP_PRICE1, m1440_Close);
          ObjectSet("mLinem1440_Close"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem1440_Close"+j, OBJPROP_WIDTH, mWidth);
         }
        if(mPlotHL)
         {
          ObjectCreate("mLinem1440_High"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem1440_High"+j, OBJPROP_PRICE1, m1440_High);
          ObjectSet("mLinem1440_High"+j, OBJPROP_COLOR, mCol3);
          ObjectSet("mLinem1440_High"+j, OBJPROP_WIDTH, mWidth);
          ObjectCreate("mLinem1440_Low"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem1440_Low"+j, OBJPROP_PRICE1, m1440_Low);
          ObjectSet("mLinem1440_Low"+j, OBJPROP_COLOR, mCol2);
          ObjectSet("mLinem1440_Low"+j, OBJPROP_WIDTH, mWidth);
         }
      }

     if(mPlotm10080)
      {
        if(mPlotOC)
         {
          ObjectCreate("mLinem10080_Op"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem10080_Op"+j, OBJPROP_PRICE1, m10080_0p);
          ObjectSet("mLinem10080_Op"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem10080_Op"+j, OBJPROP_WIDTH, mWidth+1);
          ObjectCreate("mLinem10080_Close"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem10080_Close"+j, OBJPROP_PRICE1, m10080_Close);
          ObjectSet("mLinem10080_Close"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem10080_Close"+j, OBJPROP_WIDTH, mWidth+1);
         }
        if(mPlotHL)
         {
          ObjectCreate("mLinem10080_High"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem10080_High"+j, OBJPROP_PRICE1, m10080_High);
          ObjectSet("mLinem10080_High"+j, OBJPROP_COLOR, mCol3);
          ObjectSet("mLinem10080_High"+j, OBJPROP_WIDTH, mWidth+1);
          ObjectCreate("mLinem10080_Low"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem10080_Low"+j, OBJPROP_PRICE1, m10080_Low);
          ObjectSet("mLinem10080_Low"+j, OBJPROP_COLOR, mCol2);
          ObjectSet("mLinem10080_Low"+j, OBJPROP_WIDTH, mWidth+1);
         }
      }

     if(mPlotm43200)
      {
        if(mPlotOC)
         {
          ObjectCreate("mLinem43200_Op"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem43200_Op"+j, OBJPROP_PRICE1, m43200_0p);
          ObjectSet("mLinem43200_Op"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem43200_Op"+j, OBJPROP_WIDTH, mWidth+2);
          ObjectCreate("mLinem43200_Close"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem43200_Close"+j, OBJPROP_PRICE1, m43200_Close);
          ObjectSet("mLinem43200_Close"+j, OBJPROP_COLOR, mCol1);
          ObjectSet("mLinem43200_Close"+j, OBJPROP_WIDTH, mWidth+2);
         }
        if(mPlotHL)
         {
          ObjectCreate("mLinem43200_High"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem43200_High"+j, OBJPROP_PRICE1, m43200_High);
          ObjectSet("mLinem43200_High"+j, OBJPROP_COLOR, mCol4);
          ObjectSet("mLinem43200_High"+j, OBJPROP_WIDTH, mWidth+2);
          ObjectCreate("mLinem43200_Low"+j, OBJ_HLINE, 0, 0, 0, 0);
          ObjectSet("mLinem43200_Low"+j, OBJPROP_PRICE1, m43200_Low);
          ObjectSet("mLinem43200_Low"+j, OBJPROP_COLOR, mCol5);
          ObjectSet("mLinem43200_Low"+j, OBJPROP_WIDTH, mWidth+2);
         }
      }
    } // for j
     
   return(0);
 }
 
//--------------------------------------------------------
void DeleteObjects()
 {
   string mObj;
   for(int m = ObjectsTotal()-1; m >= 0; m--)
    {
      mObj = ObjectName(m);
      if (StringFind(mObj,"mLinem", 0) > -1)
       ObjectDelete(mObj);
    }
  }
//+------------------------------------------------------------------+

Reason: