Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
WindSW
269
WindSW  
.......
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  
Люди добрые, пожалуйста, подскажите как исправить или другой способ реализации задуманного!!!
Владимир Тезис
4266
Владимир Тезис  

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

Валентин
871
Валентин  
WindSW:

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

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

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

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



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


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

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

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

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

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

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

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

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


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

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

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



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

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

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