Скачать MetaTrader 5

Помогите, пожалуйста, с MarketInfo()

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Пиши роботов на заказ. Зарабатывай с сервисом Фриланс!
smsplay
25
smsplay 2015.06.25 16:07 

Никак не могу разобраться с 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
12130
Vitalie Postolache 2015.06.25 16:14  
smsplay:

Никак не могу разобраться с 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....

возвращает куда?
smsplay
25
smsplay 2015.06.25 16:38  
Vitalie Postolache:
возвращает куда?
Проверял через Alert и Print
Vitalie Postolache
12130
Vitalie Postolache 2015.06.25 16:55  
DoubleToString() помогает, говорят.
smsplay
25
smsplay 2015.06.25 19:01  

Vitalie Postolache:
DoubleToString() помогает, говорят.

 Так дело в том что со String то проблем никаких и нет, мне нужно получить это именно в Double. Если делать StringToDouble, то опять получается округление...

Alexey Viktorov
6834
Alexey Viktorov 2015.06.25 19:49  
smsplay:

Vitalie Postolache:
DoubleToString() помогает, говорят.

 Так дело в том что со String то проблем никаких и нет, мне нужно получить это именно в Double. Если делать StringToDouble, то опять получается округление...

Совершенно наоборот. Ты получаешь пятизначное дробное, а Print или Alert выводят четырёхзначное. И чтобы увидеть нормальное значение необходимо прибегать к таким ухищрениям как DoubleToString()

Посмотри без DoubleToString() что получится если умножить на 10, 100 и более.

Andrey F. Zelinsky
31359
Andrey F. Zelinsky 2015.06.26 22:35  
smsplay:

Никак не могу разобраться с 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 -- там есть некоторые примеры

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий