Основные принципы и понятия: ордер, сделка, позиция

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

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

Общая схема обработки торгового запроса
Общая схема обработки торгового запроса

Здесь зелеными стрелками обозначено успешное выполнение торговой операции по мере её продвижения из терминала в рынок, а красными — потенциальный отказ от исполнения.

Аналогичные инстанции проходят и приказы, формируемые MQL-программами. При неблагоприятном исходе MQL5 API позволит нам узнать причину отказа через код ошибки.

Весь этот процесс выражается (и документируется в отчетах) в трех основополагающих терминах: ордер (он же приказ), сделка, позиция.

Ордер — это распоряжение трейдера для брокерской компании купить или продать финансовый инструмент. MetaTrader 5 поддерживает несколько типов ордеров, но в упрощенном виде их можно условно поделить на рыночные, отложенные и специальные защитные уровни Take Profit и Stop Loss.

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

Следует учитывать, что в некоторых условиях результатом исполнения ордера может быть сразу несколько сделок. Например, если в стакане цен нет предложения "товара" в достаточном количестве, то приказ о его покупке может выполняться за счет разных встречных заявок, в том числе и по слегка отличной цене.

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

Более подробную информацию можно получить в руководстве пользователя терминала.

Все ордера, сделки и позиции попадают в торговую историю счета.

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