Функция расчета лота от размера депозита
Полезная и часто нужная функция для расчета торгового лота в советниках для 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);
}