Проблема с функцией MarketInfo

 

Здравствуйте!

Только начал изучать язык Mq4 и столкнулся с проблемой вывода информации о значении пункта. Пишу простой код: double p =" MarketInfo(Symbol(),MODE_POINT); Alert(Point);"

В Метатрейдере стабильно Алерт выводит "0". Что я не так делаю уж ума не преложу??

Спасибо!

 
Прошу прощения, ошибка в строке кода, писал вот так: "double p =" MarketInfo(Symbol(),MODE_POINT); Alert(p);"
 
Сергей Михеев:
Прошу прощения, ошибка в строке кода, писал вот так: "double p =" MarketInfo(Symbol(),MODE_POINT); Alert(p);"

Попробуйте воспользоваться функцией https://www.mql5.com/ru/docs/convert/doubletostring

Например так

Alert(DoubleToString(p, 5));
Документация по MQL5: Преобразование данных / DoubleToString
Документация по MQL5: Преобразование данных / DoubleToString
  • www.mql5.com
Преобразование данных / DoubleToString - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Спасибо с этим разобрался!

Но я не могу понять почему все равно выводится ноль: "0.0000", а почему не выводится информации о значении пункта?

 
Сергей Михеев:

Спасибо с этим разобрался!

Но я не могу понять почему все равно выводится ноль: "0.0000", а почему не выводится информации о значении пункта?

По умолчанию вывод только с четырьмя знаками после запятой. А Вам похоже нужен пятый знак.

 
Victor Nikolaev:

По умолчанию вывод только с четырьмя знаками после запятой. А Вам похоже нужен пятый знак.

А 5 знак как-нибудь можно вывести?
 
Сергей Михеев:
А 5 знак как-нибудь можно вывести?
Вроде привел пример что бы можно было увидеть пятый и последующий знаки. Других вариантов нет. Может и появятся со временем.
 
Victor Nikolaev:
Вроде привел пример что бы можно было увидеть пятый и последующий знаки. Других вариантов нет. Может и появятся со временем.
Вообще какая-то ерунда с MarketInfo творится. Пишу "Alert(Ask)" выводит все правильно - 0,7091, а если пишу - " double m = MarketInfo("EURGBP",MODE_ASK); Alert(DoubleToString(m, 5));", то опять 0,0000!!!
 
Сергей Михеев:
Вообще какая-то ерунда с MarketInfo творится. Пишу "Alert(Ask)" выводит все правильно - 0,7091, а если пишу - " double m = MarketInfo("EURGBP",MODE_ASK); Alert(DoubleToString(m, 5));", то опять 0,0000!!!
Код покажите
 
Victor Nikolaev:
Код покажите

Вот, простейший тестовый файлик

//+------------------------------------------------------------------+
//|                                                     asistent.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#property strict
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   double p_t = MarketInfo("EURGBP",MODE_POINT);
   double a_k = MarketInfo("EURGBP",MODE_ASK);

   Alert("DoubleToString(a_k,5): ",DoubleToString(a_k,5)); //выводит: "0.00000"
   Alert("DoubleToString(p_t,5): ",DoubleToString(p_t,5)); //выводит: "0.00000"
   Alert("Ask: ",Ask); //выводит: " 0,7091" // Здесь все правильно!
//----
   return(0);
  }
//+------------------------------------------------------------------+

 
Спасибо за помощь!
Торговая платформа MetaTrader 5 для организации брокерского обслуживания / MetaQuotes Software Corp.
  • www.metaquotes.net
Торговая платформа MetaTrader 5 предназначена для проведения торговых операций на различных финансовый рынках. Терминал обладает большой базой аналитических возможностей и поддерживает более 70 различных инструментов для выполнения технического анализа
 

Пожалуйста вставляйте код правильно: Правильно вставляем код на форуме. Ваш пост я уже отредактировал.

Теперь к тесту: MetaTrader 4 build 842 х32 (MetaQuotes Software Corp.).

И вот алерты:

2015.07.02 08:00:14.516 asistent EURGBP,Daily: Alert: DoubleToString(a_k,5): 0.70919
2015.07.02 08:00:14.516 asistent EURGBP,Daily: Alert: DoubleToString(p_t,5): 0.00001
2015.07.02 08:00:14.516 asistent EURGBP,Daily: Alert: Ask: 0.70919
Как видите, всё в порядке.