Русский

Учебник по MQL4  Торговые операции

Программирование торговых операций


При программировании торговых операций необходимо учитывать требования и ограничения, связанные с характеристиками ордеров и правилами, принятыми в дилинговом центре, а также особенности технологии исполнения торговых приказов. В разделе подробно рассматривается порядок проведения торговых операций и приводится достаточно примеров, поясняющих назначение всех торговых функций, с помощью которых формируются различные торговые приказы. Представлено несколько готовых к использованию скриптов, ориентированных на узкую область применения.

  • Общий порядок проведения торговых операций.
    Трейдер или программа на MQL4 могут только отдавать приказы на совершение торговых операций. Сами же торговые операции регистрируются на торговом сервере. Посредником между торговым сервером и программой является клиентский терминал. Некорректно составленные торговые приказы отклоняются прямо в терминале, поэтому необходимо понимать общий порядок проведения торговых операций.
  • Характеристики ордеров и правила проведения торговых операций.
    Торговые приказы оформляются с помощью ордеров. В ордере необходимо указать множество параметров, одна часть которых определяется текущими ценами и направлением операции, другая часть зависит от инструмента, по которому будет производиться торговая операция. Торговые приказы, поступившие на сервер, проверяются в режиме реального времени на соответствие текущей ситуации и состоянию торгового счета. Поэтому, знание правил проведения торговых операций просто необходимо.
  • Открытие и установка ордеров.
    Наиболее важная торговая функция - OrderSend(). Именно с ее помощью торговому серверу отсылаются приказы на открытие рыночного ордера или постановку отложенного. При этом можно сразу указать требуемые значения StopLoss и TakeProfit. Некоректное значение этих параметров, а также цены открытия и объема ордера, может приводить к получению ошибок. Важно правильно обрабатывать эти ошибки. Функция MarketInfo() позволяет свести количество таких ошибок к минимуму.
  • Закрытие и удаление ордеров. Функция OrderSelect.
    Закрытие рыночных ордеров производится с помощью функции OrderClose(), для удаления отложенных ордеров существует функция OrderDelete(). При отсылке приказа на закрытие или удаление ордера необходимо указать тикет этого ордера. Нужный ордер мы выберем с помощью функции OrderSelect(). Кроме того, если по некоторому финансовому инструменту имеется два встречных ордера, то их можно закрыть одновременно, один за счёт другого, с помощью функции OrderCloseBy(). При исполнении такой торговой операции экономится один спред.
  • Модификация ордеров.
    Уровни TakeProfit и StopLoss можно изменять с помощью торговой функции OrderModify(). Для отложенных ордеров можно также менять уровень открытия ордера. Изменять объем для отложенных ордеров нельзя. Модификация рыночных и отложенных ордеров также налагает определенные требования на корректность этой торговой операции. При любой торговой операции крайне желательна обработка результатов этих операций, обработка ошибок.

Что нового в MQL5

Для проведения торговых операций в языке MQL5 представлены функции по работе с ордерами, сделками и позициями. Ордер – это запрос на совершение покупки или продажи, при исполнении которого совершается сделка, результатом сделки является открытие, изменение или закрытие позиции.

Если вы пишете торговых роботов, обратите внимание на новую функцию OrderSendAsync, предназначенную для проведения асинхронных торговых операций. Эта функция выполняется менее чем за 1 миллисекунду (не ждёт ответа торгового сервера на отправленный запрос) и тут же возвращает управление. Низкие сетевые издержки, высокая скорость обновления стакана и асинхронная отсылка приказов в десятки раз ускоряют торговые операции. Для интрадей систем скорость торговых операций может являться ключевым фактором.