Язык программирования MQL5: Продвинутое использование торговой платформы MetaTrader 5
Издание 2-е, исправленное и дополненное
Тимур Машнин
© Тимур Машнин, 2020
ISBN 978-5-4496-8185-0
Создано в интеллектуальной издательской системе Ridero
Исходный код
Исходный код к этой книге можно посмотреть и скачать по адресу https://github.com/novts/MetaTrader-5-Creating-Trading-Robots-and-Indicators-with-MQL5
Введение
Надеюсь, вы все уже прочитали справочник MQL5 на сайте https://www.mql5.com/ru/docs.
Здесь мы не будем пересказывать этот документ, а сосредоточимся на его практическом использовании. Мы будем лишь позволять себе изредка только его цитирование.
Как сказано в предисловии к справочнику:
Для выполнения конкретных задач по автоматизации торговых операций MQL5-программы разделены на четыре специализированных типа.
И далее идет перечисление: Советник, Пользовательский индикатор, Скрипт, Библиотека и Включаемый файл.
Скрипты используются для выполнения одноразовых действий, обрабатывая только событие своего запуска, и поэтому не будут нам здесь интересны.
Также нам не будут интересны библиотеки, так как использование включаемых файлов более предпочтительно для уменьшения накладных расходов.
Поэтому мы сосредоточимся на создании советников и индикаторов с использованием включаемых файлов. Такова наша цель применения языка программирования MQL5, синтаксис которого конечно интересен, но будет нам только в помощь.
На самом деле программирование на языке MQL5 представляет собой яркий пример событийно-ориентированного программирования, так как весь код MQL5-приложения построен на переопределении функций обратного вызова — обработчиков событий клиентского терминала и пользователя.
А уже в коде функций обратного вызова можно использовать либо процедурное программирование, либо объектно-ориентированное программирование. Здесь мы рассмотрим оба этих подхода.
Начало работы
Для начала работы выберем какого-нибудь посредника, чтобы подключиться к его серверу и получать реальные котировки рынка для разработки и тестирования наших MQL5 приложений.
Под посредником мы имеем в виду торгового представителя, юридическое лицо, профессионального участника рынка, имеющего право совершать операции на рынке по поручению клиента и за его счёт или от своего имени и за счёт клиента на основании возмездных договоров с клиентом.
Теперь, что такое рынок?
Существуют разные типы рынков.
Это валютный рынок, это фондовый рынок или рынок ценных бумаг, это товарный рынок, и это рынок фьючерсов и опционов.
Мы с вами сосредоточимся на валютном рынке или рынке форекс.
Что такое рынок форекс?
FOREX — это сокращение от двух слов Foreign Exchange, что означает Валютный Обмен.
В отличие от других рынков, где торговля происходит на биржах, рынок форекс — это внебиржевой рынок межбанковского обмена валюты без какой-либо централизованной площадки.
Участники рынка форекс — это центральные банки, коммерческие банки, инвестиционные банки, брокеры и дилеры, пенсионные фонды, страховые компании, транснациональные корпорации и т. д.
Реально, большая часть сделок по обмену одних валют на другие происходит на ВНЕБИРЖЕВОМ рынке между крупными международными банками с использованием межбанковского информационно-торгового терминала.
И торговля идет на очень большие суммы. Минимальным лотом является сумма в 1 миллион долларов или евро, стандартным — 5 или 10 миллионов долларов.
Такая торговля валютами обеспечивает в первую очередь экспортно-импортные операции клиентов банков, и во вторую, интересы собственных торгово-инвестиционных отделов международных банков.
И совершают банки сделки как на межбанковском внебиржевом рынке, так и на валютных биржах.
Откуда берутся котировки на рынке Форекс?
Если взять, например, фондовый рынок, то там есть специальное учреждение — биржа, где торгуются определённые ценные бумаги (только там и нигде больше), и эта самая биржа и выступает единым центром распространения котировок остальным участникам, в том числе дилинговым центрам.
В случае с Форексом такого центра не существует, рынок не имеет единого места торговли и объединяет всех участников посредством современных средств передачи данных.