Mql4 marketinfo: Информация об инструменте Состояние окружения Константы, перечисления и структуры Справочник MQL4
Contents:
В этой статье мы рассмотрим две функции языка программирования MQL4. Стоимость 1 лота для различных финансовых инструментов, полученная с помощью conditions.mq4. Наличие разнонаправленных ордеров не высвобождает залог. Варианты соотношения стоимости лотов и 1 пункта (валюта депозита- доллар США).
В случае установки отложенного ордера параметр не обрабатывается. Для торговых операций более эффективно использовать полноценный эксперт, а скрипт лучше применять для разовых расчётов и сообщения на экран некоторой полезной информации. Вместе с тем, в случае если трейдер не использует эксперт для автоматической торговли, применение скриптов оказывается более эффективным, чем управление ордерами с помощью панели управления клиентского терминала. Очень важное свойство клиентского терминала состоит в том, что в случае, если во время выполнения прикладной программы возникает ошибка, то клиентский терминал не прекращает исполнение программы. Обычно ошибки возникают по причине несовершенства используемого в прикладной программе алгоритма, а в некоторых случаях – в результате внешних (по отношению к программе) причин.
Устанавливается в соответствии с ограничениями, принятыми для проведения торговых операций (см.Характеристики ордеров, Требования и ограничения торговых операций). Stoploss – заявленная цена закрытия, определяющая предельный уровень убыточности. Slippage – максимально допустимое отклонение заявленной цены открытия ордера от рыночной цены для рыночных ордеров (пунктов).
В данном случае меньшая суммарная стоимость однонаправленных рыночных ордеров составляет 700.00, поэтому свободные средства увеличиваются на 700.00, а залог составляет разницу между суммарными стоимостями разнонаправленных ордеров (рис. 86). Если же попытка открыть ордер не увенчалась успехом, то управление передаётся в блок 8-9 для анализа ошибок. Здесь рассматривается 2 вида ошибок – те, которые позволяют ещё надеяться на успешное открытие и те, появление которых однозначно указывает на необходимость прекратить исполнение программы.
Ошибка 130. Неправильные стопы
На первый взгляд может показаться, что функция OrderSend() слишком сложна для понимания. В действительности, все рассматриваемые параметры достаточно просты, необходимы и полезно используются в торговле. Для того чтобы в этом убедиться, рассмотрим наиболее простой вариант использования торговой функции OrderSend() для открытия рыночного ордера. В связи с использованием торговых функций необходимо обратить внимание на ограничения более общего характера.
0 – в пунктах; 1 – в базовой валюте инструмента; 2 – в процентах; 3 – в валюте залоговых средств.MODE_PROFITCALCMODE 27 Способ расчета прибыли. 0 – Forex; 1 – CFD; 2 – FuturesMODE_MARGINCALCMODE 28 Способ расчета залоговых средств. Если цена исполнения находится в пределах, определяемых уровнем заморозки, то ордер не может быть модифицирован, отменен или закрыт. Нетрудно увидеть, что в скрипте openbuystop.mq4 отсутствует проверка достаточности свободных средств для открытия ордера, но появилась проверка значения цены открытия ордера (блок 3-4). Если вычисленное значение переменной Price не удовлетворяет требованиям установки отложенного Stop ордера (см. Характеристики ордеров, Требования и ограничения торговых операций), то производится перерасчёт этого значения.
Аналогичное изменение кода следует выполнить в блоке 5-6 и для другого стоп-приказа. В результате вычислений в теле оператора if () переменная Dist_SL может получить новое значение. Предположим, что обычно минимальная дистанция составляет 5 пунктов. Предположим, что при первом исполнении (на быстром рынке) это значение установлено на сервере равным 20 пунктов.
Выставление отложенных ордеров
Визуально он представляет собой таблицу лимитных заявок на покупку и продажу торгуемых активов. Формат одинаков для валютных пар, акций, металлов, фьючерсов. Возвращает различную информацию о финансовых инструментах, перечисленных в окне “Обзор рынка”. Мы в команду Comment() вставляем MarketInfo(), и в скобочках этой функции прописываем тот инструмент, по которому хотим видеть информацию. В ней нам не нужно вводить никаких дополнительных параметров.
Возможно выставить отложенный ордер, многократно превышающий по стоимости имеющиеся на счёте средства. Такой ордер может находиться в торговле неопределённо долгое время. В момент, когда рыночная цена достигнет уровня заявленной в отложенном ордере цены открытия, на сервере будет произведена проверка. Если в этот момент средств на счёте достаточно для открытия, то ордер будет преобразован в рыночный (открыт), если же нет – то он будет удалён.
Идентификаторы функции MarketInfo()
Последний расhttps://broker-obzor.com/отренный скрипт не производит анализ ошибок, поэтому пользователь остаётся в неведении относительно результатов исполнения функции открытия ордера. В простом варианте использования функции GetLastError() можно проанализировать ошибку и просто сообщить о ней пользователю. Если скрипт confined.mq4 запустить на исполнение в окне Eur/Usd, то возникнет ошибка. Если ордер открыт на сервере, то переменной ticket будет присвоен номер открытого ордера. В этом случае скрипт выполнил своё предназначение и далее работу программы необходимо прекратить. В блоке 7-8 используется оператор break для выхода из цикла while().
Новые https://profinance.broker-obzor.com/ позволяют писать стратегии на основе объема сделок и потока заявок, создавать собственный стакан цен для ручной торговли, проводить автоматический анализ в режиме реального времени.
В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Но, на прямую прописывать этот валютный инструмент мы не будем, а сделаем возможность вводить наименование валютной пары во входящих значениях советника. Функция MarketInfo() будет искать максимальную дневную цену на паре Евро/Доллар, которую мы прописали сами. Но, мы может не прописывать валютную пару, а вместо нее поставить Symbol(). Тогда Symbol() проанализирует наш график и ту валютную пару, которая отображается на данном графике, после чего сама подставит наименование этого валютного инструмента. Она просто возвращает наименование того валютного инструмента, на котором у нас стоит график.
- Обратить внимание следует лишь на тот факт, что проверка достаточности средств (необходимых для преобразования отложенного ордера в рыночный) для отложенных ордеров не производится ни клиентским терминалом, ни сервером и никак не ограничена.
- Может использоваться как определяемый пользователем идентификатор ордера.
- Функция возвращает номер тикета (ticket – уникальный порядковый номер ордера), который назначен ордеру торговым сервером или -1 в случае, если торговый приказ был отклонён севером или клиентским терминалом.
- По замыслу, скрипт должен открыть ордер в окне Gbp/Usd.
- Одновременно с торговым приказом функция передала клиентскому терминалу управление и, таким образом, исполнение программы приостановилось.
Переменной Error присваивается код последней ошибки, в данном случае той ошибки, которая была возвращена сервером или клиентским терминалом при исполнении торговой функции OrderSend(). Существуют и другие ограничения, связанные с определением значений параметров функции открытия ордера OrderSend(). Это – максимальный и минимальный шаг изменения стоимости ордера, максимальный и минимальный размер стоимости ордера и пр. Использование функции MarketInfo() позволяет получить различную информацию по финансовым инструментам, которые отражены в окне “Обзор рынка” клиентского терминала.
Код ошибки, полученный при исполнении скрипта confined.mq4 в окне Eur/Usd. Существует несколько режимов торговли по финансовым инструментам. Информация о режимах торговли по конкретному инструменту отображена в значениях перечисления ENUM_SYMBOL_TRADE_MODE. Минимально допустимый уровень стоп-лосса/тейк-профита в пунктах. Мы рассмотрели достаточно простые функции в MQL4, но они очень важны в программировании. Теперь выведем несколько значений из функции MarketInfo().
Разумные ограничения
Функция возвращает номер тикета (ticket – уникальный порядковый номер ордера), который назначен ордеру торговым сервером или -1 в случае, если торговый приказ был отклонён севером или клиентским терминалом. Для получения информации о причине отклонения торгового приказа необходимо использовать функцию GetLastError() (в дальнейшем изложении мы рассмотрим несколько наиболее распространённых ошибок). Открытие любых рыночных ордеров не высвобождает залоговые средства и не увеличивает сумму свободных средств.
Если при исполнении программы возникает ошибка, то программа продолжает работу, а клиентский терминал генерирует значение кода ошибки, которое доступно программе при использовании функции GetLastError. Торговый терминал получил информацию о том, что последний торговый приказ исполнен, отразил это событие в окне терминала и в окне финансового инструмента и вернул управление программе. Если запустить этот скрипт на исполнение, то в подавляющем большинстве случаев он будет работать. Скрипт состоит из одной специальной функции, содержащей функцию открытия ордера OrderSend() и оператор return. Опишем порядок исполнения программных строк и связанных с этим событий. Начальная (инициирующая) маржа обозначает размер необходимых залоговых средств в маржинальной валюте для открытия ордера объемом в один лот.
Для отложенных ордеров количество лотов не ограничено. Отдельно нужно заметить, что в данном примере намеренно не рассматриваются все без исключения ошибки. В данном случае мы не ставим перед собой цель предоставить в распоряжение пользователя готовую программу. Очень важно, чтобы программист сам проанализировал другие варианты ошибок и самостоятельно принял решение о том, какие ещё ошибки и как необходимо обработать в программе. В то же время, некоторые ошибки не должны обрабатываться, потому что сама программа построена таким образом, что не предполагает возможности для возникновения некоторых ошибок, например, в данном случае – для ошибок 129 и 130.
Сервер получил торговый приказ, произвёл его проверку, не обнаружил некорректных параметров и принял решение исполнить торговый приказ. (обратите внимание, здесь и далее для справки представляется заголовок функции, а не пример использования вызова функции в программе). Для получения информации на бирже добавлены функции по работе со стаканом цен. Термин произошел от английского DOM – Depth of Market.