#property copyright "Саша"
#property version   "2.00"
#property strict
#property indicator_chart_window

extern string In="";//Индикатор учитывает спред при рассчете лота
extern double Many=300;      //Для использования моего ММ сумма от которой идет рассчет задается в ручную
extern double Risk=5;        //Процент риска от депозита
extern double Distance=30.0; //Расстояние ценовой метки от цены

//Входные параметры
double arrow_price, Pipc, Poinnt, Money_risk, lotc, spred;
int    arrow;

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[])
{
   string   Text="";
//+------------------------------------------------------------------+
//Создание ценовой метки
//+------------------------------------------------------------------+  
   arrow=ObjectFind("Lotc");
   
   if (arrow<0)
     {
      ObjectCreate("Lotc",OBJ_ARROW,0, Time[0], Distance*_Point+Bid);
      ObjectSet("Lotc", OBJPROP_ARROWCODE, SYMBOL_LEFTPRICE);
     }
//+------------------------------------------------------------------+
   spred=NormalizeDouble(MarketInfo(Symbol(), MODE_SPREAD), 2);                   //Величина спреда в пунктах
   Poinnt=NormalizeDouble(MarketInfo(Symbol(),MODE_TICKVALUE), 8);                //Стоимость 1-го пункта в валюте
//+------------------------------------------------------------------+
   arrow_price=NormalizeDouble(ObjectGet("Lotc",OBJPROP_PRICE1),4);               //Узнайом какая цена ценовой метки
   
      if (arrow_price<Bid) Pipc=NormalizeDouble((Bid-arrow_price)/_Point,0)+spred; //Для правильности расчета узнайом гден находится
      else                 Pipc=NormalizeDouble((arrow_price-Bid)/_Point,0)+spred; //ценовая метка, выше цены или ниже
//+------------------------------------------------------------------+
//Рассчет ММ
//+------------------------------------------------------------------+
   Money_risk=Many*(Risk/100);   //Вичисляем риск в валюте
   lotc=Money_risk/Pipc/Poinnt;  //Вычисляем лот
//+------------------------------------------------------------------+
   
   Text =   "Risk = " + DoubleToStr(Money_risk, 3) +
    	      "\n" +
    	      "Spread = " + DoubleToStr(MarketInfo(Symbol(), MODE_SPREAD), 0) +
    	      "\n" +
    	      "Pipc = " + DoubleToStr(Pipc, 0) +
 	         "\n" +
 	         "Lotc = " + DoubleToStr(lotc, 5);

   Comment(Text);

return(rates_total);
}

void OnDeinit(const int reason)
{
Comment("");
}