А если TickSize больше нуля, но меньше 1, то всегда будем получать 1 в знаменателе? Чтобы наверняка избежать ошибки, нужно кэшировать величину TickSize, проверить ее корректность, а потом использовать в расчетах, если значение больше нуля.
Игорь Герасько: А если TickSize больше нуля, но меньше 1, то всегда будем получать 1 в знаменателе? Чтобы наверняка избежать ошибки, нужно кэшировать величину TickSize, проверить ее корректность, а потом использовать в расчетах, если значение больше нуля.
Boris: Быстро среагировали, я урывками захожу! Но я уже поправил 1 на Point.
Дело в том, что для верности тогда нужно еще и сам _Point проверить на 0. Такое (равенство _Point нулю) редко, но бывает. В итоге оказываемся там, откуда пришли. Поэтому наиболее удобный и наглядный способ - просто проверять все знаменатели перед операцией деления на равенство нолю. Причем значение знаменателя должно быть кэшированным, а не вычисляться в процессе операции деления.
Игорь Герасько: Дело в том, что для верности тогда нужно еще и сам _Point проверить на 0. Такое (равенство _Point нулю) редко, но бывает. В итоге оказываемся там, откуда пришли. Поэтому наиболее удобный и наглядный способ - просто проверять все знаменатели перед операцией деления на равенство нолю. Причем значение знаменателя должно быть кэшированным, а не вычисляться в процессе операции деления.
Спасибо! Но для меня сходит и это, потому как вряд ли когда-нибудь возьмусь за 5-ку. И на 4-ке предпочитаю без новых заморочек с классами, структурами и пр.
Спасибо! Но для меня сходит и это, потому как вряд ли когда-нибудь возьмусь за 5-ку. И на 4-ке предпочитаю без новых заморочек с классами, структурами и пр.
В этом коде нет ни классов, ни структур. А вот на _Point, равный 0, в МТ4 также легко можно попасть.
Но это обновлённый, тогда всё надо будет переделывать! И индикатор мне не нужен. Я только формулу стоимости пункта в советник поставлю и для инфо в соммент выведу! Кстати, на Point, равный нулю, никогда не попадал. Почти все параметры extern'а int в советнике, потому всё перевожу в double через Point.
Спасибо! С новой документацией знаком, но особенно не воодушевляет.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А так не нарвёшься:
А если TickSize больше нуля, но меньше 1, то всегда будем получать 1 в знаменателе? Чтобы наверняка избежать ошибки, нужно кэшировать величину TickSize, проверить ее корректность, а потом использовать в расчетах, если значение больше нуля.
Разве TickSize не целое число, как пункты(Pips)?
Нет.
Нет.
Благодарю за наглядность! Тогда вместо 1 поставим 0.00005, чтобы сгодилось и для 4-х знака. Или и это не подойдёт?
Зачем гадать, если есть однозначный способ, использованный мною в индикаторе PointValue (здесь)?
Зачем гадать, если есть однозначный способ, использованный мною в индикаторе PointValue (здесь)?
Быстро среагировали, я урывками захожу! Но я уже поправил 1 на Point.
Дело в том, что для верности тогда нужно еще и сам _Point проверить на 0. Такое (равенство _Point нулю) редко, но бывает. В итоге оказываемся там, откуда пришли. Поэтому наиболее удобный и наглядный способ - просто проверять все знаменатели перед операцией деления на равенство нолю. Причем значение знаменателя должно быть кэшированным, а не вычисляться в процессе операции деления.
Спасибо! Но для меня сходит и это, потому как вряд ли когда-нибудь возьмусь за 5-ку. И на 4-ке предпочитаю без новых заморочек с классами, структурами и пр.
Спасибо! Но для меня сходит и это, потому как вряд ли когда-нибудь возьмусь за 5-ку. И на 4-ке предпочитаю без новых заморочек с классами, структурами и пр.
В четверке этот код будет работать, если заменить описание OnCalculate таким:
В этом коде нет ни классов, ни структур. А вот на _Point, равный 0, в МТ4 также легко можно попасть.
В четверке этот код будет работать, если заменить описание OnCalculate таким:
В этом коде нет ни классов, ни структур. А вот на _Point, равный 0, в МТ4 также легко можно попасть.
Но это обновлённый, тогда всё надо будет переделывать! И индикатор мне не нужен. Я только формулу стоимости пункта в советник поставлю и для инфо в соммент выведу! Кстати, на Point, равный нулю, никогда не попадал. Почти все параметры extern'а int в советнике, потому всё перевожу в double через Point.
Спасибо! С новой документацией знаком, но особенно не воодушевляет.