Функции для получения рыночной информации.
Функция |
Действие |
SymbolsTotal |
Возвращает количество доступных (выбранных в MarketWatch или всех) символов |
SymbolName |
Возвращает наименование указанного символа |
SymbolSelect |
Выбирает символ в окне MarketWatch или убирает символ из окна |
SymbolIsSynchronized |
Проверяет синхронизированность данных по указанному символу в терминале с данными на торговом сервере |
SymbolInfoDouble |
Возвращает значение типа double указанного символа для соответствующего свойства |
SymbolInfoInteger |
Возвращает значение целочисленного типа (long, datetime, int или bool) указанного символа для соответствующего свойства |
SymbolInfoString |
Возвращает значение типа string указанного символа для соответствующего свойства |
SymbolInfoMarginRate |
Возвращает коэффициенты взимания маржи в зависимости от типа и направления ордера |
SymbolInfoTick |
Возвращает текущие цены для указанного символа в переменной типа MqlTick |
SymbolInfoSessionQuote |
Позволяет получить время начала и время окончания указанной котировочной сессии для указанных символа и дня недели. |
SymbolInfoSessionTrade |
Позволяет получить время начала и время окончания указанной торговой сессии для указанных символа и дня недели. |
MarketBookAdd |
Обеспечивает открытие стакана цен по указанному инструменту, а также производит подписку на получение извещений об изменении указанного стакана |
MarketBookRelease |
Обеспечивает закрытие стакана цен по указанному инструменту, а также отменяет подписку на получение извещений об изменении указанного стакана |
MarketBookGet |
Возвращает массив структур типа MqlBookInfo, содержащий записи стакана цен указанного символа |
SymbolsTotal
Возвращает количество доступных (выбранных в MarketWatch или всех) символов.
int SymbolsTotal( bool selected // true – только символы в MarketWatch );
Параметры
selected — [in] Режим запроса. Может принимать значения true или false.
Возвращаемое значение
Если параметр selected равно true, то возвращается количество выбранных в MarketWatch символов. Если значение false, то возвращается общее количество всех символов.
SymbolName
Возвращает наименование указанного символа.
string SymbolName( int pos, // номер в списке bool selected // true – только символы в MarketWatch );
Параметры
pos — [in] Номер символа по порядку.
selected — [in] Режим запроса. Если значение true, то символ берется из списка выбранных в MarketWatch. Если значение false, то символ берется из общего списка.
Возвращаемое значение
Значение типа string c именем символа.
SymbolSelect
Выбирает символ в окне MarketWatch (Обзор рынка) или убирает символ из этого окна.
bool SymbolSelect( string name, // имя символа bool select // включить или выключить );
Параметры
name — [in] Имя символа.
select — [in] Переключатель. Если значение false, то символ должен быть убран из окна MarketWatch, в противном случае символ должен быть выбран в окно MarketWatch. Символ не может быть убран, если есть открытые графики с этим символом или есть открытые позиции по этому символу.
Возвращаемое значение
В случае неудачи функция возвращает false.
SymbolIsSynchronized
Проверяет факт синхронизированности данных по указанному символу в терминале с данными на торговом сервере
bool SymbolIsSynchronized( string name, // имя символа );
Параметры
name — [in] Имя символа.
Возвращаемое значение
Если данные синхронизированы, возвращает true, иначе возвращает false.
SymbolInfoDouble
Возвращает соответствующее свойство указанного символа. Существует 2 варианта функции.
1. Непосредственно возвращает значение свойства.
double SymbolInfoDouble( string name, // символ ENUM_SYMBOL_INFO_DOUBLE prop_id // идентификатор свойства );
2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.
bool SymbolInfoDouble( string name, // символ ENUM_SYMBOL_INFO_DOUBLE prop_id, // идентификатор свойства double& double_var // сюда примем значение свойства );
Параметры
name — [in] Имя символа.
prop_id — [in] Идентификатор свойства символа. Значение может быть одним из значений перечисления ENUM_SYMBOL_INFO_DOUBLE.
double_var — [out] Переменная типа double, принимающая значение запрашиваемого свойства.
Возвращаемое значение
Значение типа double. В случае неудачного выполнения информацию об ошибкe можно получить с помощью функции GetLastError():
5040 – неверный строковый параметр для указания имени символа,
4301 – неизвестный символ (финансовый инструмент),
4302 – символ не выбран в «Обзоре рынка» (нет в списке доступных),
4303 – неверный идентификатор свойства символа.
Примечание
Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с момента подключения терминала к торговому счету не было еще ни одной котировки. В таком случае запрашиваемое значение будет неопределенным.
В большинстве случаев достаточно использовать функцию SymbolInfoTick(), которая позволяет получить за один вызов значения Ask, Bid, Last, Volume и время прихода последнего тика.
Пример:
void OnTick() { //--- получим спред из свойств символа bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT); string comm=StringFormat("Спред %s = %I64d пунктов\r\n", spreadfloat?"плавающий":"фиксированный", SymbolInfoInteger(Symbol(),SYMBOL_SPREAD)); //--- вычислим теперь спред сами double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK); double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID); double spread=ask-bid; int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT)); comm=comm+"Вычисленный спред = "+(string)spread_points+" пунктов"; Comment(comm); }
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 // сюда примем значение свойства );
Параметры
name — [in] Имя символа.
prop_id — [in] Идентификатор свойства символа. Значение может быть одним из значений перечисления ENUM_SYMBOL_INFO_INTEGER.
long_var — [out] Переменная типа long, принимающая значение запрашиваемого свойства.
Возвращаемое значение
Значение типа long. В случае неудачного выполнения информацию об ошибкe можно получить с помощью функции GetLastError():
5040 – неверный строковый параметр для указания имени символа,
4301 – неизвестный символ (финансовый инструмент),
4302 – символ не выбран в «Обзоре рынка» (нет в списке доступных),
4303 – неверный идентификатор свойства символа.
Примечание
Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с момента подключения терминала к торговому счету не было еще ни одной котировки. В таком случае запрашиваемое значение будет неопределенным.
В большинстве случаев достаточно использовать функцию SymbolInfoTick(), которая позволяет получить за один вызов значения Ask, Bid, Last, Volume и время прихода последнего тика.
Пример:
void OnTick() { //--- получим спред из свойств символа bool spreadfloat=SymbolInfoInteger(Symbol(),SYMBOL_SPREAD_FLOAT); string comm=StringFormat("Спред %s = %I64d пунктов\r\n", spreadfloat?"плавающий":"фиксированный", SymbolInfoInteger(Symbol(),SYMBOL_SPREAD)); //--- вычислим теперь спред сами double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK); double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID); double spread=ask-bid; int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT)); comm=comm+"Вычисленный спред = "+(string)spread_points+" пунктов"; Comment(comm); }
SymbolInfoString
Возвращает соответствующее свойство указанного символа. Существует 2 варианта функции.
1. Непосредственно возвращает значение свойства.
string SymbolInfoString( string name, // символ ENUM_SYMBOL_INFO_STRING prop_id // идентификатор свойства );
2. Возвращает true или false в зависимости от успешности выполнения функции. В случае успеха значение свойства помещается в приемную переменную, передаваемую по ссылке последним параметром.
bool SymbolInfoString( string name, // символ ENUM_SYMBOL_INFO_STRING prop_id, // идентификатор свойства string& string_var // сюда примем значение свойства );
Параметры
name — [in] Имя символа.
prop_id — [in] Идентификатор свойства символа. Значение может быть одним из значений перечисления ENUM_SYMBOL_INFO_STRING.
string_var — [out] Переменная типа string, принимающая значение запрашиваемого свойства. В случае неудачного выполнения информацию об ошибкe можно получить с помощью функции GetLastError():
5040 – неверный строковый параметр для указания имени символа,
4301 – неизвестный символ (финансовый инструмент),
4302 – символ не выбран в «Обзоре рынка» (нет в списке доступных),
4303 – неверный идентификатор свойства символа.
Примечание
Если функция используется для получения информации о последнем тике, то лучше использовать SymbolInfoTick(). Вполне возможно, что по данному символу с момента подключения терминала к торговому счету не было еще ни одной котировки. В таком случае запрашиваемое значение будет неопределенным.
В большинстве случаев достаточно использовать функцию SymbolInfoTick(), которая позволяет получить за один вызов значения Ask, Bid, Last, Volume и время прихода последнего тика.
Возвращаемое значение
Значение типа string.
SymbolInfoMarginRate
Возвращает коэффициенты взимания маржи в зависимости от типа и направления ордера.
bool SymbolInfoMarginRate( string name, // символ ENUM_ORDER_TYPE order_type, // тип ордера double& initial_margin_rate, // коэффициент взимания начальной маржи double& maintenance_margin_rate // коэффициент взимания поддерживающей маржи );
Параметры
name — [in] Имя символа.
order_type — [in] Тип ордера.
initial_margin_rate — [in] Переменная типа double для получения коэффициента взимания начальной маржи. Начальная маржа – это размер гарантийной суммы под совершение сделки объемом в 1 лот соответствующего направления. Умножая коэффициент на начальную маржу, мы можем получить размер средств, который будет зарезервирован на счете при размещении ордера указанного типа.
maintenance_margin_rate — [out] Переменная типа double для получения коэффициента взимания поддерживающей маржи. Поддерживающая маржа –– это размер минимальной суммы для поддержания открытой позиции объемом в 1 лот соответствующего направления. Умножая коэффициент на поддерживающую маржу, мы можем получить размер средств, который будет зарезервирован на счете после срабатывания ордера указанного типа.
Возвращаемое значение
Возвращает true в случае удачного выполнения запроса свойств, иначе false.
SymbolInfoTick
Возвращает текущие цены для указанного символа в переменной типа MqlTick.
bool SymbolInfoTick( string symbol, // символ MqlTick& tick // ссылка на структуру );
Параметры
symbol — [in] Имя символа.
tick — [out] Ссылка на структуру типа MqlTick, в которую будут помещены текущие цены и время последнего обновления цен.
Возвращаемое значение
Возвращает true в случае успеха, иначе false.
SymbolInfoSessionQuote
Позволяет получить время начала и время окончания указанной котировочной сессии для указанных символа и дня недели.
bool SymbolInfoSessionQuote( string name, // имя символа ENUM_DAY_OF_WEEK day_of_week, // день недели uint session_index, // номер сессии datetime& from, // время начала сессии datetime& to // время окончания сессии );
Параметры
name — [in] Имя символа.
ENUM_DAY_OF_WEEK — [in] День недели, значение из перечисления ENUM_DAY_OF_WEEK.
uint — [in] Порядковый номер сессии, для которой нужно получить время начала и время окончания. Индексация сессий начинается с 0.
from — [out] Время начала сессии в секундах от 00 часов 00 минут, в полученном значении дату следует игнорировать.
to — [out] Время окончания сессии в секундах от 00 часов 00 минут, в полученном значении дату следует игнорировать.
Возвращаемое значение
Если данные для указанных сессии, символа и дня недели получены, то возвращает true, иначе возвращает false.
SymbolInfoSessionTrade
Позволяет получить время начала и время окончания указанной торговой сессии для указанных символа и дня недели.
bool SymbolInfoSessionTrade( string name, // имя символа ENUM_DAY_OF_WEEK day_of_week, // день недели uint session_index, // номер сессии datetime& from, // время начала сессии datetime& to // время окончания сессии );
Параметры
name — [in] Имя символа.
ENUM_DAY_OF_WEEK — [in] День недели, значение из перечисления ENUM_DAY_OF_WEEK.
uint — [in] Порядковый номер сессии, для которой нужно получить время начала и время окончания. Индексация сессий начинается с 0.
from — [out] Время начала сессии в секундах от 00 часов 00 минут, в полученном значении дату следует игнорировать.
to — [out] Время окончания сессии в секундах от 00 часов 00 минут, в полученном значении дату следует игнорировать.
Возвращаемое значение
Если данные для указанных сессии, символа и дня недели получены, то возвращает true, иначе возвращает false.
MarketBookAdd
Обеспечивает открытие стакана цен по указанному инструменту, а также производит подписку на получение извещений об изменении указанного стакана.
bool MarketBookAdd( string symbol // символ );
Параметры
symbol — [in] Имя символа, чей стакан цен предполагается использовать в данном эксперте или скрипте.
Возвращаемое значение
Значение true в случае успешного открытия, иначе false.
Примечание
Обычно, эта функция должна вызываться из функции OnInit() или в конструкторе класса. Для обработки приходящих извещений в программе эксперта должна присутствовать функция void OnBookEvent(string& symbol).
MarketBookRelease
Обеспечивает закрытие стакана цен по указанному инструменту, а также отменяет подписку на получение извещений об изменении указанного стакана.
bool MarketBookRelease( string symbol // имя символа );
Параметры
symbol — [in] Имя символа.
Возвращаемое значение
Значение true в случае успешного закрытия, иначе false.
Примечание
Обычно эта функция должна вызываться из функции OnDeinit() в том случае, если в функции OnInit() была вызвана соответствующая функция MarketBookAdd(). Либо должна вызываться из деструктора класса, если в конструкторе этого класса вызывается соответствующая функция MarketBookAdd().
MarketBookGet
Возвращает массив структур MqlBookInfo, содержащий записи стакана цен указанного символа.
bool MarketBookGet( string symbol, // символ MqlBookInfo& book[] // ссылка на массив );
Параметры
symbol — [in] Имя символа.
book[] — [out] Ссылка на массив записей стакана цен. Массив может быть заранее распределен для достаточного количества записей. Если динамический массив не был заранее распределен в оперативной памяти, то клиентский терминал сам распределит этот массив.
Возвращаемое значение
Возвращает true в случае успеха, иначе false.
Примечание
Стакан цен должен быть предварительно открыт функцией MarketBookAdd().
Пример:
MqlBookInfo priceArray[]; bool getBook=MarketBookGet(NULL,priceArray); if(getBook) { int size=ArraySize(priceArray); Print("MarketBookInfo по ",Symbol()); for(int i=0;i<size;i++) { Print(i+":",priceArray[i].price +" Volume= "+priceArray[i].volume, " type = ",priceArray[i].type); } } else { Print("Не удалось получить содержимое стакана по символу ",Symbol()); }