//+------------------------------------------------------------------+
//|                                                    # Лот 1.5.mq4 !
//|                                     Copyright 2014, Kolosov D.E. |
//| Visualization mod by Dob3RmaNn                                   |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, Kolosov D.E."
#property link      ""
#property strict
#property indicator_chart_window

enum MM_menu
  {
   margin=0,  // Свободная маржа
   deposit=1, // Депозит
   equity=2   // Эквити
  };

enum Corner_menu
  {
   Upper_Left=0,  // Верхний левый
   Upper_Right=1, // Верхний правый
   Lower_Left=2,  // Нижний левый
   Lower_Right=3  // Нижний правый
  };

extern double  risk            = 5.0;               // Процент риска на сделку
extern MM_menu mm              = deposit;           // Расчет МаниМенеджмента
extern int     min_stop        = 10;                // СЛ (в старых пунктах)
extern int     min_take        = 10;                // ТП (в старых пунктах)
extern Corner_menu corner      = 0;                 // Угол привязки текста
extern int     coord_x         = 80;                 // Координата X
extern int     coord_y         = 0;                 // Координата Y
extern color   colortext       = Yellow;            // Цвет текста
extern int     text_size       = 8;                 // Размер шрифта

string name1 = "lotq";
double n     = 1.0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(Digits==3 || Digits==5) 
     {
      n=n*10;
      min_stop = min_stop*10;
      min_take = min_take*10;
     }
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   Comment("");
   ObjectDelete(name1);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   double Free=0;
   if(mm==0.0) { Free=AccountFreeMargin(); }
   else if(mm==1.0) { Free=AccountBalance(); }
   else if(mm==2.0) { Free=AccountEquity(); }
   else { Free=AccountBalance(); }
   double LotVal=MarketInfo(Symbol(),MODE_TICKVALUE)/(MarketInfo(Symbol(),MODE_TICKSIZE)
                            /MarketInfo(Symbol(),MODE_POINT));  // стоимость 1 пункта для 1 лота
   double Min_Lot=MarketInfo(Symbol(),MODE_MINLOT);
   double Max_Lot=MarketInfo(Symbol(),MODE_MAXLOT);
   double Step   =MarketInfo(Symbol(),MODE_LOTSTEP);

   if(LotVal == 0) return(0);
   if(Step   == 0) return(0);

   double Lot=MathFloor((Free*risk/100)/(min_stop*LotVal)/Step)*Step;
   if(Lot<Min_Lot) Lot=Min_Lot;
   if(Lot>Max_Lot) Lot=Max_Lot;
   Lot=NormalizeDouble(Lot,2);

   string text1,temp;
   double loss,prof,point_price;
   point_price=Lot*LotVal*n;
   text1="Лот "+DoubleToStr(Lot,2)+" ("+DoubleToStr(risk,2)+"%) 1п = "+DoubleToStr(point_price,2);

   SetLabel(name1,text1,colortext,coord_x,coord_y,corner,text_size);

   return(rates_total);
  }
//+------------------------------------------------------------------+
//| Параметры:                                                       |
//|    nm - наименование объекта                                     |
//|    tx - текст                                                    |
//|    cl - цвет метки                                               |
//|    xd - координата X в пикселах                                  |
//|    yd - координата Y в пикселах                                  |
//|    cr - номер угла привязки        (0 - левый верхний)           |
//|    fs - размер шрифта              (8 - по умолчанию)            |
//+------------------------------------------------------------------+
void SetLabel(string nm,string tx,color cl,int xd,int yd,int cr,int fs)
  {
   if(ObjectFind(nm)<0)
      ObjectCreate(nm,OBJ_LABEL,0,0,0);

   ObjectSetText(nm,tx,fs);
   ObjectSet(nm,OBJPROP_COLOR,cl);
   ObjectSet(nm,OBJPROP_XDISTANCE,xd);
   ObjectSet(nm,OBJPROP_YDISTANCE,yd);
   ObjectSet(nm,OBJPROP_CORNER,cr);
   ObjectSet(nm,OBJPROP_FONTSIZE,fs);
  }
//+------------------------------------------------------------------+
