как получить значение предыдущего хая по пятому знаку.

 
Здравствуйте. подскажите пожалуйста как получить значение предыдущего хая по пятому знаку. когда использую ф-ю High[], то значение автоматически округляется до четвертого знака.
 
sts141:
Здравствуйте. подскажите пожалуйста как получить значение предыдущего хая по пятому знаку. когда использую ф-ю High[], то значение автоматически округляется до четвертого знака.
iHigh(Symbol(),0,1);
Документация по MQL5: Доступ к таймсериям и индикаторам / iHigh
Документация по MQL5: Доступ к таймсериям и индикаторам / iHigh
  • www.mql5.com
Значение максимальной цены бара (указанного параметром shift) соответствующего графика или 0 в случае ошибки. Для получения дополнительной информации об ошибке необходимо вызвать функцию GetLastError(). Функция всегда возвращает актуальные данные, для этого она при каждом вызове делает запрос к таймсерии по указанным символу/периоду. Это...
 
sts141:
Здравствуйте. подскажите пожалуйста как получить значение предыдущего хая по пятому знаку. когда использую ф-ю High[], то значение автоматически округляется до четвертого знака.

оно не округляется.
если вы используете Print для того чтобы посмотреть результат, то  в нем и есть дело.
используйте Print (DoubleToString(High[1],_Digits)); чтобы прямо указать что вам нужно с точностью до 5 знаков. По умолчанию Print в болшинстве случаев округляет до 4х знаков за запятой.

 
я не использую Print. я использую High[] (пробовал и iHigh[]) для вычислений. идея примерно такая: я беру заданное количество ХАЕВ от текущего бара и выбираю из них самый большой и самый маленький хай. мне важно взять их по пятому знаку. но почему-то при использовании  ф-и High[]  или iHigh[] значения берутся по 4му знаку. вот не понимаю как это обойти....
 
вот сейчас на М5 попробовал просто High[1]-High[2] сделать. High[1]=1,13069, High[2]=1,13051. Разность равна 0,00018, но в алерте выдается 0,0002
 
может я что делаю не так? хотя тут вроде как элементарный вопрос....
 
sts141:
может я что делаю не так? хотя тут вроде как элементарный вопрос....

разница берется правильно и расчеты верные.
а вот когда вы используете алерт, нужно "трансформировать" double в string с явным указанием количесва разрядов. Для этого используйте функцию DoubleToString.
например:
double raznica = High[1] - High[2];
вы делаете так, верно?
Alert(raznica);
а надо так:
Alert( DoubleToString(raznica,_Digits) );

более расширенный вариант чтобы было понятно
string raznica_str = DoubleToString(raznica,_Digits);
Alert(raznica_str);

 
Nikolay Khrushchev:

разница берется правильно и расчеты верные.
а вот когда вы используете алерт, нужно "трансформировать" double в string с явным указанием количесва разрядов. Для этого используйте функцию DoubleToString.
например:
double raznica = High[1] - High[2];
вы делаете так, верно?
Alert(raznica);
а надо так:
Alert( DoubleToString(raznica,_Digits) );

более расширенный вариант чтобы было понятно
string raznica_str = DoubleToString(raznica,_Digits);
Alert(raznica_str);

да. я как раз так и делаю))) сейчас попробую по-другому. тогда получается сами вычисления идут правильные, но вывод я делаю неправильный, так?
 
sts141:
да. я как раз так и делаю))) сейчас попробую по-другому. тогда получается сами вычисления идут правильные, но вывод я делаю неправильный, так?
блин. получилось. спасибо вам большое!!!! даже не знаю как Вас отблагодарить)))
 
sts141:
блин. получилось. спасибо вам большое!!!! даже не знаю как Вас отблагодарить)))

пожалуйста. да ерунда )

 
Nikolay Khrushchev:

пожалуйста. да ерунда )

только начинаю заниматься программирование на MQL4))) таких мелочей в книгах не найти, у практиков только. 

еще раз спасибо

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