//+------------------------------------------------------------------+
//|                                                  Square Nine.mq4 |
//|                                                            Turkm |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Turkm"
#property link      ""

#property indicator_chart_window
int Array[601][601];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   BuildArray(23);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Comment("");
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
  
   
   string a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13;
         a1= "\n   "+DoubleToStr(Array[0][0],0)+"   "+DoubleToStr(Array[0][1],0)+"   "+DoubleToStr(Array[0][2],0)+"   "+DoubleToStr(Array[0][3],0)+"   "+DoubleToStr(Array[0][4],0)+"   "+DoubleToStr(Array[0][5],0)+"   "+DoubleToStr(Array[0][6],0)+"   "+DoubleToStr(Array[0][7],0)+"   "+DoubleToStr(Array[0][8],0)+"   "+DoubleToStr(Array[0][9],0)+"   "+DoubleToStr(Array[0][10],0)+"   "+DoubleToStr(Array[0][11],0)+"   "+DoubleToStr(Array[0][12],0);
         a2= "\n   "+DoubleToStr(Array[1][0],0)+"   "+DoubleToStr(Array[1][1],0)+"   "+DoubleToStr(Array[1][2],0)+"   "+DoubleToStr(Array[1][3],0)+"   "+DoubleToStr(Array[1][4],0)+"   "+DoubleToStr(Array[1][5],0)+"   "+DoubleToStr(Array[1][6],0)+"   "+DoubleToStr(Array[1][7],0)+"   "+DoubleToStr(Array[1][8],0)+"   "+DoubleToStr(Array[1][9],0)+"   "+DoubleToStr(Array[1][10],0)+"   "+DoubleToStr(Array[1][11],0)+"   "+DoubleToStr(Array[1][12],0);
         a3= "\n   "+DoubleToStr(Array[2][0],0)+"   "+DoubleToStr(Array[2][1],0)+"   "+DoubleToStr(Array[2][2],0)+"   "+DoubleToStr(Array[2][3],0)+"   "+DoubleToStr(Array[2][4],0)+"   "+DoubleToStr(Array[2][5],0)+"   "+DoubleToStr(Array[2][6],0)+"   "+DoubleToStr(Array[2][7],0)+"   "+DoubleToStr(Array[2][8],0)+"   "+DoubleToStr(Array[2][9],0)+"   "+DoubleToStr(Array[2][10],0)+"   "+DoubleToStr(Array[2][11],0)+"   "+DoubleToStr(Array[2][12],0);
         a4= "\n   "+DoubleToStr(Array[3][0],0)+"   "+DoubleToStr(Array[3][1],0)+"   "+DoubleToStr(Array[3][2],0)+"   "+DoubleToStr(Array[3][3],0)+"   "+DoubleToStr(Array[3][4],0)+"   "+DoubleToStr(Array[3][5],0)+"   "+DoubleToStr(Array[3][6],0)+"   "+DoubleToStr(Array[3][7],0)+"   "+DoubleToStr(Array[3][8],0)+"   "+DoubleToStr(Array[3][9],0)+"   "+DoubleToStr(Array[3][10],0)+"   "+DoubleToStr(Array[3][11],0)+"   "+DoubleToStr(Array[3][12],0);
         a5= "\n   "+DoubleToStr(Array[4][0],0)+"   "+DoubleToStr(Array[4][1],0)+"   "+DoubleToStr(Array[4][2],0)+"   "+DoubleToStr(Array[4][3],0)+"   "+DoubleToStr(Array[4][4],0)+"   "+DoubleToStr(Array[4][5],0)+"   "+DoubleToStr(Array[4][6],0)+"   "+DoubleToStr(Array[4][7],0)+"   "+DoubleToStr(Array[4][8],0)+"   "+DoubleToStr(Array[4][9],0)+"   "+DoubleToStr(Array[4][10],0)+"   "+DoubleToStr(Array[4][11],0)+"   "+DoubleToStr(Array[4][12],0);
         a6= "\n   "+DoubleToStr(Array[5][0],0)+"   "+DoubleToStr(Array[5][1],0)+"   "+DoubleToStr(Array[5][2],0)+"   "+DoubleToStr(Array[5][3],0)+"   "+DoubleToStr(Array[5][4],0)+"   "+DoubleToStr(Array[5][5],0)+"   "+DoubleToStr(Array[5][6],0)+"   "+DoubleToStr(Array[5][7],0)+"   "+DoubleToStr(Array[5][8],0)+"   "+DoubleToStr(Array[5][9],0)+"   "+DoubleToStr(Array[5][10],0)+"   "+DoubleToStr(Array[5][11],0)+"   "+DoubleToStr(Array[5][12],0);
         a7= "\n   "+DoubleToStr(Array[6][0],0)+"   "+DoubleToStr(Array[6][1],0)+"   "+DoubleToStr(Array[6][2],0)+"   "+DoubleToStr(Array[6][3],0)+"   "+DoubleToStr(Array[6][4],0)+"   "+DoubleToStr(Array[6][5],0)+"   "+DoubleToStr(Array[6][6],0)+"   "+DoubleToStr(Array[6][7],0)+"   "+DoubleToStr(Array[6][8],0)+"   "+DoubleToStr(Array[6][9],0)+"   "+DoubleToStr(Array[6][10],0)+"   "+DoubleToStr(Array[6][11],0)+"   "+DoubleToStr(Array[6][12],0);
         a8= "\n   "+DoubleToStr(Array[7][0],0)+"   "+DoubleToStr(Array[7][1],0)+"   "+DoubleToStr(Array[7][2],0)+"   "+DoubleToStr(Array[7][3],0)+"   "+DoubleToStr(Array[7][4],0)+"   "+DoubleToStr(Array[7][5],0)+"   "+DoubleToStr(Array[7][6],0)+"   "+DoubleToStr(Array[7][7],0)+"   "+DoubleToStr(Array[7][8],0)+"   "+DoubleToStr(Array[7][9],0)+"   "+DoubleToStr(Array[7][10],0)+"   "+DoubleToStr(Array[7][11],0)+"   "+DoubleToStr(Array[7][12],0);
         a9= "\n   "+DoubleToStr(Array[8][0],0)+"   "+DoubleToStr(Array[8][1],0)+"   "+DoubleToStr(Array[8][2],0)+"   "+DoubleToStr(Array[8][3],0)+"   "+DoubleToStr(Array[8][4],0)+"   "+DoubleToStr(Array[8][5],0)+"   "+DoubleToStr(Array[8][6],0)+"   "+DoubleToStr(Array[8][7],0)+"   "+DoubleToStr(Array[8][8],0)+"   "+DoubleToStr(Array[8][9],0)+"   "+DoubleToStr(Array[8][10],0)+"   "+DoubleToStr(Array[8][11],0)+"   "+DoubleToStr(Array[8][12],0);
         a10= "\n   "+DoubleToStr(Array[9][0],0)+"   "+DoubleToStr(Array[9][1],0)+"   "+DoubleToStr(Array[9][2],0)+"   "+DoubleToStr(Array[9][3],0)+"   "+DoubleToStr(Array[9][4],0)+"   "+DoubleToStr(Array[9][5],0)+"   "+DoubleToStr(Array[9][6],0)+"   "+DoubleToStr(Array[9][7],0)+"   "+DoubleToStr(Array[9][8],0)+"   "+DoubleToStr(Array[9][9],0)+"   "+DoubleToStr(Array[9][10],0)+"   "+DoubleToStr(Array[9][11],0)+"   "+DoubleToStr(Array[9][12],0);
         a11= "\n   "+DoubleToStr(Array[10][0],0)+"   "+DoubleToStr(Array[10][1],0)+"   "+DoubleToStr(Array[10][2],0)+"   "+DoubleToStr(Array[10][3],0)+"   "+DoubleToStr(Array[10][4],0)+"   "+DoubleToStr(Array[10][5],0)+"   "+DoubleToStr(Array[10][6],0)+"   "+DoubleToStr(Array[10][7],0)+"   "+DoubleToStr(Array[10][8],0)+"   "+DoubleToStr(Array[10][9],0)+"   "+DoubleToStr(Array[10][10],0)+"   "+DoubleToStr(Array[10][11],0)+"   "+DoubleToStr(Array[10][12],0);
         a12= "\n   "+DoubleToStr(Array[11][0],0)+"   "+DoubleToStr(Array[11][1],0)+"   "+DoubleToStr(Array[11][2],0)+"   "+DoubleToStr(Array[11][3],0)+"   "+DoubleToStr(Array[11][4],0)+"   "+DoubleToStr(Array[11][5],0)+"   "+DoubleToStr(Array[11][6],0)+"   "+DoubleToStr(Array[11][7],0)+"   "+DoubleToStr(Array[11][8],0)+"   "+DoubleToStr(Array[11][9],0)+"   "+DoubleToStr(Array[11][10],0)+"   "+DoubleToStr(Array[11][11],0)+"   "+DoubleToStr(Array[11][12],0);
         a13= "\n   "+DoubleToStr(Array[12][0],0)+"   "+DoubleToStr(Array[12][1],0)+"   "+DoubleToStr(Array[12][2],0)+"   "+DoubleToStr(Array[12][3],0)+"   "+DoubleToStr(Array[12][4],0)+"   "+DoubleToStr(Array[12][5],0)+"   "+DoubleToStr(Array[12][6],0)+"   "+DoubleToStr(Array[12][7],0)+"   "+DoubleToStr(Array[12][8],0)+"   "+DoubleToStr(Array[12][9],0)+"   "+DoubleToStr(Array[12][10],0)+"   "+DoubleToStr(Array[12][11],0)+"   "+DoubleToStr(Array[12][12],0);
   Comment(a1+a2+a3+a4+a5+a6+a7+a8+a9+a10+a11+a12+a13); 
//----
   return(0);
  }
//+------------------------------------------------------------------+

void BuildArray(int intSize)
{
   int side=intSize;
   int x=(intSize+1)/4,y=(intSize+1)/4 ; //center square
   int fill=1 ; //counter to fill array ;
   int dir=-1 ; //direction of 'walk'
   int i,s1,s2 ; //counters
   bool nowstop=false ;
   //side is the size of the square assumed to be an odd value
   Array[x][y]=fill ;
   for(s1=1;s1<=side;s1++) //s=number of steps to fill 'walking' each side 1,1,2,2,3,3,
   {
      s2=s1 ; //restrict last walk line
      if ( (s1+y) > side ) 
      {
         s2=s2-1 ;
         nowstop=true ;
      }
      for(i=1;i<=s2;i++)
      {
         fill++;
         y=y+dir;
         Array[x][y]=fill;
      }
      if (nowstop) break ;
      if ( (s1+x) > side )
      {
         s2=s2-1 ;
         nowstop=true ; 
      }
      for(i=1;i<=s2;i++)
      {
         fill++;
         x=x+dir;
         Array[x][y]=fill;
      }
      if (nowstop) break;
      
      dir=dir*(-1) ;
  }
   
}

