Сб. Ноя 23rd, 2024

Функция расчета лота от размера депозита

Вычисление торгового лота

Полезная и часто нужная функция для расчета торгового лота в советниках для MT4:

Внешние параметры:

input double  Risk = 5.0; // процент риска для депозита
input double  Lot  = 0.01; // если Risk = 0, то рабочий лот будет таким

Вызывать функцию надо примерно так:

double LOT = WorkingLot(Risk,Lot); // LOT и будет тот вожделенный торговый лот. 
// для полного счастья, ЛОТ можно нормализовать. Даже желательно:
LOT = NormalizeDouble(LOT,2);

Сама функция расчета лота от депозита:

/*
risk - процент риска
lots - если risk = 0, то лот будет равен lots
*/
double WorkingLot(double risk,double lots)
  {
   double Lots;
   double Free    = AccountFreeMargin();
   double One_Lot = MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   double Stepx   = MarketInfo(Symbol(),MODE_LOTSTEP);
   double Min_Lot = MarketInfo(Symbol(),MODE_MINLOT);
   double Max_Lot = MarketInfo(Symbol(),MODE_MAXLOT);

   if(risk>0)
     {
      Lots=MathFloor(Free*risk/100/One_Lot/Stepx)*Stepx;
      if(Lots<Min_Lot) Lots=Min_Lot;
      if(Lots>Max_Lot) Lots=Max_Lot;
    //  return (Lots);
     }
   if(risk==0)
     {
      Lots=lots;
      if(Lots<Min_Lot) Lots=Min_Lot;
      if(Lots>Max_Lot) Lots=Max_Lot;
     }
//  ==========  наличие свободных денег для открытия ордеров   ===============
    if((Lots)*One_Lot>AccountFreeMargin())
     {
      Print("Нет свободных средств для открытия ордера");
      return(0);
     } 
    return (Lots);
  }

от drivermql

Добавить комментарий

Ваш адрес email не будет опубликован.

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.