Помогите исправить ошибку в советнике

 

Доброе время суток!

Столкнулся с проблемой выставление размером лота в советнике (сетка)

Советник работает как на 4х и 5ти значных (Брокер Альпари)

но на центовом счете его размер лота 1.00лот. работает нормально.

На стандарте 0.10лот. работает также нормально

Помогите исправить чтобы его лот  в любом можно было выставить  в размере 0.01лота как и на стандарт счет так и на центовый.

вот ошибка:

Вот параметры советника:


Файлы:
Setka.mq4  35 kb
 

Смотрите как там вычисляется iLots - нормализуется до одного знака. Надо вместо 1 поставить 2, а еще лучше сделать внешний параметр для этого значения.

 
Evisat:

Доброе время суток!

Столкнулся с проблемой выставление размером лота в советнике (сетка)

Советник работает как на 4х и 5ти значных (Брокер Альпари)

но на центовом счете его размер лота 1.00лот. работает нормально.

На стандарте 0.10лот. работает также нормально

Помогите исправить чтобы его лот  в любом можно было выставить  в размере 0.01лота как и на стандарт счет так и на центовый.

вот ошибка:

Вот параметры советника:


Файлы:
Setka.mq4  45 kb
 
Vladimir Deryagin:


Нормализовать лот по Digits - это неправильно.

 
Dmitry Fedoseev:

Нормализовать лот по Digits - это неправильно.


Дмитрый, вы сможете исправить проблему в советнике? Буду Вам благодарен за помощь.

 

В окне свойств новая переменная LotsDigits. Ставьте 2 если лот 0.01, 1 - если 0.1 и 0 если 1.0 

Файлы:
Setka.mq4  45 kb
 

добрый день.

//удалить следующее

double iLots;
extern int LotsDigits=2;

//удалить все расчеты лота

iLots=NormalizeDouble(Lots*MathPow(LotExponent,NumOfTrades),LotsDigits);

//заменить в команде установки ордеров OrderSend

iLots

//на 

iLots(NumOfTrades)

//добавить функцию расчета лота


double iLots(int level)
{
return(MathMin(MathMax(MathFloor((Lots*MathPow(LotExponent,level)-MarketInfo(_Symbol,MODE_MINLOT))/
MarketInfo(_Symbol,MODE_LOTSTEP))*MarketInfo(_Symbol,MODE_LOTSTEP)+MarketInfo(_Symbol,MODE_MINLOT),
MarketInfo(_Symbol,MODE_MINLOT)),MarketInfo(_Symbol,MODE_MAXLOT)));
}
 будет работать и считать все автоматом, без лишних заморочек на любом брокере и счете.

с уважением.
 
Andrey Kisselyov:

добрый день.

 будет работать и считать все автоматом, без лишних заморочек на любом брокере и счете.

с уважением.

Вы забыли нормализацию.

 
Dmitry Fedoseev:

В окне свойств новая переменная LotsDigits. Ставьте 2 если лот 0.01, 1 - если 0.1 и 0 если 1.0 


Дмитрий, вы уже исправили в этом советнике ошибку которая вылетала у меня? Просто тут также выкладывали сов, кто делал изменения.  Хотелось бы узнать.

 
@Evisat
читайте мой предыдущий пост, внесите изменения, и забудьте о ручной высчитывании всяких Digits для лота. все что нужно там есть, а чего не нужно нету.

с уважением
 
Evisat:

Дмитрий, вы уже исправили в этом советнике ошибку которая вылетала у меня? Просто тут также выкладывали сов, кто делал изменения.  Хотелось бы узнать.


Исправил, выше смотрите мой пост с прикрепленным файлом

Причина обращения: