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

В процессе разработки торгового алгоритма приходится решать множество технических вопросов, но среди них есть три самых важных, ключевых вопроса:
  1. Что торговать?
  2. Когда торговать?
  3. Как торговать?

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


В этой статье мы рассмотрим каким образом можно реализовать торговые операции в алгоритмической торговле на языке MQL5.

Click image for larger version  Name:	eggs__1.jpg Views:	1 Size:	20.3 KB ID:	3139Что предлагает MQL5 для алготрейдинга?


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


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

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

Торговые операции - это просто!


Существует несколько основных типов торговых операций, которые вам могут понадобиться в торговом роботе:
  1. покупка/продажа по текущей цене,
  2. установка отложенного ордера на покупку/продажу по некоторому условию,
  3. модификация/удаление отложенного ордера,
  4. закрытие/наращивание/сокращение/переворот позиции.

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

В соответствии с правилами вашей торговой системы вы можете совершить покупку или продажу по цене рынка (BUY или SELL), а можете поместить отложенный ордер на совершение покупки/продажи на некотором расстоянии от текущей цены рынка:
  • BUY STOP, SELL STOP - покупка или продажа при пробитии указанного уровня (хуже текущей цены);
  • BUY LIMIT, SELL LIMIT - покупка или продажа при достижении указанного уровня (лучше текущей цены);
  • BUY STOP LIMIT, SELL STOP LIMIT - установка ордера BUY LIMIT или SELL LIMIT при достижении указанной цены.

Типы этих стандартных ордеров соответствуют перечислению ENUM_ORDER_TYPE.

Click image for larger version  Name:	Orders__2.png Views:	1 Size:	23.3 KB ID:	3140


Кроме того, вам может понадобиться модифицировать или вовсе удалить отложенный ордер, это также делается с помощью функций OrderSend()/OrderSendAsync(). Изменение открытой позиций тоже не представляет сложности, так как происходит в результате совершения всё тех же торговых операций.

Если вы до этого представляли себе торговые операции как нечто сложное и запутанное, то теперь самое время изменить своё мнение. Мы покажем не только, как легко и просто программировать покупки и продажи в MQL5, но также подскажем, как работать с торговым счетом и свойствами символов. Торговые классы помогут нам.