Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
MQL5 Программирование: Торговые операции
MQL5 Программирование: Торговые операции
Всем привет! Сегодня мы, наконец, добрались до торговых операций. Сначала познакомимся с терминологией платформы MT5, а затем рассмотрим, как заставить советник торговать.
Давайте начнем с ордеров. Ордеры представляют собой запросы на совершение торговых операций, которые отправляются на торговый сервер и оформляются в соответствии с требованиями платформы MetaTrader 5. Ордера могут быть немедленного исполнения, например, когда нужно купить или продать по текущей рыночной цене определенный объем на определенном финансовом инструменте.
Другим видом ордеров являются отложенные ордера, которые содержат приказ на совершение торговой операции при наступлении определенного условия. Отложенные ордера могут также иметь ограничения по времени действия, то есть дату истечения или экспирации.
Действующие отложенные ордера находятся в ожидании выполнения или отмены и отображаются в терминале на вкладке "Торговля". Мы можем модифицировать или отменить эти ордера с помощью функции "OrderSend", которую мы рассмотрим подробнее. Когда ордер был отменен, истекло время его действия или он был исполнен, он перемещается в историю ордеров, где отображаются исполненные и отмененные ордера.
В MetaTrader 5 также есть понятие "сделок". Сделка представляет собой результат выполнения ордера, то есть фактическое совершение торговой операции. Каждая сделка базируется на конкретном ордере, но один ордер может породить несколько последовательных сделок при частичном исполнении. Сделки всегда находятся в истории торговли и не могут быть модифицированы.
Позиция - это наличие купленных или проданных контрактов по конкретному финансовому инструменту. Длинная позиция (long) возникает в результате покупки в ожидании повышения цены, а короткая позиция (short) возникает в результате продажи актива в расчете на снижение цены. На одном счете по каждому финансовому инструменту может существовать только одна позиция, либо длинная, либо короткая. Объем позиции может увеличиваться в результате новых торговых операций в том же направлении, например, после новой покупки объем длинной позиции увеличится, а после продажи уменьшится. Позиция считается закрытой, если в результате торговой операции объем обязательств становится равным нулю. Такая операция называется закрытием позиции.
Действующие ордера и позиции всегда отображаются на вкладке "Торговля", а сделки и ордера из истории отображаются на вкладке "История".
Теперь давайте разберемся с типами торговых операций. Их всего пять: открытие рыночных позиций, установка отложенных ордеров, модификация стоп-лосса и тейк-профита позиций, модификация параметров отложенного ордера, удаление отложенного ордера. Обратите внимание, что в MetaTrader 5 нет отдельного пункта для закрытия позиции. Вместо этого закрытие позиции производится путем открытия ордера в противоположном направлении с таким же или другим объемом. Полное закрытие позиции происходит, когда ордер имеет такой же объем, частичное закрытие - при меньшем объеме, а переворот позиции - при большем объеме.
Прежде чем приступать к разбору кода открывающей позиции, давайте создадим нового советника по шаблону. Мы будем постепенно дописывать этого советника по мере наших новых уроков.
Так, наш метод готов. Здесь еще не хватает некоторых деталей. Мы рассмотрели только первые 9 причин из 10. Вот все они перечислены, и каждой из них соответствует числовое значение типа integer, от нуля до восьми. Также у нас есть код 9 для режима "Клаус". Это означает, что терминал был закрыт, но когда терминал закрывается, он выводит информацию в консоль, и вы ничего не увидите. Поэтому нет смысла обрабатывать этот код инициализации.
Теперь у нас осталось только вывести причину денеглизации в обработчике. Давайте создадим функцию с именем "get_reason" и напишем код для вывода причины денежной лиризации. Затем добавим еще один print, чтобы вывести причины гейн-птицы.
После вызова нашей функции get_reason, причина деинициализации появится. Давайте скомпилируем код и проверим наш эксперт. Мы его повесим на график, и все будет в порядке. Теперь давайте просто удалим его и посмотрим, что будет выводиться без кода причины деинициализации.
Теперь начнем работать с нашими торговыми функциями. Основной код будем писать в методе "OnTick".
Первое, что мы делаем, это создаем запрос на сервер. Мы инициализируем структуру торгового запроса с помощью функции OrderSend. В этом запросе указываются параметры для торговой операции.
Когда мы отправляем рыночный ордер на покупку, этот ордер обрабатывается для счета, создается соответствующий ордер на покупку, происходит его исполнение, он удаляется из списка открытых ордеров, добавляется в историю ордеров, а также добавляется соответствующая сделка в историю. Все эти действия являются торговыми транзакциями.
Для получения торговых транзакций применяется специальный обработчик OnTradeTransaction. В этот обработчик передается структура MqlTradeTransaction, которая описывает торговые транзакции.
Структуры MqlTradeTransaction и MqlTradeRequest являются параметрами для функции OrderSend. Давайте рассмотрим эти две структуры подробнее.
При анализе текущей торговой операции можно принять решение о состоянии позиции и сделок на торговом счете. Кроме того, нужно иметь в виду, что один торговый запрос, отправленный из терминала на сервер, может породить несколько торговых транзакций. Порядок поступления этих транзакций в терминал не гарантируется.
Структура MqlTradeTransaction заполняется по-разному в зависимости от типа торговой транзакции. Конкретные параметры для каждого случая можно найти в документации по MQL5.
Я написал несколько простых функций, которые просто возвращают текстовое описание транзакции, текстовое описание торгового запроса и текстовое описание результата обработки запроса. Эти три функции будут использоваться в наших обработчиках OnTrade и OnTradeTransaction.
В обработчике OnTradeTransaction мы создаем переменную type типа ENUM_TRADE_TRANSACTION_TYPE и получаем тип транзакции из структуры MqlTradeTransaction. Затем, если тип транзакции равен TRADE_TRANSACTION_REQUEST, мы выводим строку с описанием обработанного запроса и описание результата запроса. Мы также запоминаем номер билета (ticket) ордера для его удаления при следующей обработке.
В обработчике OnTrade мы также модифицировали код. Используя встроенный класс CTrade, мы пытаемся выставить ордер на покупку (BUY_STOP), заполняя цену Ask и объем лота. Если запрос на установку отложенного ордера (BUY_STOP) выполнен успешно, мы получаем результат отправки запроса и выводим соответствующую запись в журнале.
Для удаления отложенного ордера мы также модифицировали код, используя метод OrderDelete класса CTrade. Если запрос на удаление отложенного ордера выполнен успешно, мы получаем результат выполнения запроса и выводим запись в журнале.
Теперь давайте попробуем написать методы для отправки запросов на продажу по рынку, покупку и другие. Мы будем использовать предопределенные переменные, такие как Symbol, и функцию SymbolInfoDouble для получения информации о символе и текущей цене.
В Metatrader 5 также доступен встроенный класс CTrade, который мы импортируем и используем. Мы также добавляем переменную magic в настройки эксперта и отправляем запросы в асинхронном режиме с помощью функции OrderSendAsync.
Использование предопределенных переменных и встроенных функций может значительно упростить и ускорить работу нашего эксперта. Однако, чтобы более полно использовать все возможности MQL5, рекомендуется изучить документацию и ознакомиться со списком доступных функций, констант, структур и перечислений.
MQL5 Программирование: Пишем Простой советник на индикаторе
MQL5 Программирование: Пишем Простой советник на индикаторе
Инструктор представляет модификацию метода обработчика для включения индикатора, отвечающего за генерацию сигналов для открытия или закрытия позиций. Метод обработчика теперь возвращает целочисленный код, где ноль указывает на успешную инициализацию, а единица - на неудачную инициализацию.
Затем инструктор демонстрирует, как обрабатывать неверные входные параметры, такие как период скользящего среднего, равный нулю или меньше. Кроме того, инструктор объясняет использование функции оптимизации amquare, которая возвращает значение True, если советник в настоящее время находится в процессе оптимизации, и False, если он работает в другом режиме. Наконец, инструктор упоминает о других доступных параметрах и демонстрирует использование функции infointeger для получения доступной памяти для советника.
Спикер предлагает добавить дополнительные проверки в код, такие как проверку разрешения использования DLL и уведомление пользователя, если флажок DLL не выбран. Он также упоминает о других возможных проверках для общего интереса и разработки. Затем он объясняет методы рыночной покупки и рыночной продажи, где сбрасывается последняя ошибка, заполняется структура mqlTrade параметрами запроса и добавляется параметр отклонения. Он также модифицирует параметр лота и устанавливает уровни take profit и stop loss после открытия позиции. Он отмечает, что если проверка возвращает false, код отображает сообщение об ошибке.
Спикер говорит о ошибках в программировании на MQL5. Он упоминает, что ошибки времени выполнения можно просмотреть на специальной странице, где они перечислены и классифицированы. Он также обсуждает возможность добавления пользовательских ошибок в список, что может быть сделано с помощью функции "Set User". Добавление пользовательского кода позволяет разработчикам обрабатывать собственные ошибки и предоставлять пользовательские описания для каждой ошибки. Спикер демонстрирует, как обрабатывать ошибки с помощью функции "getlasterr" и сбрасывать ошибку для следующего вызова функции. Он также упоминает возможность объединения похожих функций для оптимизации кода.
Спикер обсуждает модификацию уровней стоп-лосс и тейк-профит для открытых позиций. Он объявляет переменные для запроса и получения результатов, затем выполняет итерацию по всем ордерам для их модификации. Спикер объясняет, как установить параметры для уровней стоп-лосс и тейк-профит и как обрабатывать некорректные настройки. Он также вводит понятие минимального допустимого отклонения в пунктах от текущей цены закрытия. В заключение, спикер упоминает использование магического числа для идентификации конкретных ордеров.
Спикер объясняет необходимость проверки совместимости символа с советником перед продолжением работы. Затем он обсуждает процесс заполнения информации о запросе и вывода деталей измененного ордера. Спикер отмечает, что обрабатывает ошибки и предоставляет информацию о выполненных операциях. Он упоминает, что следующая тема, которую он рассмотрит, - это функция для закрытия всех текущих позиций. Он объясняет, что позиции будут закрыты на основе определенного номера и символа. Спикер объясняет, что закрытие позиции происходит путем создания противоположного ордера и упоминает использование отклонения в качестве настройки. Он обсуждает обработку ошибок и успешный вывод информации о сделке. В целом, модификации стоп-ордеров и тейк-профитов для открытых позиций завершены, и советник готов к применению на рынке.
Спикер объясняет шаги для определения наличия нового бара на графике и совершения торговли только в этом случае. Время текущего бара сохраняется в переменной, и сравнения проводятся с новым временем, чтобы убедиться в наличии нового бара. Если возникает ошибка при копировании значения времени, отображается сообщение об ошибке, и программа завершается. После установки флага для нового бара программа не выполняет никаких действий до появления нового бара. Затем спикер представляет массив для хранения значений индикатора скользящей средней и устанавливает индексацию для массива. Значения индикаторакопируются в массив, и если возникает ошибка, отображается сообщение об ошибке. Прежде чем открыть позицию, программа проверяет наличие уже открытой позиции и соответствие магического числа. Если позиция уже открыта, программа определяет тип позиции. Спикер также вводит еще один массив для хранения нескольких последних баров котировок. Наконец, спикер объясняет, что массив котировок будет использоваться для генерации торговых сигналов.
Далее презентатор обсуждает условия покупки и продажи для простого советника на основе скользящих средних. Для условий покупки советник проверяет, увеличилась ли скользящая средняя предыдущих двух баров, и является ли цена закрытия предыдущего бара выше предыдущей скользящей средней. Для условий продажи проверяется, уменьшилась ли скользящая средняя предыдущего бара и является ли цена закрытия предыдущего бара ниже предыдущей скользящей средней. Когда эти условия выполняются, советник открывает позицию с помощью метода Market Order. Презентатор также предлагает оптимизировать код, выделив его в отдельную функцию. Советник затем тестируется без оптимизации, и наблюдается, что он открывает длинные или короткие позиции при каждом пересечении скользящих средних. Презентатор отмечает, что советник торгует с убытком и объявляет о планируемых модификациях, включая установку уровней стоп-лосс и тейк-профитов.
Спикер обсуждает результаты тестирования советника и отмечает его плохую производительность и убыточность в течение нескольких лет. Однако он заверяет аудиторию в том, что советник работает правильно, открывая позиции, устанавливая стоп-лоссы и тейк-профиты. Он также отмечает, что были добавлены различные проверки в обработчик и проведена работа с различными индикаторами и данными о ценах. Спикер выражает свои планы продолжить работу над методами открытияотложенных ордеров, более глубоко изучить управление ордерами и историей, а также попробовать реализовать трейлинг-стоп.
MQL4 и MQL5 - отличия что нужно знать
MQL4 и MQL5 - отличия что нужно знать
Уважаемые трейдеры,
Сегодня мы проведем вводный урок по MQL5, в котором рассмотрим отличия между MQL4 и MQL5. Для этого нужно быть знакомым с терминалом MetaTrader 5, который постепенно становится основным выбором для большинства форекс-брокеров. В то же время, MetaTrader 4 все еще популярна, особенно на слабых компьютерах и ноутбуках. В принципе, интерфейс программы не претерпел существенных изменений, но есть принципиальные отличия между MetaTrader 4 и MetaTrader 5, которые могут существенно повлиять на торговый процесс.
Одно из главных отличий между этими платформами - автоматические советники и роботы, разработанные для MetaTrader 4, не работают на платформе MT5. Хотя все больше разрабатывается советников и для пятой версии, но использование авторских разработок требует их переделки и, следовательно, дополнительных временных и финансовых затрат.
Другое основное различие между двумя версиями - в тестировании и оптимизации стратегий. MetaTrader 4 для тестирования использует только одно ядро процессора, в то время как MetaTrader 5 полностью использует все ядра многоядерных систем, что делает его более эффективным. Кроме того, MetaTrader 4 не имеет тиковых данных для тестирования, что отрицательно сказывается на качестве тестирования. В то время как MetaTrader 5 использует только тиковые данные как текущие, так и исторические.
MetaTrader 4 также позволяет открывать противоположные позиции по одному торговому инструменту (хеджирование), в то время как в MetaTrader 5 хеджирование отсутствует, хотя некоторые последние версии MetaTrader 5 уже позволяют это делать при наличии поддержки со стороны брокера.
Еще одно отличие - в MetaTrader 4 доступен ограниченный набор временных интервалов (таймфреймов), всего 9, в то время как MetaTrader 5 предлагает значительно больше выбор таймфреймов, включая нестандартные промежутки, такие как M2, M3, H8, H12 и другие, их всего 21 штука. Эти таймфреймы можно настроить по своему усмотрению, выбрав соответствующие опции в контекстном меню.
Касательно тестирования стратегий, поддержка мульти-ядерности в MetaTrader 5 значительно повышает скорость тестирования, что может привести к приросту в 100%, 200% и более, по информации активно использующих тестирование на этой платформе трейдеров. Однако следует отметить, что циклический оптимизатор тестера выполняется последовательно на одном ядре и может занимать значительное время при изменении входных параметров.
В следующей части урока мы более подробно рассмотрим различия и перейдем к тестированию.
Разница между платформами MetaTrader 4 и MetaTrader 5 в целом всегда в пользу последней версии. В MetaTrader 5 произошли изменения в формировании истории котировок, и теперь вся история хранится только в минутных данных (M1). Остальные таймфреймы пересчитываются на основе минутных данных. Поэтому при первом подключении необходимо загрузить историю котировок для выбранной валютной пары, иначе свечи будут некорректно отображаться на различных таймфреймах.
На первый взгляд может показаться, что отличия между версиями платформы не являются чем-то полезным. Однако при грамотном подходе можно выгодно использовать нестандартные временные промежутки. Хотя большинство трейдеров пока не имеет достаточного опыта работы с такими стратегиями, есть несколько человек, которые успешно работают с комбинациями свечей. В MetaTrader 5 доступно гораздо больше временных интервалов для проверок и работы с такими комбинациями, чем в MetaTrader 4. Скрипты, реализующие подобные таймфреймы, работают более стабильно, что является неоспоримым преимуществом пятой версии.
Также в MetaTrader 5 можно использовать нестандартные таймфреймы, такие как M6 (6-минутные свечи) или H6 (6-часовые свечи). Это интересно для стратегий, которые работают на основе комбинаций свечей. В языке программирования MQL5 были внесены существенные улучшения, и теперь он полностью поддерживает современные технологии, такие как многопоточность и объектно-ориентированное программирование. Если вы разработчик, работающий на других языках программирования, рекомендуется переходить на MetaTrader 5, так как это будет ближе к вам по теме ООП.
Другими несущественными, но все же отличиями между платформами можно отметить следующее: в MetaTrader 5 присутствует экономический календарь событий, что устраняет необходимость установки дополнительных новостных индикаторов, и разное количество технических инструментов, графических объектов и типов ордеров для исполнения заявок. Кроме того, в MetaTrader 5 доступно большее количество рынков, включая форекс, CFD, фьючерсы, опционы, акции и облигации.
Вот некоторые технические отличия между MetaTrader 4 и MetaTrader 5, которые облегчают работу трейдера:
Отчеты: В MetaTrader 4 доступны только таблицы для отчетов, в то время как в MetaTrader 5 можно создавать как таблицы, так и графики, что обеспечивает более полное представление данных и анализа.
Встроенный генератор стратегий: В MetaTrader 5 появилась новая функция - мастер MQL5, который позволяет создавать сложные автоматические торговые советники. Мастер MQL5 использует стандартную библиотеку, поставляемую вместе с платформой, и позволяет создавать полностью работоспособные советники без необходимости знания языка программирования MQL5. Мастер MQL5 предоставляет интуитивно понятный процесс выбора готовых блоков и параметров сигналов для создания советника.
Расширенные возможности оптимизации: В MetaTrader 5 предоставляются различные методы оптимизации параметров советников, включая полный перебор параметров. Это позволяет трейдерам проводить более точные тестирования и оптимизации стратегий.
Улучшенная визуализация и отладка: MetaTrader 5 предоставляет расширенные инструменты для визуализации и отладки торговых стратегий, что помогает трейдерам более детально анализировать и проверять свои советники перед их запуском на реальном счете.
Исходя из этих технических отличий, MetaTrader 5 предлагает более широкие возможности для трейдеров, включая более гибкую настройку советников, более полное отображение данных и более точные тестирования и оптимизации стратегий.
MQL5 - работа с ордерами
MQL5 - работа с ордерами
В данном видео рассматривается работа с ордерами в MQL5, а именно в контексте объектно-ориентированного программирования и структурных особенностей языка. Спикер предлагает начать с использования включаемого файла "mqh" и объясняет, что объектно-ориентированное программирование предполагает работу с классами. Он демонстрирует создание класса для открытия и закрытия ордеров, показывая, как написать этот класс в MetaEditor. Также отмечается, что в MQL5 по сравнению с MQL4 появились новые структуры и параметры для открытия ордеров.
Далее обсуждается необходимость задания параметров stop loss и take profit при работе с ордерами в MQL5. Рассказывается о объявлении переменных для работы с этими параметрами и демонстрируется использование конструктора для инициализации позиции и заполнения структуры запроса необходимыми параметрами. Показывается, как использовать поле "action" структуры запроса для установки торговых ордеров.
Рассматриваются различные параметры, которые могут быть установлены для ордера, такие как символ, объем, цена, stop loss, отклонение, тип и время. Объясняется, что некоторые параметры могут быть оставлены пустыми или установлены в ноль в зависимости от желаемого выполнения ордера. Упоминаются также различные типы заполнения ордера и параметры, связанные с временем. В целом, данная часть предоставляет обзор параметров ордеров и их функций в MQL5.
Затем подробно описывается процесс работы с рыночными ордерами. Объясняется, что для определения цены ордера сначала необходимо получить информацию о символе с помощью функции SymbolInfoDouble(). Упоминается необходимость выполнения метода и получения булевых значений для покупки и продажи ордеров. Для открытия позиций на продажу следует использовать значение цены Bid, а для покупки - Ask. Также отмечается важность закрытия позиций и проверки возможности их закрытия с использованием метода is_position_selected. Завершается рассуждение тем, что на рынке одновременно может быть открыта только одна позиция, будь то покупка или продажа, и что позиции на покупку закрываются позициями на продажу.
Далее объясняется процесс открытия и закрытия ордеров в MQL5. Объясняется, что при открытии ордера необходимо указать тип, цену и информацию о символе. Упоминается использование переменных для получения объема и указывается объем для закрытия ордера. Далее демонстрируется закрытие ордеров с использованием предопределенных методов. Также отмечается необходимость обработки ошибок в случае, если позиция не выбрана. В заключение вводятся дополнительные методы, такие как метод установки магического числа.
Ттакже обсуждаются различные функции и переменные, связанные с работой с ордерами в MQL5. Уделяется внимание указанию объема ордера, а также другим параметрам, таким как уровни stop loss и take profit. Рассматривается процесс компиляции кода и решение некоторых возникающих при компиляции ошибок. В целом, видео предоставляет всесторонний обзор работы с ордерами в MQL5 и служит полезным руководством для тех, кто интересуется разработкой торговых алгоритмов.
В заключительной части рассказывается о подключении модуля к советнику MQL5. Описывается необходимость включения класса "mth" и объявления указателя на экземпляр класса Order. Затем создается экземпляр класса Order с использованием ключевого слова new и задаются параметры, такие как тип ордера, stop loss и take profit. Особое внимание уделяется правильному уничтожению созданных объектов с использованием оператора new. Упоминается метод, в котором экземпляр класса Order создается и используется в событии OnTick. Демонстрируется процесс и указывается на пропущенную скобку, вызвавшую ошибку. В конце тестирование советника проводится с помощью тестера стратегий, и вносятся корректировки, чтобы гарантировать правильное выполнение ордеров.
Как написать советник для MetaTrader 5
Как написать советник для MetaTrader 5
Уважаемые друзья, господа трейдеры!
Я приветствую вас, и наши уроки по MQL5 продолжаются. Сегодня мы рассмотрим разработку советника для платформы MQL5. Давайте откроем MetaEditor и создадим шаблон советника. Назовем его "Тест 2".
В этом уроке нам не понадобятся какие-либо специфические события, поэтому мы просто нажимаем кнопку "Далее". Здесь также ничего особенного - это для тестирования. Шаблон готов, но я немного его приведу в порядок.
На предыдущем уроке мы создавали класс для торговли на рынке. Я собирался использовать его сегодня, когда планировал план урока. Однако я передумал и решил, что это будет немного слишком сложно. Я хочу с вами рассмотреть один класс, который уже предустановлен в платформе MQL5 - это класс CTrade.
Давайте подключим этот класс к нашему модулю, к нашему советнику, и немного его рассмотрим. Для этого мы используем директиву include и файл Trade.mqh. Мы можем открыть этот файл, нажав правой кнопкой мыши на этой строке и выбрав пункт меню "Открыть документ Trade.mqh".
Вот, у нас открылся этот файл, и мы можем посмотреть на класс CTrade и то, из чего он состоит. У него есть множество функций, связанных с торговлей и автоматизацией торговли на рынке.
Давайте начнем сегодняшний урок. Тут есть блок protected. Напомню вам, что блок protected означает, что все переменные, методы и функции, объявленные внутри этого блока, доступны только классам, производным от класса CTrade. То есть, если мы напишем класс, который является производным от класса CTrade, мы сможем обращаться к этим методам. Это базовый класс для всех объектов в платформе MQL5.
Далее у нас есть блок public, в котором описаны все методы и переменные, доступные для всех, кто видит определение этого класса. Мы объявим экземпляр этого класса в нашей программе, в нашем советнике, и сможем использовать все эти функции.
Давайте начнем с первого метода, который называется "Buy" (покупка). Он открывает позицию на рынке. Аналогично у класса "CTrade" есть метод "Sell" (продажа), который закрывает позицию. Мы можем использовать экземпляр этого класса для прямой торговли на рынке.
Теперь давайте опишем параметры нашего советника. Введем переменные "лот" (lot), "тейк профит" (takeProfit) и "стоп-лосс" (stopLoss). Для примера создадим скользящего скальпера, где тейк профит будет равен 10 пунктам, а стоп-лосс также будет иметь фиксированное значение в пунктах. Для возможности изменения этих параметров внутри программы объявим две переменные типа "цель" (target).
Итак, поехали. Для начала мы проверим, есть ли у нас открытые позиции. Я сделаю это следующим образом. В блоке кода проверим с помощью функции "PositionSelect" и выберем нашу валютную пару - "symbol". Кстати, давайте также посмотрим на то, что здесь происходит. Вот интересно, если бы это была функция в MT4, то символ был бы без подчеркивания, здесь же просто переменная. Так, символ - это переменная, где хранится имя текущего графика. Функция "Symbol" возвращает строку. Здесь все то же самое, разве что переменная "symbol" не нуждается в скобках для вызова функции. Если позиция не выбрана, то есть у нас нет открытой позиции, то мы будем ее открывать.
Для открытия позиции используем класс "CTrade". Давайте объявим его прямо здесь, назовем его "trader". Помните, в первом уроке я ставил указатель "*", здесь же мы просто создаем экземпляр класса в стеке. Стек - это определенная область памяти в рамках программы. Если при создании указателя мы выделяем память в глобальной области, то здесь, в данном случае, экземпляр класса создается только в стеке. И нет необходимости его создавать и удалять, так как он будет автоматически уничтожен по завершении программы. Я объявил его здесь, и это более чем достаточно. Запомните, здесь звездочка не нужна, мы не будем создавать указатель. Он уже создан и сам уничтожится после завершения работы программы. Я объявил его глобально, то есть в рамках программы, и у меня будет доступ к нему из любой функции. Это важно запомнить.
Итак, мы объявили класс и создали его экземпляр в стеке. Теперь, как мы будем открывать позицию? Я предлагаю в данном уроке просто открыть позицию наугад. Будем открывать случайно покупку или продажу. Создадим переменную "inverter" типа bool, которая будет служить инвертором. Дадим ей начальное значение "true". Если значение "true", то мы будем открывать покупку, если "false", то продажу. Но это просто логика на данном этапе.
Когда мы будем разворачиваться в другую сторону, мы просто будем менять направление. Поехали. Если "inverter", можно написать "if (inverter)", можно ничего здесь не писать и просто оставить "if (inverter)", он и так проверит значение "true". В данном случае наш трейдер, наш экземпляр класса "CTrade", откроет позицию "buy".
Давайте рассмотрим функцию "Buy" более подробно. Какие параметры она принимает? Объем, символ, валютная пара, цена, стоп-лосс, тейк-профит, комментарий. Но заметьте, не все эти параметры обязательны. Рассмотрим саму функцию "Buy" класса "CTrade". Внутри функции объявлен еще один экземпляр класса "CSymbolInfo", также создан в стеке. Можно рассмотреть его, нажав на нем правой кнопкой мыши и перейдя к определению. Откроется файл "SymbolInfo.mqh", где уже рассматривается этот класс.
Функция "Buy" имеет ряд методов, таких как "Ask", "Bid" и т.д. Здесь также есть конструктор, который возвращает описание валютной пары из "SymbolInfo". Здесь все понятно, нам не нужно указывать символ, так как он уже прописан здесь. Если цена равна нулю, то берется цена "Ask" для покупки и "Bid" для продажи. Заметьте, как удобно, практически ничего не нужно писать, кроме объема. Класс не знает, сколько вы хотите купить или продать, какой объем. Но зато он уже знает все остальное. Поэтому я могу здесь упростить все до безобразия и передать ему только объем лота. Мы его назвали "lot". И больше ничего не нужно передавать.
Если inverter=false, то трейдер, пожалуйста, открой позицию "sell". Вот так просто.
На самом деле, в MetaTrader 5 есть некоторые достаточно сложные вещи. Примером такой сложности является работа с индикаторами, которую мы будем рассматривать в следующих уроках.
Итак, если у нас позиция не определена, или точнее, если у нас нет открытой позиции, то если мы сделали покупку или продажу в соответствии с условиями, мы определяем переменную типа "double" и называем ее "points". Эта переменная будет отражать количество пунктов по открытому ордеру. Здесь у нас уже есть открытый ордер, поэтому, когда мы доходим до этого места, мы получаем количество пунктов по этому ордеру.
Далее, мы создаем переменную "currentPrice" типа "double" и получаем цену продажи символа "bid". Затем мы вычитаем цену открытия позиции из цены продажи, чтобы получить разницу в пунктах, пройденных ордером. Важно отметить, что это просто разница в цене, а не количество пунктов. Чтобы получить количество пунктов, мы делим эту разницу на переменную "points".
Затем мы проверяем, если значение "points" больше или равно определенной цели, что означает, что нужно закрыть ордер при достижении прибыли. Для этого мы используем функцию "PositionClose" из класса "Trade". Эта функция позволяет нам закрыть позицию и создать противоположную позицию для переворота. Мы указываем только силу, валютную пару и тип ордера.
Если значение "points" меньше или равно определенному стоп-лоссу, то мы также вызываем функцию "PositionClose" для закрытия позиции и создания противоположной позиции для переворота.
Нужно отметить, что в коде отсутствуют некоторые проверки и условия, такие как проверка типа ордера. Это объясняется тем, что все это уже предварительно определено и прописано в функции "PositionClose".
После выполнения всех проверок и операций, мы сохраняем наш советник и компилируем его. Затем мы можем протестировать его в терминале MetaTrader 5.
Это лишь краткое описание процесса работы советника, и я надеюсь, что вы сможете повторить и разобраться в этом материале.
MQL5: создаем информационную панель
MQL5: создаем информационную панель
Автор предлагает использовать объекты, такие как метки, для создания информационной панели в MQL5, вместо использования команды "Comment". Это позволит создать более привлекательный визуальный вид панели.
Для отображения информации о открытых позициях автор предлагает использовать глобальные переменные. Эти переменные будут содержать данные, такие как номер счета, валютную пару, магический номер, своп, комиссию, цену открытия и текущую цену. Для добавления текущей цены на панель автор инициализирует переменную для хранения текущей цены нулевым значением. Затем он добавляет код для получения текущей цены и обновления переменной при необходимости.
Автор объясняет процесс создания информационной панели с использованием MQL5. Он упоминает о необходимости установки начальных значений и определения типов переменных, связанных с позициями. Затем автор предлагает создать массив для хранения имен свойств объектов и использовать константу для определения значения, которое необходимо изменять в коде. Затем автор перечисляет имена различных свойств позиций, которые будут включены в массив. Это позволит легко обращаться к свойствам и устанавливать их значения при создании информационной панели.
Общая цель заключается в создании информационной панели с привлекательным визуальным видом и отображением нужной информации о открытых позициях. Автор предлагает использовать объекты, такие как метки, и работу с глобальными переменными для достижения этой цели.
Далее рассматривается способ определения наличия открытой позиции с использованием глобальных переменных. Показано использование функции "is open" для проверки наличия позиции. Затем объясняется, как заполнить переменные данными о позиции, такими как символ, тип позиции, цена, стоп-лосс и объем. При этом тип позиции должен быть преобразован в конкретный тип данных. Также обсуждаются ошибки в кодировании и способы их исправления при создании информационной панели с использованием MQL5. Упоминается необходимость исправления ошибок и повторной компиляции кода для улучшения функциональности. Подчеркивается важность объявления переменных с правильным типом данных, таких как целые числа и строки.
Представляется концепция идентификации позиции и необходимость обработки случаев, когда позиции нет. Предлагается создать функцию "clear properties" для сброса переменных в таких случаях.
Для создания информационной панели указываются параметры, такие как координаты и высота панели. Затем задаются координаты фона и заголовка, выбираются размер шрифта и цвет. Точка якоря помещается в верхний правый угол панели, а для каждого столбца указываются соответствующие координаты. Это позволяет создать простую и визуально привлекательную панель, организовав свойства и значения в столбцах.
Объясняется создание информационной панели в MQL5 с использованием массива для хранения предварительно рассчитанных значений, который инициализируется нулями. Затем массив заполняется с координатами по оси Y на основе заданного размера. Для отображения фоновой панели используется функция "show edit", а для задания различных параметров указываются идентификатор графика, идентификатор окна, имя и внешний вид. Наконец, объясняется установка позиции и размера панели с помощью координат X и Y. Затем переходят к заполнению свойств и значений. Рассматривается макет и выравнивание панели, а также упоминается использование массивов для хранения названий свойств и значений. Затем дается инструкция по настройке функции, которая будет отображать панель и устанавливать ее свойства.
В видео демонстрируется создание информационной панели в MQL5 с использованием функций для определения свойств панели, таких как цвет шрифта, размер шрифта, цвет фона и выравнивание текста. Затем объясняется создание меток с использованием функции "show label" и задание параметров, таких как позиция, текст, шрифт и цвет. Также показывается, как настроить позиции меток на панели и установить их свойства. В конце видео дается код для отображения информационной панели и установки ее свойств.
Как написать скрипт для MetaTrader 5
Как написать скрипт для MetaTrader 5
Уважаемые господа трейдеры и друзья, я приветствую вас. Наши уроки по MetaTrader 5 продолжаются, и сегодня мы с вами научимся писать скрипты. В принципе, скрипты, написанные на MQL5, не отличаются от скриптов, написанных для MQL4, но есть некоторые исключения. Особенно отличаются принципы открытия и закрытия позиций. Однако, знание этих принципов будет только в нашу пользу, поэтому давайте рассмотрим их. Написание скриптов в принципе не так сложно. Давайте приступим.
Перейдем в "Editor" и создадим новый документ для нашего скрипта. Я назову его "uni_script" (универсальный скрипт для M5). Он будет универсальным, так как будет выполнять несколько действий. Мы рассмотрим открытие и закрытие позиций, а также удаление лимитных и стоп-ордеров. Думаю, этого будет достаточно, так как такой набор функций необходим каждому трейдеру. Особенно он будет полезен тем, кто работает с системой мартингейла или сеткой ордеров, когда у нас может быть множество ордеров, и их нужно закрыть одним действием. Кроме того, могут быть и отложенные ордера, и каждый ордер закрывать вручную неудобно. Сетка ордеров также доступна на MQL5, если у вас есть счет, который допускает хеджирование.
MQL5 - пишем советник на мартингейле для MetaTrader 5
MQL5 - пишем советник на мартингейле для MetaTrader 5
Видеоурок знакомит с концепцией создания советника по мартингейлу с помощью языка программирования MQL5. Докладчик проводит зрителей через процесс настройки шаблона для советника и объясняет использование таких классов, как «информация о торговой позиции» и «информация о торговом символе» для сбора информации о позициях и символах.
Определены параметры советника, в том числе размер лота и множитель. Спикер предлагает начать с размера лота 0.01 и мультипликатора 2, что означает, что каждая последующая позиция будет в два раза больше предыдущей.
Обсуждаются параметры советника мартингейла, такие как шаг между ордерами и условие закрытия ордеров или сетка. Предлагается переменная с именем «проект» для представления суммы денег, необходимой для закрытия ордера. Спикер также предлагает использовать общее значение прибыли для всех ордеров, так как советники по мартингейлу обычно не имеют ни стоп-лосса, ни тейк-профита.
Представлен стохастический индикатор, а также его параметры, такие как период и метод расчета. Спикер упоминает, что для советника по мартингейлу ценовое поле индикатора может быть установлено как low, так и high.
Устанавливаются уровни для покупки и продажи, а также определяется магическое число для ордеров. Подчеркнута важность проверки соответствия символа желаемой валютной паре. Вводится понятие обновления котировок и пишется функция для него. Цель состоит в том, чтобы оптимизировать и параметризовать советник в соответствии с индивидуальными предпочтениями.
Обсуждается код, который работает с котировками валютных пар и проверяет выполнение определенных условий. Задаются необходимые параметры советника, в том числе магический номер и тип сделки. Глобальные переменные объявляются для использования в последующем коде.
Введены необходимые переменные для создания советника мартингейла на МТ5. К ним относятся индикатор Stochastic, переменная для десятичных разрядов и переменные для цен ордеров, типа позиции и объема. Объясняется настройка параметров для конкретной ситуации, например, определение шага порядка путем умножения точки на количество цифр. Демонстрируется получение указателя на индикатор Стохастик, а также проверка его достоверности. Затем вводится следующая функция, которая включает в себя обновление котировок.
Обсуждается функция подсчета количества позиций. Переменная под названием «счет» инициализируется нулем, и цикл используется для проверки позиций, соответствующих желаемому символу и магическому числу. Введена функция "get_stochastic" для получения значений индикатора Stochastic.
Объясняется объявление переменной "стохастик" как массива с одним значением. Код инициализирует "сброс" ошибки и копирует буфер с помощью функции "CopyBuffer". Значение индикатора "стохастик" возвращается, если копирование прошло успешно, иначе возвращается нулевое значение. Проверяются условия входа в рынок на основе определенных уровней и соответственно открываются ордера на покупку или продажу. Также упоминается процесс добавления позиций, если на рынке уже есть ордер.
Обсуждается использование функции транзакции для сохранения информации об открытых ордерах. Вводится торговая сделка и объясняются условия добавления новой позиции в рынок. Переменные инициализируются для дальнейших проверок, в том числе для сравнения цен и символов по выбранной сделке. Подчеркнута важность фильтрации нежелательных позиций и работы только с нужными. Также упоминается проверка объема ордера и инициализация переменных для дальнейших расчетов.
В коде продемонстрирован процесс получения и хранения данных, проверка символа и типа сделки, установка типа сделки в зависимости от позиции. Включены условия для закрытия сделки и присвоения определенных значений, если сделка была закрыта.
Спикер поясняет, что обработка первой транзакции завершена и необходимые переменные сохранены. Обсуждаются условия следующего входа в рынок, особенно при наличии уже открытой позиции. Проверяется последняя цена, последний тип позиции и последний лот, не равный нулю. Если эти условия соблюдены, рассчитывается следующий объем и открывается новая сделка. Функция объявляется и вызывается, передавая в качестве параметра последний открытый том. Данные нормализуются, объявляется переменная стоп-лосса и производятся дальнейшие расчеты.
Объясняется объявление переменной минимального лота и проверка минимального и максимального значений объема. Рассчитывается следующий объем для сделки, и код подстраивается под ордер на покупку или продажу. Также обсуждается метод закрытия позиций на основе заданного параметра прибыли.
Объяснены остальные функции, необходимые для завершения советника. Объявляется переменная под названием «прибыль», которой присваивается начальное значение 0. Цель состоит в том, чтобы перебрать все позиции определенного типа и рассчитать общую прибыль. Предоставляется код для этой итерации и процесса суммирования. Введена последняя функция «clause_o», которая отвечает за закрытие позиций на основе определенных условий. Код этой функции изменен по сравнению с предыдущими функциями, удалены ненужные строки и добавлен параметр для типа позиции, которую нужно закрыть. После того, как все эти функции реализованы, советник будет готов.
Объясняется процесс написания советника по мартингейлу для МТ5. Написан код для ордера на покупку, включая обработку ошибок для неправильных размеров объема. Также упоминается открытие позиций на продажу и внесение необходимых корректировок в код. В этом разделе приведены пояснения и сведения об ошибках.
Демонстрируется функционал советника по мартингейлу на МТ5. Скрипт компилируется и тестируется в тестере стратегий с заданными параметрами и временным диапазоном. Сетка открывает и закрывает сделки, как и ожидалось, показывая эффективность стратегии мартингейла в получении прибыли. Видимых ошибок в журнале не обнаружено, скрипт рекомендуется в качестве шаблона для будущей разработки советника. Учебник завершается благодарностью зрителей за внимание.
MQL5 - Как написать индикатор для MetaTrader 5
MQL5 - Как написать индикатор для MetaTrader 5
Докладчик начинает с введения в процесс разработки индикатора на MQL5, уделяя особое внимание созданию индикатора гистограммы, который эффективно представляет разницу между двумя скользящими средними. Они подчеркивают важность этого индикатора для анализа рыночных тенденций и принятия торговых решений. Чтобы помочь зрителям в создании индикатора, спикер проведет их через шаги, используя мастер пользовательских индикаторов, который упрощает процесс разработки. Они подчеркивают важность указания основных свойств индикатора, таких как количество буферов, тип графического ряда и используемые цвета, чтобы гарантировать соответствие индикатора желаемым требованиям и визуальной эстетике.
Далее спикер углубляется в построение свойства гистограммы в MQL5 для MT5. Они предлагают использовать разные цвета для улучшения визуального представления гистограммы, предлагая пример использования светло-голубого и желтого цветов. Они объясняют, что гистограмма будет плавно переходить от синего к желтому, подчеркивая важность выбора привлекательных цветов, которые эффективно передают основные данные. Кроме того, спикер коснулся стиля и толщины линий индикатора, а также необходимости указания периода, метода и цены для эффективной работы со скользящими средними. Они также касаются объявления переменных и использования глобальных переменных при работе с такими индикаторами, что обеспечивает эффективное функционирование и интероперабельность кода.
Затем ведущий рассказывает аудитории о различиях между языками MQL4 и MQL5, особенно в плане доступа к индикаторам. В MQL4 доступ к индикатору и получение его значений — простой процесс. Однако в MQL5 для доступа к данным индикатора необходимо сначала создать обработчик. После этого рассказчик переходит к объявлению переменных и их инициализации, подготавливая почву для последующих операций. Для предотвращения конфликтов в процессе оптимизации параметров выполняется проверка, чтобы глобальные переменные не пересекались. Код тщательно написан для сравнения различных типов переменных с использованием встроенных операторов, а диктор объясняет правильную интерпретацию и порядок операторов. Кроме того, они демонстрируют, как можно присваивать значения переменным в зависимости от конкретных условий, повышая гибкость и адаптируемость кода.
Продолжая туториал, спикер углубляется в процесс настройки и настройки буферов для индикатора. Они объявляют четыре отдельных буфера, каждый из которых служит определенной цели, такой как хранение ценовых данных, данных гистограмм, цветов и значений индикаторов. Присваивая индексы каждому буферу, динамик обеспечивает правильную организацию и использование этих важных контейнеров данных. Кроме того, они тщательно устанавливают флаги серии буферов, гарантируя точную обработку и визуализацию данных. Наконец, спикер инициализирует и описывает буферы, обеспечивая всеобъемлющую структуру, которая облегчает хранение и обработку необходимых данных на протяжении всего выполнения индикатора.
В дальнейшем спикер объясняет, как написать индикатор специально для МТ5. Они подчеркивают важность правильной инициализации путем настройки параметров индикатора для обеспечения его надежной и эффективной работы. Докладчик демонстрирует, как посчитать количество баров, которое необходимо обработать индикатору, и проверяет, не падает ли это количество ниже заданного порога. При выполнении условия, указывающего на недостаточное количество баров, индикатор воздерживается от выполнения каких-либо расчетов во избежание получения неточных результатов. Раздел завершается обсуждением расчета переменной «предел» и последующей проверкой того, превышает ли она минимальное значение, чтобы обеспечить правильность процесса расчета.
Далее докладчик обсуждает инициализацию различных буферов и переменных, необходимых для работы индикатора. Они объясняют, как заполнять буферы определенными значениями, такими как нули и назначенные цвета, подготавливая их к приему и отображению соответствующих данных. Кроме того, они упоминают о необходимости подготовки дополнительных данных и объявления переменных для подсчета количества баров, что обеспечивает точность расчетов и обработку данных. Затем спикер подробно объясняет процесс копирования значений в буферы и старательно сравнивает скопированные значения с ожидаемыми, обеспечивая целостность данных на протяжении всего выполнения индикатора. Наконец, они подробно описывают процесс вычислений и описывают, как правильно заполнять буферы, позволяя точно отображать гистограмму и соответствующие ей цвета.
В продолжение урока спикер подробно рассказывает о написании индикатора для МТ5. Они углубляются в процесс заполнения буфера массива, специально предназначенного для отображения гистограммы. Кроме того, они объясняют, как назначать разные цвета столбцам гистограммы в зависимости от конкретных условий, подчеркивая важность эстетики и визуальной привлекательности для создания эффективного и привлекательного индикатора. Спикер предоставляет код процесса и подробно объясняет каждый шаг, обеспечивая четкое понимание основных концепций. Они подчеркивают важность постоянного движения вперед и активной проверки различных условий для поддержания точности и актуальности индикатора. Наконец, спикер компилирует код и демонстрирует, как индикатор можно легко применить к графику, демонстрируя его функциональность и возможности анализа в реальном времени.
В заключение спикер исследует различные настройки и опции, доступные для настройки индикатора в MQL5. Они демонстрируют, как трейдеры могут персонализировать индикатор, настраивая цвета, толщину и стиль гистограммы, адаптируя ее к своим индивидуальным предпочтениям и визуальным предпочтениям. Спикер подчеркивает, что индикатор основан на разнице между двумя скользящими средними, демонстрируя его способность эффективно реагировать на изменения цены и указывая на потенциальные тренды. Они также отмечают, что индикатор можно использовать в стратегиях скальпинга, подчеркивая его универсальность и применимость к различным стилям торговли. В целом, учебник представляет собой всесторонний обзор процесса создания и настройки индикаторов в MQL5, снабжая трейдеров необходимыми знаниями и навыками для разработки уникальных и мощных индикаторов, улучшающих их торговый анализ и процессы принятия решений.
Из MQL4 в MQL5 - как переписать советник под MetaTrader 5
Из MQL4 в MQL5 - как переписать советник под MetaTrader 5
В этом видеоуроке рассматривается процесс конвертации советника MQL4 в MQL5. Докладчик демонстрирует, как копировать и вставлять код из MQL4 в MQL5 и постепенно исправлять ошибки компиляции, внося изменения в параметры и переменные. Они объясняют логику работы советника, в том числе открытие отложенных ордеров, их закрытие при достижении определенной прибыли и пересчет количества отложенных ордеров. Спикер акцентирует внимание на использовании готовых классов из библиотеки MQL5 для упрощения кода. Они также обсуждают различия между MQL4 и MQL5 с точки зрения расчета ордеров и демонстрируют, как правильно переписать код. Учебник содержит пошаговые инструкции и подчеркивает важность поддержания чистого и понятного кода.
Спикер начинает с введения темы переноса советника с MQL4 на MQL5 и упоминает, что в качестве примера будет использовать советник по мартингейлу. Они объясняют, что процесс включает в себя создание шаблона советника на MQL5, а затем копирование и вставку кода из MQL4 в MQL5. Однако они признают, что при попытке скомпилировать код на MQL5 будут ошибки, и уверяют зрителей, что постепенно исправят эти ошибки, внеся изменения в параметры и переменные.
Двигаясь вперед, спикер представляет переменные, которые будут использоваться в коде, и объясняет их назначение. Затем они копируют значения этих переменных в другую переменную с именем «d». Далее объясняется основная логика работы советника, заключающаяся в открытии двух отложенных ордеров на определенном расстоянии от текущей цены, закрытии их при достижении определенной прибыли и пересчете количества отложенных ордеров.
Для упрощения кода и минимизации трудозатрат спикер предлагает использовать готовые классы из библиотеки MQL5, которых будет достаточно для функциональности советника. В них упоминается использование класса cPositionInfo для управления открытыми позициями и класса c3 для работы с символами и ордерами. Также спикер обсуждает инициализацию переменных и использование функции «SetExpertMagic» для установки магического числа. В них упоминаются различные режимы открытия ордеров в зависимости от типа счета и настроек брокера, а также объясняется, как проверить и установить соответствующий тип заполнения.
Затем спикер объясняет, как настроить режим заполнения ордеров, чтобы обеспечить поддержку сделки. Они демонстрируют, как установить режим «наполнение» с помощью класса «торговый центр» и переменной. Они обсуждают настройку проскальзывания и определение количества цифр для платформы. Они также подчеркивают важность поддержания чистого и понятного кода и предоставляют пример того, как код должен выглядеть. Спикер упоминает о необходимости переписать блок кода для пересчета открытых позиций, объяснить синтаксис и внести необходимые коррективы.
Продолжая урок, спикер построчно проходит код, обновляя его для использования новой терминологии и синтаксиса в MQL5. Они объясняют условия и переменные, используемые для проверки позиций, символов и ордеров, обеспечивая правильное выравнивание. Спикер также упоминает о необходимости удалить ненужный код и скомпилировать скрипт для проверки на наличие ошибок. Особое внимание уделяется процессу преобразования кода и обеспечению его правильной работы в MQL5.
Далее спикер обсуждает использование стоп-ордеров на покупку и продажу в MQL4 и MQL5. Они поясняют, что в MQL4 позиции рассчитываются отдельно от ордеров, а в MQL5 и позиции, и ордера рассчитываются вместе. Они также обсуждают расчет уровней стоп-лосса и тейк-профита. Затем спикер объясняет, как переписать код, чтобы правильно рассчитать прибыль по позиции и внести необходимые коррективы. Также обсуждаются использование констант и открытие ордеров на продажу. Основное внимание уделяется различиям между MQL4 и MQL5 с точки зрения расчета ордеров и того, как правильно переписать код.
В продолжение урока спикер объясняет процесс конвертации торгового советника с MQL4 на MQL5. Они демонстрируют, как переписать некоторые строки кода на MQL5, такие как команда отправки ордера, команды остановки покупки и продажи и команда выбора позиции. Они также упоминают, что некоторые функции, такие как проверка ордеров и позиций, больше не нужны в MQL5 из-за наличия предварительно созданных классов. Спикер подчеркивает, что конвертировать код MQL4 в MQL5 относительно легко и что предоставленного кода более чем достаточно для этой цели.
Затем спикер обсуждает переписывание функции стоп-ордера на MQL5. Они упоминают, что им не нужно больше ничего проверять, и переписывают функцию. Они объясняют условия ордера и указывают, что если ордер является ордером на покупку и индекс равен определенному значению, то условия выполняются. Они обсуждают параметры заказа и упоминают, что остальной код будет закомментирован и удален позже. Однако при компиляции они сталкиваются с ошибкой и понимают, что скобка закрыта неправильно. Они устраняют проблему и продолжают компиляцию. Они упоминают, что обещали написать еще одну функцию и сделают это, объявив переменные и написав код.
Далее спикер обсуждает процесс конвертации советника с MQL4 на MQL5. В них упоминаются различные ошибки, которые могут возникнуть при конвертации, и предлагаются способы их исправления. Они также говорят о важности проверки возвращаемого типа функций и внесении некоторых изменений для предотвращения ошибок. После компиляции кода предлагают протестировать его, чтобы убедиться, что результаты аналогичны исходной версии. Они демонстрируют это, тестируя советник на графике и анализируя результаты. Однако, когда они пытаются скомпилировать тот же советник в MetaTrader 5, он не работает, и им нужно исследовать причину проблемы.
В другом разделе спикер рассуждает о необходимости регулярно обновлять котировки в маркете MetaTrader 5. Они продолжают писать новую функцию под названием «частота обновления», которая обновляет котировки, если они не обновляются. Код включает условия, при которых обновление завершается сбоем и возвращает значение false. Спикер также упоминает проверку, установлен ли символ для валютной пары, так как это может быть еще одной причиной сбоя. Цель состоит в том, чтобы обеспечить точное обновление котировок для желаемых валютных пар.
Наконец, спикер обращает внимание на небольшое количество сделок и различия между платформами MQL4 и MQL5. Они отмечают, что, несмотря на сходство между двумя платформами, важно учитывать различия в котировках и торговле. Они объясняют, что успешно перенесли старый торговый советник, написанный на MQL4, на платформу MQL5 с минимальными затратами времени и сил. В заключение спикер поблагодарил зрителей за внимание.