Bid and Ask

 

Может ли когда-нибудь оказаться не нормализованное значение в переменных Bid и Ask ??

типа Bid = 1.123400000000001 и т.п.

 
Вы неправильно воспринимаете точность. Нормализация не означает, что Вы получите 1.123400000000000

Любое вещественное число в double можно представить лишь с определенной погрешностью.
То есть, величина 1.123400000000001 есть наиболее близкая к 1.123400000000000
 

Ладно,тогда по делу спрошу...

Мне надо чтоб стоплосс всегда был максимально близко к ордеру,
на столько,на сколько это позволяет MODE_STOPLEVEL.

//MODE_STOPLEVEL  = 10
//OrderStopLoss() = 1.1011
//Открыт селл ордер
 
if (OrderStopLoss()-Ask>=10*Point)
   OrderModify(OrderTicket(),0,Ask+10*Point,Ask-tp*Point,0,0);

В этом случае,если Ask будет 1.10010000000000001,тогда условие будет срабатывать только тогда,
когда Ask станет 1.1000 и соответственно MODE_STOPLEVEL для меня уже будет 11!

Просто устал уже везде NormalizeDouble(..) писать.

 
Ronen:

Просто устал уже везде NormalizeDouble(..) писать.



Устал - отдохни... И снова пиши. :))
 
Michel_S писал (а):
Ronen:

Просто устал уже везде NormalizeDouble(..) писать.



Устал - отдохни... И снова пиши. :))

Это точно! Так и делаю,но все же не перестаю искать возможности писать поменьше :)
 

Bid и Ask частенько грешат. Нормализовывать приходится всегда.

 
Ни разу в жизни не пользовался нормализацией.
Системы которым критичен каждый пипс все равно в жизни работать не будут.
Я всегда делаю люфт в размере спреда (иногда двух)
 
Mak писал (а):
Ни разу в жизни не пользовался нормализацией.
Системы которым критичен каждый пипс все равно в жизни работать не будут.
...
Смысл "каждого пипса" - это не для того,что бы делать пипсовые системы и собирать по пункту,а для того
чтобы оттестировав систему на демо недельку две,а потом прогнав на этом же промежутке на тестере получить
как можно более близкие результаты и таким образом понять на сколько правильно тестер тестирует определенную систему.
 
чтобы меньше писать, можно создать функцию

double nd(double x)
{ return(NormalizeDouble(x,Digits)); }

иногда в тестере попадаются ненормальные Bid/Ask и дают ошибку на OrderSend/OrderClose
 
Renat, а почемубы MT самому не нормализовывать критичные параметры автоматически!
 
Mihail:
Renat, а почемубы MT самому не нормализовывать критичные параметры автоматически!
А зачем брать на себя исправление ошибок программистов?
Чтобы получить постоянный поток обвинений из-за того, что программисты не следят за числами, а мы подчищаем за ними и создаем ситуации с несходимостями?

Обсуждается ведь не сам MQL4, а основы работы с вещественными числами. Точно такое же поведение вещественных чисел и в стандартных языках как C/C++.

Мы уже пытались делать "человеческие" языки. Это были MQL и MQL2. В результате поняли, что язык программирования - он для программистов и обманывать себя не надо тем, что может быть язык для неподготовленных пользователей. Это программирование и программисты должны отвечать за свой код.
Причина обращения: