Как заставить эксперта работать с микролотом 0,01?

 
Здравствуйте! Сижу целый день немогу понять в чем причина, если эксперт работает без ММ  прекрасно ставится лот 0,01, если подключаю библиотеку Игоря Кима b-Lots.mqh лот идет минимальный 0,1, даже если оставить фиксированный лот. Спасибо!
 
fix >>:
Здравствуйте! Сижу целый день немогу понять в чем причина, если эксперт работает без ММ  прекрасно ставится лот 0,01, если подключаю библиотеку Игоря Кима b-Lots.mqh лот идет минимальный 0,1, даже если оставить фиксированный лот. Спасибо!

Эту библиотеку Игорь написал еще в 2005 году. Тогда дилинговые центры с меньшим объемом, чем 0,1 не работали.

------------ 

Откройте код библиотеки и найдите в самом низу:

...

...

  if (dLot<0.1) dLot=0.1;
  return(dLot);
}

  

Исправьте 0.1 на 0.01. Теперь эксперт будет дружить с данной библиотекой ;)

 

Спасибо за помощь, пробовал пишет 2008.11.08 19:25:27 2008.11.03 15:39 exp FDAXZ8,M1: OrderSend error 134

2008.11.08 19:25:27 2008.11.03 15:39 Tester: not enough money for buy 0.10 FDAXZ8 at 5021.0 sl: 0.0 tp: 0.0 [2008.11.03 15:39]

все равно хочет открыться лотом 0,1




 
fix писал(а) >>

Спасибо за помощь, пробовал пишет 2008.11.08 19:25:27 2008.11.03 15:39 exp FDAXZ8,M1: OrderSend error 134

2008.11.08 19:25:27 2008.11.03 15:39 Tester: not enough money for buy 0.10 FDAXZ8 at 5021.0 sl: 0.0 tp: 0.0 [2008.11.03 15:39]

все равно хочет открыться лотом 0,1

Нормальный эксперт работает любым лотом. Это просто в эксперте нет контроля на размер лота.

Хотя ошибка 134 говорит о недостатке средств для открытия сделки. Депозита не хватает.

 

Попробуйте сделать так:

=================================

В библиотеке убрать эту строчку (отмечена красным):

...

...

  if (dLot<0.1) dLot=0.1;
  return(dLot);
}

=================================

В советнике перед самым открытием поставить условие (отмечено зеленым):

.....

....

if (GetSizeLot()<0.01) return(0);

OrderSend(.....)

....

....

=================================

 
//===============================================================================
// Функция расчитывает объем лота исходя из заданного уровня риска
//===============================================================================
double GetLots(string _Symbol) {
   double lot=Lots;
   double LotMin=MarketInfo(_Symbol,MODE_MINLOT);
   double LotMax=MarketInfo(_Symbol,MODE_MAXLOT);
   double LotStep=MarketInfo(_Symbol,MODE_LOTSTEP);
   if (Risk>0) lot=MathRound(AccountEquity()*Risk/10000.0/LotStep)*LotStep;
   lot=MathMax(LotMin,MathMin(LotMax,lot));
   return(lot); 
}
Пример кода, который я обычно использую.
 

Lots=GetSizeLot();
if(GetSizeLot()<0.01) return(0);

WHCOrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,WindowExpertName(),mn,0,Red); получилась вот такая вещь, и опять ругается что нет денег на лот 0,1

 
fix >>:

Lots=GetSizeLot();
if(GetSizeLot()<0.01) return(0);

WHCOrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,SL,TP,WindowExpertName(),mn,0,Red); получилась вот такая вещь, и опять ругается что нет денег на лот 0,1

Сделайте так:

Lots=GetSizeLot();
if(Lots<0.01) return(0);

....

 
Vinin, попробовал ее вставить в код пишет Function "GetLots" is not referenced and will be removed from exp-file при компиляции
 
fix писал(а) >>
Vinin, попробовал ее вставить в код пишет Function "GetLots" is not referenced and will be removed from exp-file при компиляции

это означает, что она удалена, т.к. нигде в коде не используеться

 
zxc, спасибо за помощь но опять ругается лот 0,1
Причина обращения: