Именно так. Читаем словарь MetaEditor
===
void Print( ... )
Печатает некоторое сообщение в журнал экспертов. Параметры могут иметь любой тип. Массивы нельзя передать в функцию Print(). Массивы должны быть напечатаны поэлементно. Данные типа double печатаются с 4 десятичными цифрами после точки. Чтобы печататься с большей точностью, следует использовать функцию DoubleToStr(). Данные типов bool, datetime и color будут напечатаны в виде чисел. Чтобы печатать значения datetime как строку с датой, следует использовать функцию TimeToStr().
===
===
void Print( ... )
Печатает некоторое сообщение в журнал экспертов. Параметры могут иметь любой тип. Массивы нельзя передать в функцию Print(). Массивы должны быть напечатаны поэлементно. Данные типа double печатаются с 4 десятичными цифрами после точки. Чтобы печататься с большей точностью, следует использовать функцию DoubleToStr(). Данные типов bool, datetime и color будут напечатаны в виде чисел. Чтобы печатать значения datetime как строку с датой, следует использовать функцию TimeToStr().
===
Вот внёс в эксперт эту самую функцию DoubleToStr() соглачно справочной системе:
delta=1/6; Print("delta = ",DoubleToStr(delta,4)); delta=10*1/6; Print("delta = ",DoubleToStr(delta,4)); delta=100*1/6; Print("delta = ",DoubleToStr(delta,4));
Имеем в логе эксперта следующее:
2006.04.07 15:58:54 TEST EURUSDm,M1: delta = 16.0000
2006.04.07 15:58:54 TEST EURUSDm,M1: delta = 1.0000
2006.04.07 15:58:54 TEST EURUSDm,M1: delta = 0.0000
Это вообще как, нормально????? Куда подевалась остальная часть числа?
DoubleToStr(delta,8)
Понял проблему.
100.0*1/6
В Вашем случае работает целочисленная арифметика
100.0*1/6
В Вашем случае работает целочисленная арифметика
На самом деле - это конкретная подстава поскольку с этим можно очень крупно влететь!!! Я сегодня уже часок над этим время потратил. Хорошо, что вовремя обратил внимание на это!
Я например об этом не имел никакого представления. А возможно ли в следующих версиях MT4 поправить это дело? То есть чтобы если мы присваиваем результат к переменной типа double, то данные в правой части автоматически преобразовывались бы в double (добавлялся бы такой же нолик после запятой к каждому числу) и потом производились бы арифметические действия над ними? А что если у нас в примере были бы не голые числа, а переменные типа int? Что тогда будем делать? Отлавливать каждую возможную ситуацию? А если таких мест десятки? Это ведь всё сразу расползается!
Я например об этом не имел никакого представления. А возможно ли в следующих версиях MT4 поправить это дело? То есть чтобы если мы присваиваем результат к переменной типа double, то данные в правой части автоматически преобразовывались бы в double (добавлялся бы такой же нолик после запятой к каждому числу) и потом производились бы арифметические действия над ними? А что если у нас в примере были бы не голые числа, а переменные типа int? Что тогда будем делать? Отлавливать каждую возможную ситуацию? А если таких мест десятки? Это ведь всё сразу расползается!
Это - не подстава. Вопросы преобразования типов многократно обсуждались. Мы ничего менять не будем.
Возможно мы введём явное преобразование типов, однако я ничего не могу сказать Вам по срокам.
Возможно мы введём явное преобразование типов, однако я ничего не могу сказать Вам по срокам.
На самом деле - это конкретная подстава поскольку с этим можно очень крупно влететь!!!
Именно также на этом влетают и на C/C++ языках.

Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Имеем простейший эксперт
Он выдаёт на экране следующее:
2006.04.07 15:49:25 TEST EURUSDm,M1: delta = 16
2006.04.07 15:49:25 TEST EURUSDm,M1: delta = 1
2006.04.07 15:49:25 TEST EURUSDm,M1: delta = 0
А мне бы хотелось, чтобы выводилось следующим образом:
2006.04.07 15:49:25 TEST EURUSDm,M1: delta = 16.6666
2006.04.07 15:49:25 TEST EURUSDm,M1: delta = 1.6666
2006.04.07 15:49:25 TEST EURUSDm,M1: delta = 0.1666
Вопрос в том как это сделать? Кто может подсказать?
Build 191 от 02.03.2006
Неужели нужно в таком простейшем случае использовать функцию DoubleToStr()?