//+------------------------------------------------------------------+
//|                                                      LotSize.mq4 |
//|                                     Copyright 2013, Borodin A.V. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, Borodin A.V."
#property link      ""

#property indicator_chart_window
//--- input parameters
extern string    t1="---Депозит (0-текущий)---";
extern double    Depozit=0;
extern string    t3="---Добавить к текущему депо---";
extern double    PlusDepo=0;
extern string    t2="---Риск на сделку в %---";
extern double    RiskSdelka=2.0;
extern string    t4="---Число знаков в размере лота---";
extern int       p=2; 
extern string    t5="---Цвет текста---";
extern color     text=RoyalBlue;

double           Depo, RiskDepo, RiskOfPoint, tempLot, Lot,tempd;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
Depo=Depozit;
if(ObjectFind("STOP")==-1){ObjectCreate( "STOP", OBJ_HLINE, 0, 0, Open[0]-Point*50); ObjectSet("STOP",OBJPROP_COLOR,Red);}
if(ObjectFind("START")==-1){ObjectCreate( "START", OBJ_HLINE, 0, 0, Open[0]+Point*50);ObjectSet("START",OBJPROP_COLOR,Green);}
if(ObjectFind("LIMITlot")==-1){ObjectCreate( "LIMITlot", OBJ_LABEL, 0, 0, 0, 0, 0, 0, 0);ObjectSet("LIMITlot",OBJPROP_CORNER,0);ObjectSet("LIMITlot",OBJPROP_XDISTANCE,0);ObjectSet("LIMITlot",OBJPROP_YDISTANCE,50);}
if(ObjectFind("MARKETlot")==-1){ObjectCreate( "MARKETlot", OBJ_LABEL, 0, 0, 0, 0, 0, 0, 0);ObjectSet("MARKETlot",OBJPROP_CORNER,0);ObjectSet("MARKETlot",OBJPROP_XDISTANCE,0);ObjectSet("MARKETlot",OBJPROP_YDISTANCE,65);}
if(ObjectFind("MARKETRisk")==-1){ObjectCreate( "MARKETRisk", OBJ_LABEL, 0, 0, 0, 0, 0, 0, 0);ObjectSet("MARKETRisk",OBJPROP_CORNER,0);ObjectSet("MARKETRisk",OBJPROP_XDISTANCE,0);ObjectSet("MARKETRisk",OBJPROP_YDISTANCE,80);}
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----

ObjectDelete("STOP");
ObjectDelete("START");
ObjectDelete("LIMITlot");
ObjectDelete("MARKETlot");   
ObjectDelete("MARKETRisk");   


//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//Проверить не удалены ли линии  
  
if(Depozit==0)Depo=AccountBalance()+PlusDepo;
RiskDepo=Depo*RiskSdelka/100;
RiskOfPoint=(MarketInfo(Symbol(),MODE_TICKVALUE)/MarketInfo(Symbol(),MODE_TICKSIZE))/(MarketInfo(Symbol(),MODE_TICKSIZE)/Point);//Риск на один пункт на один лот
tempLot=RiskDepo/( RiskOfPoint*MathMax(MathAbs(Bid-ObjectGet("STOP", OBJPROP_PRICE1)),MathAbs(Ask-ObjectGet("STOP", OBJPROP_PRICE1))));//Сколько лотов мы можем позволить купить с заданным уровнем риска
/*
for(tempd=MathFloor(tempLot/MarketInfo(Symbol(),MODE_MINLOT))*MarketInfo(Symbol(),MODE_MINLOT);tempd<tempLot;tempd=tempd+MarketInfo(Symbol(),MODE_LOTSTEP))//Увеличивать лот пока он меньше расчетного.
  { 
  Lot=tempd;  
  } 
//Print("Расчитан лот:",Lot," Минимальный лот:",MarketInfo(Symbol(),MODE_MINLOT)," Шаг лота:",MarketInfo(Symbol(),MODE_LOTSTEP) );

if( Lot<MarketInfo(Symbol(),MODE_MINLOT) )Lot=0;
*/
ObjectSetText( "MARKETlot","Лот по рынку: "+DoubleToStr(tempLot,p) , 10, "Times New Roman", text);
tempLot=RiskDepo/(RiskOfPoint*MathAbs(ObjectGet("START", OBJPROP_PRICE1)-ObjectGet("STOP", OBJPROP_PRICE1)) );//Сколько лотов мы можем позволить купить с заданным уровнем риска
ObjectSetText( "LIMITlot","Отложенный лот: "+DoubleToStr(tempLot,p) , 10, "Times New Roman", text);
ObjectSetText( "MARKETRisk","Риск: "+DoubleToStr(RiskSdelka,1)+"% / "+ DoubleToStr(RiskDepo,0), 10, "Times New Roman", text);




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