Вопрос по МТ4(build 205)

 
Ребята помагите...
Вопрос по МТ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 - неправильно). Что делать?
Заранее спасибо!
 

При делении целых чисел (int/ int) получается тоже int.
Ошибка округления. Приводите аргументы к double.

 

Вообще даже не так. Цены High и Low 0-го (текущего) бара меняются в течении бара до закрытия, поэтому могут в реальном времени различаться.

 
chv:

Вообще даже не так. Цены 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);
}
 
chv:

При делении целых чисел (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);
}
 

Результат воспроизводится. Я в недоумении. Чего-то совсем простого об MQL4 я еще не знаю... Замена Comment() на Print() ничего не меняет.

 

Баг в компиляторе. Причём именно в конструкции, когда дабловый результат выполнения какой-либо функции умножается на 2.

Баг пофиксили, в ближайшее время обновим дистрибутив.

 
Спасибо, stringo. И еще момент: в помощи к Comment() говорится, что "данные типа double выводятся с 4 десятичными цифрами после точки". А здесь - вообще без десятичных цифр после точки.
 
stringo:

Баг в компиляторе. Причём именно в конструкции, когда дабловый результат выполнения какой-либо функции умножается на 2.

Баг пофиксили, в ближайшее время обновим дистрибутив.

Это что, все эксперты, где используется конструкция 2*double f() дурят своих создателей и пользователей ?

Да... Вот это мина под платформу МТ4.

Причина обращения: