При делении целых чисел (int/ int) получается тоже int.
Ошибка округления. Приводите аргументы к double.
Вообще даже не так. Цены High и Low 0-го (текущего) бара меняются в
течении бара до закрытия, поэтому могут в реальном времени различаться.
Вообще даже не так. Цены High и Low 0-го (текущего) бара меняются в течении бара до закрытия, поэтому могут в реальном времени различаться.
А вот так тоже разные значения:
double Price()
{
return(0.666);
}
int start()
{
double IT = (2*Price())/2.0; // -------------- Здесь получается 0.666
double IT1 = (Price()+2.0*Price())/3.0; // ------- а здесь 0.333 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Comment (Price()," ",IT," ",IT1);
//----
return(0);
}
При делении целых чисел (int/ int) получается тоже int.
Ошибка округления. Приводите аргументы к double.
Ха ха...... на два не хочет умножать......
double Price()
{
return(1.0);
}
int start()
{
double IT2 = 2.0*Price(); // IT2= 1 !!!!!!!!!!!!!!!!!!!!!!!!
double IT3 = 3.0*Price(); // IT3=3 ok
double IT4 = 4.0*Price(); // IT4=4 ok
Comment (Price()," ",IT2," ",IT3," ",IT4);
return(0);
}
Баг в компиляторе. Причём именно в конструкции, когда дабловый результат выполнения какой-либо функции умножается на 2.
Баг пофиксили, в ближайшее время обновим дистрибутив.
Баг в компиляторе. Причём именно в конструкции, когда дабловый результат выполнения какой-либо функции умножается на 2.
Баг пофиксили, в ближайшее время обновим дистрибутив.
Это что, все эксперты, где используется конструкция 2*double f() дурят своих создателей и пользователей ?
Да... Вот это мина под платформу МТ4.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Вопрос по МТ4(build 205)
Создал Функцию
double Price(int i)
{
return((High[i]+ Low[i])/2);
}
........
int start()
{
int pos = 0; //последний бар
double IT = (Price(pos)+Price(pos+1)+Price(pos+1)
+Price(pos+2))/4; //Variant1
double IT1 = (Price(pos)+2*Price(pos+1)+Price(pos+2))/4; //Variant2
Comment (Price(pos)," ",Price(pos+1)," ",
Price(pos+2)," ",IT," ",IT1," ", pos," ", "n");
//----
return(0);
}
На экране ожидал увидеть одинаковые значения IT и IT1, а они разные! В чем я не прав?(IT
- правильно, IT1 - неправильно). Что делать?
Заранее спасибо!