Эта переменная intLoDi не меняет своего значения после запуска советника никогда, поэтому она должна быть именно в теле функции OnInit(). Нет надобности её пересчитывать на каждом тике и т.п., загружая бессмысленными операциями повторного пересчета процессор.
Как видно, для ее расчета испльзуется функция f_GetLotDigits("0"); Это пользовательская функция. Подробно с ней можно ознакомиться в теме Количество цифр после точки в величине лота.
Код её приведен ниже:
- Код: выделить все
int f_GetLotDigits(string sy)
{
/*
Описание : Количество цифр после запятой в величине лота
Параметры:
sy - наименование инструмента ("0" - текущий символ)
*/
if(sy == "0") sy = Symbol();
return((int)MathLog10(1 / MarketInfo(sy, MODE_LOTSTEP)));
}