MetaTrader 4 Client Terminal build 610 - страница 69

 
keekkenen:


и вы считаете, что вы правы в том что написали ? это неприемлемо !


Я написал про то, как работает FPU (часть процессора CPU - железо) и это приемлемо во всём мире, например в компиляторах от MS, Intel, gcc.
Надо быть очень внимательным, когда работаете с числами с плавающей точкой, особенно, когда имеет место преобразование результата вычисления.

Вот об такой код, чистый с точки зрения школьной математики, ломают копья мужи:

double x=0.7;
double p=0.1;

void OnStart()
  {  
   Print(int(x*(1/p))," ",int(x/p));
  }

В обоих случаях должна получиться 7, но во втором получится 6.

Дело тут, как я уже писал, в том, что нет точного представления числа 0.7 и при преобразовании из double в int не происходит округления.

Что бы избежать ошибки используйте функцию MathRound.

 

614 билд, дублирую

почему из инклюдников не подхватываются переменные ???

 
еще ... Вы будете не приятно удивлены если скопируете код из почты или из обычного тхт файла и вставите его в компилятор ....
 
VOLDEMAR:

614 билд, дублирую

почему из инклюдников не подхватываются переменные ???

Должны браться.

Попробуйте хоть раз нажать компиляцию (чтобы простимулировать перестройку intellicense) и попробуйте снова.

 
 Comment(DoubleToStr(point,5));

итог

Как не знаю в коде прописан #property strict

 
Renat:

Должны браться.

Попробуйте хоть раз нажать компиляцию (чтобы простимулировать перестройку intellicense) и попробуйте снова.




Проверил, не берется ...
 

Renat

Посмотрите


>
 
VOLDEMAR:

итог

Как не знаю в коде прописан #property strict


У меня работает.

#property strict
void start()
{
double pnt=MarketInfo(Symbol(),MODE_POINT);
double dgt=MarketInfo(Symbol(),MODE_DIGITS);

Comment("Point value= ",DoubleToStr(pnt,(int)dgt),"\n","Digits = ",dgt,"\n","curent time = ", TimeToString(TimeCurrent(),TIME_DATE|TIME_SECONDS));
}
 
evillive:

У меня работает.


вы создайте значение типа 1,3333333333333333333 и выведите его в Comment("Point value= ",DoubleToStr(.....,5));
 

Это у одного меня функция инициализации эксперта вызывается 2 раза при нажатии Ok в параметрах?

2014.03.04 20:35:42.826 Moving Average AUDUSD,H1: initialized
2014.03.04 20:35:42.826 Moving Average AUDUSD,H1: uninit reason 5
2014.03.04 20:35:42.825 Moving Average AUDUSD,H1 inputs: Lots=0.11; MaximumRisk=0.02; DecreaseFactor=3.0; MovingPeriod=12; MovingShift=6;
2014.03.04 20:35:42.817 Moving Average AUDUSD,H1: initialized
2014.03.04 20:35:42.817 Moving Average AUDUSD,H1: uninit reason 5
Причина обращения: