Получение рыночной информации

 

В чем ошибка? Кто может подсказать?

long deals;

bool deals_bool = SymbolInfoInteger(
Symbol(), // символ
SYMBOL_SESSION_DEALS, // идентификатор свойства
deals // сюда примем значение свойства
);
int err = GetLastError();

Print (Symbol()," deals_bool = ",deals_bool," deals = ",deals," err = ",err);

Выдает ошибку:

4051

ERR_INVALID_FUNCTION_PARAMVALUE

Недопустимое значение параметра функции

 
Переменную deals надо передавать по ссылке.
 

Roger. Переменную deals надо передавать по ссылке.

Уважаемый Roger! Если Вам не трудно, внесите соответствующие изменения в пример, который я привел. Спасибо за Ваш отзыв.

 

в МТ4 есть SYMBOL_SESSION_DEALS ????

на МТ5 2014.04.22 15:52:49.491 test deals (GBPUSD,H1) GBPUSD deals_bool = true deals = 0 err = 0

 
long deals;
 bool deals_bool = SymbolInfoInteger(
 Symbol(), // символ
 SYMBOL_SESSION_DEALS, // идентификатор свойства
 deals& // сюда примем значение свойства
 );
 int err = GetLastError();

Print (Symbol()," deals_bool = ",deals_bool," deals = ",deals," err = ",err);
 

К сожалению Ваш вариант я уже пробовал. Компилятор выдает кучу ошибок.

SymbolInfoInteger

Возвращает соответствующее свойство указанного символа. Существует 2 варианта функции.

1. Непосредственно возвращает значение свойства.

long SymbolInfoInteger(
string name, // символ
ENUM_SYMBOL_INFO_INTEGER prop_id // идентификатор свойства
);

2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.

bool SymbolInfoInteger(
string name, // символ
ENUM_SYMBOL_INFO_INTEGER prop_id, // идентификатор свойства
long& long_var // сюда примем значение свойства
);

и в 1-м и во 2-м случаях выдает ошибку. 4051.

Может эти функции нужно использовать через классы?

 
Я был не прав, у Вас все было правильно. Проверил, да, некоторые функции не работают в четверке.
 
Спасибо за понимание. Жаль, что разработчик никак не отреагировал на эту важную тему.
 
ich_hub:
Спасибо за понимание. Жаль, что разработчик никак не отреагировал на эту важную тему.

Попробуйте скрипт кинуть на график, вроде работают но информации по некоторым идентификаторам нет

void OnStart()
  {
Alert("Количество сделок в текущей сессии = ",SymbolInfoInteger(Symbol(),SYMBOL_SESSION_DEALS));
Alert("Общее число ордеров на покупку в текущий момент = ",SymbolInfoInteger(Symbol(),SYMBOL_SESSION_BUY_ORDERS));
Alert("Общее число ордеров на продажу в текущий момент = ",SymbolInfoInteger(Symbol(),SYMBOL_SESSION_SELL_ORDERS));
Alert("Volume - объем в последней сделке = ",SymbolInfoInteger(Symbol(),SYMBOL_VOLUME));
Alert("Максимальный Volume за день = ",SymbolInfoInteger(Symbol(),SYMBOL_VOLUMEHIGH));
Alert("Минимальный Volume за день = ",SymbolInfoInteger(Symbol(),SYMBOL_VOLUMELOW));
Alert("Время последней котировки = ",TimeToString(SymbolInfoInteger(Symbol(),SYMBOL_TIME),TIME_DATE|TIME_MINUTES|TIME_SECONDS));
Alert("Количество знаков после запятой = ",SymbolInfoInteger(Symbol(),SYMBOL_DIGITS));  
Alert("Размер спреда в пунктах = ",SymbolInfoInteger(Symbol(),SYMBOL_SPREAD)); 
  }
//+------------------------------------------------------------------+
 

Уважаемый r772ra!

Спасибо за внимание к этой теме. Действительно, некоторая часть рыночной информации отображается, но именно то,

что хотелось бы получить с помощью указанных разработчиком функций, никак не удается!!!

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