Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не можешь разобраться в коде? Статьи помогут!
Олег Коновалов aka Regul
126

Здравствуйте.

Возникает некоторое недоразумение, помогите разобраться.

В ниже представленном коде

double GetSizeLot()
  {
   double tmp,tml,sBalance=AccountBalance(),sMinLot=MarketInfo(Symbol(),MODE_MINLOT),sMargin=MarketInfo(Symbol(),MODE_MARGINREQUIRED);
//---- select
   tmp=MathMax(1,MathFloor((sBalance*(Risk/100))/(sMargin*sMinLot))); 
   tml=MathMin(tmp,MathFloor(sBalance/(sMargin*sMinLot))); 
//---- return lot size
   double sizeLot=MathMax(sLot,tml*sMinLot);
   return(sizeLot);
   }

иногда при запуске советника, возникает ошибка "Деление на ноль" со ссылкой на выделенную строку. И далее просто не торгует, хотя запуск и компиляцию проходит успешно.

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

ЗЫ. Ошибка вылетает на ECN счете в Альпари.

Victor Nikolaev
Модератор
14028
Victor Nikolaev 2014.03.17 16:08  

А Print() использовать не пробовали.

например

Print("sMargin", sMargin);
Олег Коновалов aka Regul
126
Олег Коновалов aka Regul 2014.03.17 16:29  
Vinin:

А Print() использовать не пробовали.

например


Не пробовал. Сейчас попробую поиграться. Спасибо.

Олег Коновалов aka Regul
126
Олег Коновалов aka Regul 2014.03.17 18:40  

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

По разному игрался с Print.

Выдает значение sMargin 0. Ничего не понимаю.

Т.е. получается надо менять эту функцию на альтернативную?

Алексей Тарабанов
7220
Алексей Тарабанов 2014.03.17 20:34  
konovalov:

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

По разному игрался с Print.

Выдает значение sMargin 0. Ничего не понимаю.

Т.е. получается надо менять эту функцию на альтернативную?


Попробуйте сначала объявить переменные, а после присвоить им значения.

ЗЫ Вместо sBalance*(Risk/100), я бы использовал sBalance*Risk*0.01

Олег Коновалов aka Regul
126
Олег Коновалов aka Regul 2014.03.18 11:15  
tara:


Попробуйте сначала объявить переменные, а после присвоить им значения.

ЗЫ Вместо sBalance*(Risk/100), я бы использовал sBalance*Risk*0.01


Спасибо. Приму к сведению.
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий