Скачать MetaTrader 5

Лот не обнуляется...

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Используй MQL5 Cloud Network. Это безопасно!
WindSW
269
WindSW 2011.03.10 16:16 
.......
double   RecLot;

int init()
  {
   RecLot=0;
  }

int start()
  {
.......

//--- Расчет размера лота ------------------------------------------------------------
   RefreshRates();
   double LotsStep=NormalizeDouble(MarketInfo(Symbol(), MODE_LOTSTEP),2);
   double LotsMin=NormalizeDouble(MarketInfo(Symbol(),MODE_MINLOT),2);
   double LotsMax=NormalizeDouble(MarketInfo(Symbol(), MODE_MAXLOT),2);
   if (LotsStep==0.01) LotsDigit=2; else LotsDigit=1;
   if (Lots==0) WorkLot=NormalizeDouble (AccountEquity()*LotsPercent/100000,LotsDigit);
   else WorkLot=Lots;
  
   RecLot=OrderLots();
   SpyLot=NormalizeDouble(AccountEquity()*LotsPercent/100000,LotsDigit);
   if (Lots==0 && SpyLot<RecLot) WorkLot=RecLot;
   
   if (WorkLot>LotsMax) WorkLot=LotsMax;
   if (WorkLot<LotsMin) WorkLot=LotsMin;
.......

Всем доброго времени суток! Мне необходимо было чтобы лот только увеличивался или оставался прежним, для этого решил записывать лот текущего ордера RecLot, но при тестировании столкнулся с небольшой проблемкой: при изменении параметров лот не обнуляется, а остается прежним. А мне надо чтобы в тестере он при новом прогоне обнулялся. Да и не только в тестере.

Пожалуйста, подскажите, как это исправить?

WindSW
269
WindSW 2011.03.10 16:40  
Люди добрые, пожалуйста, подскажите как исправить или другой способ реализации задуманного!!!
Владимир Тезис
4266
Владимир Тезис 2011.03.10 16:56  

Непонятно что подразумевается под термином "новый прогон". Это что перезапуск советника, или очередной прогон при оптимизации? Если при перезапуске советника то Всё верно - в блоке инициализации лот инициализируется нулём и с этого значения стартует. Далее с ним можно делатиь что угодно, но только до тех пор, пока тест ни закончится. Если при оптимизации, то можно придумать принудительное обнуление в зависимости от того, поменялся ли какой-нибудь параметр. Например, можно воткнуть счётчик проходов оптимизатора и указать в параметрах значение от 1 до икса. Если этот счётчик изменился (увеличился на 1), то лот обнуляем принудительно.

Валентин
871
Валентин 2011.03.10 16:58  
WindSW:

Всем доброго времени суток! Мне необходимо было чтобы лот только увеличивался или оставался прежним, для этого решил записывать лот текущего ордера RecLot, но при тестировании столкнулся с небольшой проблемкой: при изменении параметров лот не обнуляется, а остается прежним. А мне надо чтобы в тестере он при новом прогоне обнулялся. Да и не только в тестере.

Пожалуйста, подскажите, как это исправить?

if (WorkLot>LotsMax) WorkLot=LotsMax;
if (WorkLot<LotsMin) WorkLot=LotsMin;
В любом случая, WorkLot либо максимальному значению, либо минимальному, но не нулю.
WindSW
269
WindSW 2011.03.10 17:05  
drknn:

Непонятно что подразумевается под термином "новый прогон". Это что перезапуск советника, или очередной прогон при оптимизации? Если при перезапуске советника то Всё верно - в блоке инициализации лот инициализируется нулём и с этого значения стартует. Далее с ним можно делатиь что угодно, но только до тех пор, пока тест ни закончится. Если при оптимизации, то можно придумать принудительное обнуление в зависимости от того, поменялся ли какой-нибудь параметр. Например, можно воткнуть счётчик проходов оптимизатора и указать в параметрах значение от 1 до икса. Если этот счётчик изменился (увеличился на 1), то лот обнуляем принудительно.



Вся проблема возникает при оптимизации или при смене параметров советника в тестере стратегий. В реальности советник еще не проверялся.
WindSW
269
WindSW 2011.03.10 17:07  
rensbit:
В любом случая, WorkLot либо максимальному значению, либо минимальному, но не нулю.


Это означает, что лот не может быть больше или меньше лимитов установленных ДЦ
bolt
67
bolt 2011.03.10 18:14  
WindSW:

Всем доброго времени суток! Мне необходимо было чтобы лот только увеличивался или оставался прежним, для этого решил записывать лот текущего ордера RecLot, но при тестировании столкнулся с небольшой проблемкой: при изменении параметров лот не обнуляется, а остается прежним. А мне надо чтобы в тестере он при новом прогоне обнулялся. Да и не только в тестере.

Пожалуйста, подскажите, как это исправить?

А зачем его обнулять. Вы же с нулевым лотом открыть ордер не сможете.
Владимир Тезис
4266
Владимир Тезис 2011.03.10 18:24  
WindSW:

Вся проблема возникает при оптимизации или при смене параметров советника в тестере стратегий. В реальности советник еще не проверялся.

НУ дык счётчик прогонов Вам в руки.

extern int SchProgonov=1;// счётчик прогонов

WindSW
269
WindSW 2011.03.10 18:43  
bolt:
А зачем его обнулять. Вы же с нулевым лотом открыть ордер не сможете.


Обнулить RecLot в самом начале запуска эксперта, точнее его тестирования, чтобы не оставался размер лота от предыдущего раза
WindSW
269
WindSW 2011.03.10 18:45  
drknn:

НУ дык счётчик прогонов Вам в руки.

extern int SchProgonov=1;// счётчик прогонов



А как его реализовать?
Комбинатор
15923
Комбинатор 2011.03.10 23:51  
RecLot=OrderLots();

Ордер выбран? Скорее всего проблема здесь. Учитываете, что в начале прогона ордеров может не быть, соответственно OrderSelect вернет false, а OrderLots будет выдавать всякую фигню?

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий