Проверял работу советника и наткнулся на странный результат вычислений. Для проверки написал простой скрипт: есть три числа, a, b, c, задача - сравнить разность a и b с разностью b и c. Нормализуем значения a, b, c для четырех знаков, вычисляем разности. Выводим на экран значения этих разностей, а также логическую "1", если разности одинаковые. Что имеем: обе разности одинаковы, но переменная k в комменте все время показывает "0", говоря о том, что они не равны. Не могу понять, в чем фишка ... Может у кого-то есть идеи на этот счет? Скрипт прилагаю.
На экране такая картинка:
if (diff_1 - diff_2 < 0.00001)
Проверял работу советника и наткнулся на странный результат вычислений. Для проверки написал простой скрипт: есть три числа, a, b, c, задача - сравнить разность a и b с разностью b и c. Нормализуем значения a, b, c для четырех знаков, вычисляем разности. Выводим на экран значения этих разностей, а также логическую "1", если разности одинаковые. Что имеем: обе разности одинаковы, но переменная k в комменте все время показывает "0", говоря о том, что они не равны.
вам надо аналогично нормализовать и разности тоже
diff_1=NormalizeDouble(aa-bb,4); diff_2=NormalizeDouble(bb-cc,4);
а так? )
//+------------------------------------------------------------------+ //| TestDiff.mq4 | //| Copyright © 2010, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ int start() { int k; double a = 1.36844455; double b = 1.36750246; double c = 1.36660756; double aa; double bb; double cc; double diff_1; double diff_2; aa = NormalizeDouble(a,4); bb = NormalizeDouble(b,4); cc = NormalizeDouble(c,4); diff_1 = NormalizeDouble(a-b,4);//- NormalizeDouble(b,4); diff_2 = NormalizeDouble(b-c,4);// - NormalizeDouble(c,4); Print(" "+diff_1+" "+diff_2); if (diff_1==diff_2) k = 1; else k = 0; Comment(DoubleToStr(diff_1,4),"\n", DoubleToStr(diff_2,4),"\n", k); return; }
а так? )
Спасибо, буду пробовать.
Спасибо, буду пробовать.
И так, по ходу. Логическую проверку
if (diff_1==diff_2) k = 1; else k = 0;
можно написать проще (k желательно сделать булевой - bool) :
k = diff_1==diff_2;
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Проверял работу советника и наткнулся на странный результат вычислений. Для проверки написал простой скрипт: есть три числа, a, b, c, задача - сравнить разность a и b с разностью b и c. Нормализуем значения a, b, c для четырех знаков, вычисляем разности. Выводим на экран значения этих разностей, а также логическую "1", если разности одинаковые. Что имеем: обе разности одинаковы, но переменная k в комменте все время показывает "0", говоря о том, что они не равны. Не могу понять, в чем фишка ... Может у кого-то есть идеи на этот счет? Скрипт прилагаю.
На экране такая картинка: