[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 148

 
Roger:
Не волнуйтесь, он возвращает столько, сколько нужно, просто нужно захотеть это увидеть.

действительно)))

Print("ma red = "MA_M_0); // 4 знака (1.4533)

Print("ma red = ",DoubleToStr(MA_M_0,5)); // а так 5 знаков (1.45332)

Извиняюсь, наверно это был глупый вопрос)

Но почему так?

 
Давным-давно, когда МТ4 еще не было и автоматическая торговля только зарождалась, стандартом для цен считалось 4 знака после запятой. Поэтому не стали и заморачиваться.
 
разобрался... вот так засада с этим "Print", я уж подумал что тут дело в переменной)))
 
DhP:
Другой простой способ эти неприятности избежать:
А что изначально в prevtime?
 

Допустим есть открытый Бай-Стоп Ордер который достаточно удален от текущей цены. Необходимо немного изменить цену его открытия.

- Есть какое-то минимальное расстояние для новой точки открытия этого же ордера, относительно текущего значения OrderOpenPrice(), ниже которого нельзя устанавливать новую цену открытия?

Спасибо!

 
chief2000:

Допустим есть открытый Бай-Стоп Ордер который достаточно удален от текущей цены. Необходимо немного изменить цену его открытия.

- Есть какое-то минимальное расстояние для новой точки открытия этого же ордера, относительно текущего значения OrderOpenPrice(), ниже которого нельзя устанавливать новую цену открытия?

Спасибо!

StopLevel - на этой дистанции и ближе неё к цене ордер не сможете выставить.

FreezeLevel - если ордер уже стоит и цена подошла к нему на эту дистанцию и ближе, то ни удалить, ни модифицировать ордер уже нельзя (если ваш ДЦ использует его)

 
artmedia70:

StopLevel - на этой дистанции и ближе неё к цене ордер не сможете выставить.

FreezeLevel - если ордер уже стоит и цена подошла к нему на эту дистанцию и ближе, то ни удалить, ни модифицировать ордер уже нельзя (если ваш ДЦ использует его)

Это не совсем то о чем я спрашивал. Я имел в виду что есть Buy-STOP ордер и я хочу сдвинуть его OrderOpenPrice() на минимально-возможное расстояние (и эта цена достаточно далека от Ask).

- Например, можно ли сдвинуть OrderOpenPrice() на 1 пипс? Т.е.

Новый_OrderOpenPrice = OrderOpenPrice() + Point

Спрашиваю т.к. выскакивали какие-то странные ошибки, увеличил расстояние и ошибки пропали.

(можно написать отдельный код и проверить, но пока было не до этого)

 

При сравнении двух переменных типа double иногда получается неправильный результат. Вероятно, это происходит потому, что одна из переменных может быть незначительно больше или меньше другой (например, в 10 знаке). Использование функции NormalizeDouble в большинстве случаев не помогает. Некоторые советуют вычитать одну переменную из другой, но как в таком случае наиболее правильно построить выражение if(a>=b), вычитая одну переменную из другой? Или может быть, существует какой-то другой способ?

 
Elenn:

При сравнении двух переменных типа double иногда получается неправильный результат. Вероятно, это происходит потому, что одна из переменных может быть незначительно больше или меньше другой (например, в 10 знаке). Использование функции NormalizeDouble в большинстве случаев не помогает. Некоторые советуют вычитать одну переменную из другой, но как в таком случае наиболее правильно построить выражение if(a>=b), вычитая одну переменную из другой? Или может быть, существует какой-то другой способ?

А Вам действительно необходима такая высокая точность? - до десятого знака.

Если хотите сравнить, используя вычитание, то можно сравнивать с 0:

if((a-b)>0) { // ===>>> a>b

Или можно помножить на 1 000 000 и потом сравнить :)

 
chief2000:

А Вам действительно необходима такая высокая точность? - до десятого знака.

Если хотите сравнить, используя вычитание, то можно сравнивать с 0:

if((a-b)>0) { // ===>>> a>b

Или можно помножить на 1 000 000 и потом сравнить :)

я всегда использую при сравнении цен некую +/-epsilon=Point*0.01.

умножение на 1 000 000 ничего не даст. поверьте.

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