//+------------------------------------------------------------------+
//|                                                  mn LineSets.mq4 |
//+------------------------------------------------------------------+
#property copyright "Mn"

#property indicator_chart_window

extern color mCol = Red, mCol2 = Black;
extern int mLines = 5, mWid = 1;
extern double  mLineSpace1 = 13, mLineSpace2 = 21, mLineSpace3 = 34,mLineSpace4 = 55;

double mSpaceTab[5];
int mPipFact = 1;

//+------------------------------------------------------------------+
int init()
  {
    int mRN; 
    double mRnFirst;
    ArrayInitialize(mSpaceTab, 0.0);
    
    if(Digits == 3 || Digits == 5)
       mPipFact = 10;
   
    mSpaceTab[1] = mLineSpace1 * Point * mPipFact;
    mSpaceTab[2] = mLineSpace2 * Point * mPipFact;
    mSpaceTab[3] = mLineSpace3 * Point * mPipFact;
    mSpaceTab[4] = mLineSpace4 * Point * mPipFact;
      
    mRN = Bid / Point;
    mRN = mRN - mRN % (100 * mPipFact);
    mRnFirst = mRN * Point;
    if((Bid - mRnFirst) > (50 * Point * mPipFact))
      mRnFirst += (100 * Point * mPipFact);

    for(int i = 0; i < mLines; i++)
     {
      ObjectCreate("mMyLine"+i, OBJ_HLINE, 0, 0, 0, 0, 0);
      ObjectSet("mMyLine"+i, OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("mMyLine"+i, OBJPROP_PRICE1, mRnFirst + mSpaceTab[i]);
      ObjectSet("mMyLine"+i, OBJPROP_WIDTH, mWid);
      ObjectSet("mMyLine"+i, OBJPROP_COLOR, mCol);

      ObjectCreate("mMyDLine"+i, OBJ_HLINE, 0, 0, 0, 0, 0);
      ObjectSet("mMyDLine"+i, OBJPROP_STYLE, STYLE_SOLID);
      ObjectSet("mMyDLine"+i, OBJPROP_PRICE1, mRnFirst - mSpaceTab[i]);
      ObjectSet("mMyDLine"+i, OBJPROP_WIDTH, mWid);
      ObjectSet("mMyDLine"+i, OBJPROP_COLOR, mCol);
     }
      
    ObjectSet("mMyLine0", OBJPROP_COLOR, mCol2);
    ObjectSet("mMyLine0", OBJPROP_PRICE1, mRnFirst);
    mSpaceTab[0] = mRnFirst;

   return(0);
  }

//+------------------------------------------------------------------+
int deinit()
  {
    for(int i = 0; i < mLines; i++)
     {
      ObjectDelete("mMyLine"+i);
      ObjectDelete("mMyDLine"+i);
     }
   
   return(0);
  }

//+------------------------------------------------------------------+
int start()
  {
    double mLastPrice = mSpaceTab[0], mTotSpace = 0, mTotDSpace = 0;
    
    mSpaceTab[0] = ObjectGet("mMyLine0", OBJPROP_PRICE1);
    if(mSpaceTab[0] != mLastPrice)
      {
        for(int i = 1; i < mLines; i++)
          {
              mTotSpace += mSpaceTab[i];
              mTotDSpace -= mSpaceTab[i];
              ObjectSet("mMyLine"+i, OBJPROP_PRICE1, mSpaceTab[0] + mTotSpace);
              ObjectSet("mMyDLine"+i, OBJPROP_PRICE1, mSpaceTab[0] + mTotDSpace);
          }
          
         mLastPrice = mSpaceTab[0];
      }

    return(0);
  }
//+------------------------------------------------------------------+