идеальный рассчет лота

 

из всего многообразия блоков рассчета лота я использую такой:

double Lots()
{
double lots,MD,RM,FMM,MinLot,MaxLot;
int lotsdigit;
MD = NormalizeDouble(MarketInfo(Symbol(), MODE_LOTSTEP), 2); // шаг лота
RM = NormalizeDouble(MarketInfo(Symbol(), MODE_MARGINREQUIRED), 4);
FMM = (RM+5)*100;
if (MD==0.01) lotsdigit=2;
else lotsdigit=1;
LotsDigit=lotsdigit;
if (MM==true) lots = NormalizeDouble(AccountFreeMargin()/(FMM/Risk)-0.05,LotsDigit);
else lots=ManLot;
MinLot=NormalizeDouble(MarketInfo(Symbol(),MODE_MINLOT),2); // минимальная ставка
MaxLot=NormalizeDouble(MarketInfo(Symbol(), MODE_MAXLOT),2); // максимальная ставка
if (LotsDigit == 2) MinLot = 0.01;
if (lots < MinLot) lots = MinLot;
if (lots > MaxLot) lots = MaxLot;
return (lots);
}

преимущества:

1) на микрофорексе рассчитывает вплоть до сотых долей

2) не останавливается когда достигает ограничения макс лота, поставленного ДЦ

недостатки:

на обычном не микросчете перестает рассчитывать лот, а может торговать только одним лотом


скажите пожалуйста в чем ошибка и как это исправить? или может кто подскажет свой код, который избегает таких случаев при сохранении преимуществ рассчета вплоть до сотых долей?

 

почему никого не заинтересовал вопрос? у всех уже есть идеальные блоки рассчета лота?)