Самостоятельно проверить лень?
нет, я уже проверил.
Выдаёт одинаковые значения.
но если допустим OrderOpenPrice()=1.3500, то при
double z=1.3500;
if (NormalizeDouble(OrderOpenPrice(),Digits)==z) ....
иногда выдаётся TRUE, а иногда FALSE.
Пытаюсь разобраться в причинах данного события.
В общем нашёл одну вещь.
Показания тестера в "результатах"
48 2007.01.10 17:40 sell 20 0.30 1.2950 0.0000 1.2903 0.00 10517.12
в журнале
2008.01.27 01:26:00 2007.01.10 17:40 Tester: order #20, sell 0.30 EURUSD is opened
at 1.2950
При int x=OrderOpenPrice()/Point;
х получается равен 12949
Даже при x=NormalizeDouble(OrderOpenPrice(),Digits)/Point, х=12949.
А во всех отчётах OrderOpenPrice()=1,2950.
О_о
Дорогой Интегер.
Point является нормализованной величиной - 10 в минус какой-то степени.
NormalizeDouble(OrderOpenPrice(),Digits) - является тоже нормализованной.
И как действия над нормализованными значениями могут дать ненормализованный результат?
Это приблизительно как сумма двух int будет равна double, типа 2+2=4, 5. :)
Вопрос к "создателям" - возможно ли, что при вызове Point значение получится так сказать не нормализованным? (типа для EURUSD Point=0.000105, а не 0.0001)
Дорогой Интегер.
Point является нормализованной величиной - 10 в минус какой-то степени.
NormalizeDouble(OrderOpenPrice(),Digits) - является тоже нормализованной.
И как действия над нормализованными значениями могут дать ненормализованный результат?
А вот так вот! Любые арифметические действия над переменным double дают ненормализованный результат. Лично для меня это очевидно. Брюки поглаженные перед стиркой, после стирки уже никак глаженными не назовешь
Мне как бы без разницы - округляется или отбрасывается.
Меня больше всего волнует
Даже при x=NormalizeDouble(OrderOpenPrice(),Digits)/Point, х=12949.
А во всех отчётах OrderOpenPrice()=1,2950.
Получается, что цена не кратна Point. Но ведь так не должно быть!!!
Можете привести хоть один весомый аргумент, почему цена имеет право быть не кратной Point?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Скажите пожалйста чем отличается действия
NormalizeDouble(OrderOpenPrice(),Digits) от MathRound(OrderOpenPrice()/Point)*Point
Заранее спасибо откликнувшимся.
З.Ы. Это первая половина вопроса. По результатам ответа будет второй. :)