[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 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", я уж подумал что тут дело в переменной)))
[Deleted]  
DhP:
Другой простой способ эти неприятности избежать:
А что изначально в prevtime?
 

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

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

Спасибо!

 
chief2000:

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

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

Спасибо!

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

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

 
artmedia70:

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

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

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

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

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

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

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

[Deleted]  

При сравнении двух переменных типа 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 ничего не даст. поверьте.