Размер лота в Советнике

 

ТОварищи, подскажите начинающему, как написать, чтобы советник сам выбирал размер лота в зависимости от остатка денег на счете по примерному алгоритму.

Если на счете до 1500$ то позиция открывается размером в 0. 1 лота.

если на счете от 1500 до 2500, то 0.2 лота.

от 2500 до 3500, то 0.3

и т.д.

ну и надо учесть, чтобы закрывалось тем же количеством лотов, что и открывалась сделка.

В языке не силен, пока пытаюсь перенести, то что создал в метастоке в советник.

Спасибо за ответы)))

 
 
// Вычисление лотов
double Lots()                                            
 { 
   double lot_min =MarketInfo(Symbol(),MODE_MINLOT);
   double lot_max =MarketInfo(Symbol(),MODE_MAXLOT);
   double lot_step=MarketInfo(Symbol(),MODE_LOTSTEP);
   double contract=MarketInfo(Symbol(),MODE_LOTSIZE);
   double vol;
   //--- check data
   if(lot_min<0 || lot_max<=0.0 || lot_step<=0.0) 
     {
      PrintEx("CalculateVolume: invalid MarketInfo() results ["+lot_min+","+lot_max+","+lot_step+"]");
      return(0);
     }
   if(AccountLeverage() <= 0)
     {
      PrintEx("CalculateVolume: invalid AccountLeverage() ["+AccountLeverage()+"]");
      return(0);
     }
   //--- basic formula
   vol=NormalizeDouble(AccountFreeMargin()*G_MaximumRisk*AccountLeverage()/contract,2);
   //--- additional calculation
   //   ...
   //--- check min, max and step
   vol=NormalizeDouble(vol/lot_step,0)*lot_step;
   if(vol<lot_min) vol=lot_min;
   if(vol>lot_max) vol=lot_max;
 
   return(vol);
 }
где G_MaximumRisk - процент дипазита на который мона открываться.
 

Спасиб, попробую разобраться. Начну со второго, вроде бы поменьше, да и проще...

 

я качал и смотрел библиотеку lot lib . Она мошная штука, но там в нее встроен фильтр, и в зависимости от условия он выставляет кол-во лотов. он настраиваемый.

Причина обращения: