Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если это для сравнения, то вы можете легко создать свою собственную функцию:
Это просто мысль.
Если это для сравнения, то вы можете легко создать свою собственную функцию:
Это просто мысль.
Это хорошая мысль, спасибо за нее :-)
Использование "Point" или "Point/2.0" - не очень хорошее значение разности, IMO. Ошибка округления, вносимая NormalizeDouble (на которой я сегодня обжегся), конечно, гораздо меньше, чем 8 цифр, скорее 15 цифр.
Учитывая предыдущие советы, я сделал некоторые изменения и собрал следующую процедуру, которая, кажется, работает нормально (даже используя "разницу" до 15 знаков после запятой), хотя она еще не была тщательно протестирована:
Here is a check of the obvious:
Вот еще одна возможная процедура, которая может сравнивать, но также может внутренне нормализовать A и/или B, а также ослабить разницу сравнения (A-B или B-A) до большего числа, основанного на "цифрах". Я сомневаюсь, что эта процедура необходима по сравнению с простой "AvsB" выше, но она предлагается для использования по желанию:
Использование "Point" или "Point/2.0" - не очень хорошее значение разности, IMO. Ошибка округления, вносимая NormalizeDouble (на которой я сегодня обжегся), конечно, намного меньше, чем 8 цифр, скорее 15 цифр.
Вам нужно самое большое значение, которое не может считаться ошибкой округления, или, эквивалентно, самое маленькое значение, которое не может считаться изменением цены. Поскольку цены могут изменяться только на величину, кратную пункту, пункт/2 как раз и является таким значением.
Двойное значение от брокера может быть любым от 1,2345750000000000 до 1,234584999999999 и все равно будет считаться той же ценой 1,23458.
Если бы вы использовали это, у вас не было бы проблемы:
if (a > b)
if (a >= b)
if (a != b)
следует ли нам избегать использования normalisedouble?
или может быть... у меня есть мысль, что мы можем использоватьфункцию MathRound
например, double x= (MathRound( 1.37883 * 100000)) / 100000 ;
Таким образом, мы можем сделать функцию
*Только используйте normalize double в вычислениях с двойным значением, а не везде, где есть double.
следует ли нам избегать использования normalisedouble?
или может быть... у меня есть мысль, что мы можем использовать функцию MathRound
например, double x= (MathRound( 1.37883 * 100000)) / 100000 ;
В итоге вы все равно получите двойное число и все еще возможность того, что цена != цена.
Я пришел к такому решению, которое превращает двойные числа в инты для сравнения двойных чисел. . .
так что ...
никогда не будет верным.