Никак не могу разобраться с MarketInfo().
Возвращаются округленные double значения.
Например:
double bid=MarketInfo(symbol,MODE_BID);
вернет: 1.1187, а
string bid=MarketInfo(symbol,MODE_BID);
вернет корректно: 1.11856.
То же касается и MODE_POINT, если string то возвращает 0.00001, если double то 0....
Vitalie Postolache:
DoubleToString() помогает, говорят.
Так дело в том что со String то проблем никаких и нет, мне нужно получить это именно в Double. Если делать StringToDouble, то опять получается округление...
Vitalie Postolache:
DoubleToString() помогает, говорят.
Так дело в том что со String то проблем никаких и нет, мне нужно получить это именно в Double. Если делать StringToDouble, то опять получается округление...
Совершенно наоборот. Ты получаешь пятизначное дробное, а Print или Alert выводят четырёхзначное. И чтобы увидеть нормальное значение необходимо прибегать к таким ухищрениям как DoubleToString()
Посмотри без DoubleToString() что получится если умножить на 10, 100 и более.
Никак не могу разобраться с MarketInfo().
Возвращаются округленные double значения.
Например:
double bid=MarketInfo(symbol,MODE_BID);
вернет: 1.1187, а
string bid=MarketInfo(symbol,MODE_BID);
вернет корректно: 1.11856.
То же касается и MODE_POINT, если string то возвращает 0.00001, если double то 0....
Всё дело в формате вывода. Запишите:
double b=1.11856; Print("b=",b); Print("b=",DoubleToStr(b,8));
и вы при выводе получите:
b=1.1186 b=1.11856000
Дополнительно можно почитать https://docs.mql4.com/ru/common/print -- там есть некоторые примеры
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Никак не могу разобраться с MarketInfo().
Возвращаются округленные double значения.
Например:
double bid=MarketInfo(symbol,MODE_BID);
вернет: 1.1187, а
string bid=MarketInfo(symbol,MODE_BID);
вернет корректно: 1.11856.
То же касается и MODE_POINT, если string то возвращает 0.00001, если double то 0....