Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Удивительный вывод! С чего вы взяли что при любом digit, если даже "вообще не поняли" что такое digit?
Удивительный вывод! С чего вы взяли что при любом digit, если даже "вообще не поняли" что такое digit?
Скажу сразу, я в подобных выяснениях предпочитаю не участвовать, потому как, если по существу сказать нечего, зачем вообще говорить?
Хочу выразить огромную благодарность всем профи за ликбез!
Irtron, выбрал для себя Ваш вариант, ну очень он мне понравился. Чутка подправил для общих случаев, проверил - работает как часы:
int ComparePrice(double a, double b, double digit)
{
a -= b;
b = digit;
if (a > b)
return (1);
if (a < -b)
return (-1);
return (0);
}
Спасибо.
double digit14=0.00000000000001;
double digit12=0.000000000001;
double digit8=0.00000001;
double digit4=0.0001;
double digit2=0.01;
которое и будет определять требуемую точность.
Для такой функциональности работает очень быстро.
Irtron, еще раз благодарю.
Удивительный вывод! С чего вы взяли что при любом digit, если даже "вообще не поняли" что такое digit?
Скажу сразу, я в подобных выяснениях предпочитаю не участвовать, потому как, если по существу сказать нечего, зачем вообще говорить?
Почему же придираться, я только прочитал то, что вы написали. Вашему понимаю очевидно мешает "ваша откровенная... (слово поставьте сами)"
VBAG, зачем изобретать велосипед, если существует функция NormalizeDouble(), при использовании которой сравнение двух чисел выполняется быстрее, чем при помощи функции ComparePrice()?
VBAG, зачем изобретать велосипед, если существует функция NormalizeDouble(), при использовании которой сравнение двух чисел выполняется быстрее, чем при помощи функции ComparePrice()?
Если Вы предложите подобный велосипед или лучшие альтернативные решения, с удовольствием буду их использовать.
С уважением,
Владимир
VBAG, зачем изобретать велосипед, если существует функция NormalizeDouble(), при использовании которой сравнение двух чисел выполняется быстрее, чем при помощи функции ComparePrice()?
Если Вы предложите подобный велосипед или лучшие альтернативные решения, с удовольствием буду их использовать.
С уважением,
Владимир
2007.09.12 07:15:09 $CheckCompareDouble USDJPY,M5: CD: 20485, xNormalize: 51265
Вывод:
Функция СD сравнивает два числа double , дает ответ <, > или = с точностью 14 знаков после запятой и работает быстрее в 2 раза простого выполнения NormalizeDouble()(даже без логики их сравнения).
Многие пишут, что для сравнения надо использовать встроенныю функцию NormalizeDouble(). (так и разработчики рекомендуют)
Поэтому хотелось бы сначала определить: "что такое NormalizeDouble()?", т.е. как она работает, каков её алгоритм работы.
Округление числа с плавающей запятой до указанной точности.
...
Как в MQL4 организованно округления я не знаю (это надо спросить у разработчиков), но я знаю стандартный метод Округление числа с плавающей запятой до указанной точности:
Вот, функция:
Из это функции видно, что мы сначала переходим от вещественного числа к целому, а потом опять к вещественному.
Для сравнения достаточно перейти только к целому числу.
Поэтому, я думаю самое быстрое и надежное это перевести вещественные числа в целые
Сравнение будет выглядеть так:
Все это можно оформить в функцию и пользоваться. Ломает писать, вроде понятно как сделать функцию!
Думаю, такой способ быстрее, чем вызывать NormalizeDouble().
Для надежности можно еще сделать чтобы функция MathRound() возращала целочисленное число, а то по умолчанию она возращает double.
Самый простой способ сделать так
Тогда будут сравниваться только целые числа, а они сравниваются хорошо!
Думаю, этот способ вообще самый правильный, а вы?
Поэтому, я думаю самое быстрое и надежное это перевести вещественные числа в целые
Сравнение будет выглядеть так:
Думаю, этот способ вообще самый правильный, а вы?
Вся прелесть, кода который предложил Irtron, заключается в его компактности( абсолютно ничего лишнего-даже на переменных экономия!)
А Вы предлагаете как минимум на каждую операцию повесить еще две операции
Вот и пройгрыш в скорости!
Думаю, что нет. Судите сами