Видеоуроки по программированию на MQL5 - страница 2

 

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. Презентатор также предлагает оптимизировать код, выделив его в отдельную функцию. Советник затем тестируется без оптимизации, и наблюдается, что он открывает длинные или короткие позиции при каждом пересечении скользящих средних. Презентатор отмечает, что советник торгует с убытком и объявляет о планируемых модификациях, включая установку уровней стоп-лосс и тейк-профитов.

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

  • 00:00:00 Преподаватель знакомит с модификацией метода обработчика для включения индикатора для генерации сигналов на открытие или закрытие позиций. Метод обработчика возвращает целочисленный код, где нулевой код указывает на успешную инициализацию, а единичный код указывает на неудачную инициализацию. Затем инструктор демонстрирует, как обрабатывать недопустимые входные параметры, такие как период скользящего среднего, равный или меньший нуля. Кроме того, инструктор объясняет использование функции оптимизации amquare, которая возвращает True, если советник в данный момент оптимизируется, и False, если он работает в другом режиме. Наконец, инструктор упоминает другие доступные параметры и демонстрирует использование функции infointeger для извлечения доступной памяти для советника.

  • 00:05:00 Спикер предлагает добавить в код дополнительные проверки, такие как проверка на право использования DLL и оповещение пользователя, если флажок DLL не установлен. Они также упоминают различные другие проверки, которые могут быть добавлены для общего интереса и развития. Они переходят к объяснению методов рыночной покупки и рыночной продажи, где сбрасывают последнюю ошибку, заполняют структуру mqlTrade параметрами запроса и добавляют параметр отклонения. Также они модифицируют параметр лота и устанавливают тейк-профит и стоп-лосс после открытия позиции. Они упоминают, что код будет отображать сообщение об ошибке, если проверка вернет false.

  • 00:10:00 Спикер рассказывает об ошибках в программировании на MQL5. Они упоминают, что ошибки времени выполнения можно просмотреть на специальной странице, на которой перечислены ошибки и классифицированы их. Также спикер обсуждает возможность добавления в список пользовательских ошибок, что можно сделать с помощью функции «Установить пользователя». Добавляя определяемый пользователем код, разработчики могут обрабатывать свои собственные ошибки и предоставлять индивидуальное описание для каждой ошибки. Докладчик демонстрирует, как обрабатывать ошибки с помощью функции «getlasterr» и сбрасывать ошибку для следующего вызова функции. Также упоминается возможность объединения подобных функций для оптимизации кода.

  • 00:15:00 Спикер обсуждает изменение уровней стоп-лосс и тейк-профит для открытых позиций. Они объявляют переменные для запроса и получения результатов, а затем перебирают все заказы, чтобы изменить их. Спикер объясняет, как установить параметры уровней стоп-лосс и тейк-профит, и как быть с неправильными настройками. Они также вводят понятие минимально допустимого отклонения в пунктах от текущей цены закрытия. В заключение спикер упомянул об использовании магического числа для определения конкретных заказов.

  • 00:20:00 Спикер объясняет, что нужно добавить проверку на совместимость символа с советником, прежде чем двигаться дальше. Затем они обсуждают процесс заполнения информации о запросе и вывода сведений об измененном заказе. Спикер упоминает, что они обрабатывают ошибки и предоставляют информацию о выполненных операциях. Далее они упоминают, что следующей темой для обсуждения является функция закрытия всех текущих позиций. Они объясняют, что будут закрывать позиции на основе определенного числа и символа. Спикер поясняет, что закрытие позиции происходит созданием встречного ордера и упоминает использование отклонения в качестве настройки. Они обсуждают обработку ошибок и успешный вывод торговой информации. В целом доработки стоп-приказов и тейк-профитов для открытых ордеров завершены, и советник готов к рыночному применению.

  • 00:25:00 Спикер объясняет, как определить, есть ли на графике новый бар, и торговать, только если он есть. Время бара сохраняется в переменной, и сравниваются с новым временем, чтобы определить, действительно ли сформировался новый бар. Если есть новый бар, программа регистрирует сообщение и продолжает работу. Если возникает ошибка при копировании значения времени, выводится сообщение об ошибке и программа завершает работу. Как только флаг для нового бара установлен, программа ничего не делает, пока не сформируется новый бар. Затем спикер вводит массив для хранения значений индикатора скользящего среднего и устанавливает индексацию для массива. Значения индикатора копируются в массив, и в случае ошибки выводится сообщение об ошибке. Перед открытием позиции программа проверяет, есть ли уже открытая позиция и совпадает ли магическое число. Если есть, программа определяет тип позиции. Динамик также вводит еще один массив для хранения последних нескольких баров котировок. Наконец, спикер объясняет, что массив котировок будет использоваться для генерации торговых сигналов.

  • 00:30:00 Ведущий обсуждает условия покупки и продажи простого советника на основе скользящих средних. Для условий покупки советник проверяет, увеличилась ли скользящая средняя двух предыдущих баров и выше ли цена закрытия предыдущего бара, чем предыдущая скользящая средняя. Для условий продажи он проверяет, уменьшилась ли предыдущая скользящая средняя и ниже ли цена закрытия предыдущего бара, чем предыдущая скользящая средняя. При выполнении условий советник открывает позицию по методу Market Order. Также ведущий предлагает оптимизировать код, вынеся его в отдельную функцию. Затем советник тестируется без оптимизации и наблюдается, что он открывает длинные или короткие позиции при каждом пересечении скользящих средних. Ведущий упоминает, что советник торгует в убыток и что будут добавлены модификации для включения уровней стоп-лосс и тейк-профит.

  • 00:35:00 Спикер рассказывает о результатах тестирования своего советника и о том, как он плохо себя показал, потеряв деньги за несколько лет. Несмотря на это, отмечают, что советник работает корректно, открывает позиции, выставляет стоп-лоссы, фиксирует прибыль. Также упоминают, что добавили в обработчик различные проверки и работали с разными индикаторами и ценовыми данными. Они планируют продолжить работу над своими методами открытия отложенных ордеров, углубиться в работу с ордерами и историей и даже попробовать реализовать трейлинг-стоп.
 

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, которые облегчают работу трейдера:

  1. Отчеты: В MetaTrader 4 доступны только таблицы для отчетов, в то время как в MetaTrader 5 можно создавать как таблицы, так и графики, что обеспечивает более полное представление данных и анализа.

  2. Встроенный генератор стратегий: В MetaTrader 5 появилась новая функция - мастер MQL5, который позволяет создавать сложные автоматические торговые советники. Мастер MQL5 использует стандартную библиотеку, поставляемую вместе с платформой, и позволяет создавать полностью работоспособные советники без необходимости знания языка программирования MQL5. Мастер MQL5 предоставляет интуитивно понятный процесс выбора готовых блоков и параметров сигналов для создания советника.

  3. Расширенные возможности оптимизации: В MetaTrader 5 предоставляются различные методы оптимизации параметров советников, включая полный перебор параметров. Это позволяет трейдерам проводить более точные тестирования и оптимизации стратегий.

  4. Улучшенная визуализация и отладка: 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, если у вас есть счет, который допускает хеджирование.

  • 00:00:00 Докладчик рассказывает о принципах написания скриптов для MetaTrader 5 (mql5). Они поясняют, что скрипты, написанные на mql5, аналогичны скриптам, написанным на mql4, за некоторыми исключениями. Докладчик акцентирует внимание на принципах открытия и закрытия позиций, а также удаления лимитных и стоп-приказов. Они вводят концепцию универсального скрипта, который выполняет несколько действий, что полезно для трейдеров, использующих системы мартингейла или сетки. Скрипт позволит открывать, закрывать и редактировать ордера, в том числе отложенные ордера. Спикер подчеркивает важность объявления внешних параметров и свойств, чтобы скрипт был легко редактируемым. Они демонстрируют, как объявить переменную для объема открываемой позиции, и обсуждают условия открытия позиции на покупку. Вводят функцию "отправить ордер" для открытия позиций и предлагают написать функцию для открытия позиции на покупку.

  • 00:05:00 Спикер обсуждает процесс объявления и заполнения переменных для скрипта в MetaTrader 5. Предлагают использовать структуру под названием «Келтик» для хранения текущей цены, по которой будет открываться ордер со стоп-лоссом и тейк-профитом. Они также упоминают о необходимости нормализовать переменную цены и предоставляют сообщения об ошибках в случае невозможности получения последней котировки цены. Переменные для стоп-лосса и тейк-профита объявляются как входные данные и получают определенные значения.

  • 00:10:00 Скрипт пишется для MetaTrader 5 и основное внимание уделяется объявлению переменных для расчета стоп-лосса и тейк-профита. Переменным присваиваются начальные значения на основе желаемой прибыли, которая устанавливается равной 50 пунктам. Скрипт также проверяет количество знаков после запятой в ценах брокера и соответствующим образом корректирует переменные. Текущая цена используется для расчета уровней стоп-лосса и тейк-профита, а символ и тип ордера указываются для открытия ордера на покупку.

  • 00:15:00 Спикер обсуждает условия исполнения ордера в MetaTrader 5. При наличии достаточного объема на рынке ордер будет исполнен. Однако, если объема недостаточно, ордер не будет исполнен. Спикер также упоминает понятие проскальзывания и то, как его можно задать в коде. Они поясняют, что функция «OrderSend» возвращает значение, указывающее, успешно ли был проверен заказ, но для получения более подробных результатов нужно смотреть поля структуры. Докладчик демонстрирует, как проверить наличие ошибок и распечатать коды ошибок в журнале. В них особо упоминаются два кода ошибки, 1008 и 1009, которые указывают на то, что размещение заказа прошло успешно.

  • 00:20:00 Спикер обсуждает написание скрипта для MetaTrader 5. Они упоминают, что хотя было бы проще использовать класс CTrade для открытия позиций на рынке, они предпочитают более сложный подход для дополнительной практики. Они также упоминают о добавлении функции для коллег, которые не используют стоп-лосс или тейк-профит, а затем переходят к объяснению того, как написать скрипт для открытия позиций как на покупку, так и на продажу. Также спикер знакомит с понятием стоп-лосс и тейк-профит, объявляя внешнюю переменную и используя класс CTrade для установки стоп-лосса и тейк-профита для открытых позиций. Они предлагают включить торговый модуль и использовать цикл для перебора всех открытых ордеров, установки стоп-лосса и тейк-профита для текущего графика и валютной пары.

  • 00:25:00 Спикер рассказывает о переменных, необходимых для расчета тейк-профита и стоп-лосса по текущей цене. Они вводят цикл for для перебора позиций и используют функцию GetPosition для автоматического выбора позиции. Затем они проверяют, соответствует ли валютная пара ордера текущему графику, и, если соответствует, продолжают работать с ней. Они по-разному рассчитывают тейк-профит и стоп-лосс для ордеров на покупку и продажу и нормализуют значения до необходимого количества знаков после запятой.

  • 00:30:00 Спикер объясняет, как написать скрипт для MetaTrader 5. Обсуждается расчет и модификация уровней стоп-лосс и тейк-профит для ордеров на покупку и продажу. Они также показывают, как инициализировать переменные и обрабатывать ошибки в скрипте. Кроме того, они демонстрируют, как написать функцию для удаления отложенных ордеров на основе заданных пользователем параметров.

  • 00:35:00 Спикер объясняет, как написать скрипт для MetaTrader 5, который будет удалять ордера верхнего лимита, используя цикл для перебора ордеров и функцию "OrderDelete" для их удаления. Этот скрипт удалит только стоп-ордера или лимитные ордера, а позиции, находящиеся в данный момент на рынке, не будут затронуты. Также спикер представляет функцию «OrderTicket» для получения номера тикета заказа и предлагает использовать функцию «OrderSelect» для выбора заказа для дальнейшей обработки. Наконец, в качестве домашнего задания спикер предлагает написать функцию для закрытия позиций на рынке. В целом, этот раздел содержит пошаговое руководство по написанию сценария и завершает видео.
 

MQL5 - пишем советник на мартингейле для MetaTrader 5


MQL5 - пишем советник на мартингейле для MetaTrader 5

Видеоурок знакомит с концепцией создания советника по мартингейлу с помощью языка программирования MQL5. Докладчик проводит зрителей через процесс настройки шаблона для советника и объясняет использование таких классов, как «информация о торговой позиции» и «информация о торговом символе» для сбора информации о позициях и символах.

Определены параметры советника, в том числе размер лота и множитель. Спикер предлагает начать с размера лота 0.01 и мультипликатора 2, что означает, что каждая последующая позиция будет в два раза больше предыдущей.

Обсуждаются параметры советника мартингейла, такие как шаг между ордерами и условие закрытия ордеров или сетка. Предлагается переменная с именем «проект» для представления суммы денег, необходимой для закрытия ордера. Спикер также предлагает использовать общее значение прибыли для всех ордеров, так как советники по мартингейлу обычно не имеют ни стоп-лосса, ни тейк-профита.

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

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

Обсуждается код, который работает с котировками валютных пар и проверяет выполнение определенных условий. Задаются необходимые параметры советника, в том числе магический номер и тип сделки. Глобальные переменные объявляются для использования в последующем коде.

Введены необходимые переменные для создания советника мартингейла на МТ5. К ним относятся индикатор Stochastic, переменная для десятичных разрядов и переменные для цен ордеров, типа позиции и объема. Объясняется настройка параметров для конкретной ситуации, например, определение шага порядка путем умножения точки на количество цифр. Демонстрируется получение указателя на индикатор Стохастик, а также проверка его достоверности. Затем вводится следующая функция, которая включает в себя обновление котировок.

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

Объясняется объявление переменной "стохастик" как массива с одним значением. Код инициализирует "сброс" ошибки и копирует буфер с помощью функции "CopyBuffer". Значение индикатора "стохастик" возвращается, если копирование прошло успешно, иначе возвращается нулевое значение. Проверяются условия входа в рынок на основе определенных уровней и соответственно открываются ордера на покупку или продажу. Также упоминается процесс добавления позиций, если на рынке уже есть ордер.

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

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

Спикер поясняет, что обработка первой транзакции завершена и необходимые переменные сохранены. Обсуждаются условия следующего входа в рынок, особенно при наличии уже открытой позиции. Проверяется последняя цена, последний тип позиции и последний лот, не равный нулю. Если эти условия соблюдены, рассчитывается следующий объем и открывается новая сделка. Функция объявляется и вызывается, передавая в качестве параметра последний открытый том. Данные нормализуются, объявляется переменная стоп-лосса и производятся дальнейшие расчеты.

Объясняется объявление переменной минимального лота и проверка минимального и максимального значений объема. Рассчитывается следующий объем для сделки, и код подстраивается под ордер на покупку или продажу. Также обсуждается метод закрытия позиций на основе заданного параметра прибыли.

Объяснены остальные функции, необходимые для завершения советника. Объявляется переменная под названием «прибыль», которой присваивается начальное значение 0. Цель состоит в том, чтобы перебрать все позиции определенного типа и рассчитать общую прибыль. Предоставляется код для этой итерации и процесса суммирования. Введена последняя функция «clause_o», которая отвечает за закрытие позиций на основе определенных условий. Код этой функции изменен по сравнению с предыдущими функциями, удалены ненужные строки и добавлен параметр для типа позиции, которую нужно закрыть. После того, как все эти функции реализованы, советник будет готов.

Объясняется процесс написания советника по мартингейлу для МТ5. Написан код для ордера на покупку, включая обработку ошибок для неправильных размеров объема. Также упоминается открытие позиций на продажу и внесение необходимых корректировок в код. В этом разделе приведены пояснения и сведения об ошибках.

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

  • 00:00:00 Спикер знакомит с концепцией создания советника по стратегии мартингейла на языке MQL5. Они проводят зрителей через процесс настройки шаблона для советника и объясняют использование классов «информация о торговой позиции» и «информация о торговом символе». Затем спикер переходит к определению параметров советника, таких как размер лота и множитель. Они рекомендуют начинать с размера лота 0,01 и мультипликатора 2, что означает, что каждая последующая позиция будет в два раза больше предыдущей.

  • 00:05:00 Спикер обсуждает параметры советника по мартингейлу. Они объясняют, что шаг между ордерами должен быть определен, и предлагают значение 70. Кроме того, они упоминают необходимость условия для закрытия ордеров или сетевых ордеров и предлагают переменную с именем «проект» для представления суммы денег, необходимой для закрытия ордера. Они также упоминают, что советники по мартингейлу обычно не имеют стоп-лосс или тейк-профит, но предлагают использовать общее значение прибыли для всех ордеров. Затем докладчик представляет стохастический индикатор и его параметры, такие как период и метод расчета. Они упоминают, что ценовое поле индикатора может быть установлено как низкое, так и высокое для советника по мартингейлу.

  • 00:10:00 Спикер обсуждает настройку уровней для покупки и продажи, а также определение магического числа для ордеров. Они также упоминают о важности проверки, соответствует ли символ желаемой валютной паре, прежде чем продолжить. Кроме того, они вводят концепцию обновления кавычек и написания для этого функции. В целом, цель состоит в том, чтобы оптимизировать и параметризовать советник в соответствии с индивидуальными предпочтениями.

  • 00:15:00 Спикер обсуждает код, который работает с котировками валютных пар и проверяет выполнение определенных условий. Они задают необходимые параметры для работы советника, в том числе магический номер и тип сделки. Они также объявляют несколько глобальных переменных, которые будут использоваться на следующих шагах кода. В целом данный раздел посвящен настройке начальных параметров советника по мартингейлу на языке MQL5.

  • 00:20:00 Докладчик знакомит с необходимыми переменными для создания советника по мартингейлу на МТ5. Эти переменные включают индикатор Stochastic, переменную типа double для определения десятичных разрядов и переменные для цен ордеров, типа позиции и объема. Спикер также объясняет, как настроить параметры для конкретной ситуации, например, умножить точку на количество цифр, чтобы определить шаг порядка. Далее спикер демонстрирует, как получить указатель на индикатор Stochastic, передав ему необходимые параметры. Код включает проверку, чтобы убедиться, что указатель индикатора действителен. Наконец, спикер переходит к следующей функции, которая включает в себя обновление цитат.

  • 00:25:00 Докладчик обсуждает функцию подсчета количества позиций. Они инициализируют переменную под названием «счет» нулем, а затем повторяют цикл, чтобы проверить наличие позиций. Если найдена позиция, соответствующая нужному символу и магическому числу, они увеличивают переменную «счет». Они также вводят функцию под названием «get_stochastic» для получения значений индикатора Stochastic.

  • 00:30:00 В видео обсуждается объявление переменной "стохастик" как массива с одним значением. Затем код инициализирует ошибку «сброс» и копирует буфер с помощью функции «CopyBuffer». В случае успеха код возвращает значение индикатора «стохастик». Если есть ошибка, он отображает сообщение и возвращает нулевое значение. В отрывке также упоминается проверка условий входа в рынок на основе определенных уровней и открытие ордеров на покупку или продажу соответственно. Наконец, упоминается следующий шаг добавления позиций, если на рынке уже есть ордер.

  • 00:35:00 Спикер обсуждает использование функции транзакций для сохранения информации об открытых ордерах. Они знакомят с торговой операцией и объясняют, что при добавлении новой позиции в рынок нужно проверять определенные условия. Эти условия включают проверку типа транзакции и инициализацию переменных для дальнейших проверок. Спикер также упоминает о необходимости сравнения цен и символов для выбранной сделки и соответствующей инициализации переменных. Они подчеркивают важность ручной фильтрации нежелательных позиций и работы только с нужными позициями. Наконец, они обсуждают необходимость проверки объема ордера и инициализации переменных для дальнейших расчетов.

  • 00:40:00 На видео демонстрируется процесс получения и хранения данных, а также проверка символа и типа сделки. В коде показано, как установить тип сделки в зависимости от позиции (покупка или продажа) и как присвоить значения переменным. Он также включает условие закрытия сделки и присвоение определенных значений, если сделка была закрыта.

  • 00:45:00 Спикер объясняет, что завершили обработку первой транзакции и сохранили необходимые переменные для дальнейшей работы. Затем они переходят к обсуждению условий следующего входа в рынок, особенно когда уже есть открытая позиция. Проверяют, не равны ли нулю последняя цена и тип последней позиции, а также не равен ли последний лот. Если эти условия соблюдены, они рассчитывают следующий объем и открывают новую сделку. Они объявляют и вызывают функцию, передавая в качестве параметра последний открытый том. Они также нормализуют данные и объявляют переменную стоп-лосс. Наконец, они округляют значение стоп-лосса и выполняют дальнейшие расчеты.

  • 00:50:00 Спикер объясняет, как написать советник по мартингейлу для МТ5. Они объявляют переменную минимального лота и проверяют минимальное и максимальное значения объема. Затем они рассчитывают следующий объем для сделки и проверяют, является ли это ордером на покупку или продажу. Наконец, они обсуждают метод закрытия позиций на основе заданного параметра прибыли.

  • 00:55:00 Спикер рассказывает об остальных функциях, необходимых для комплектации советника. Они начинают с объявления переменной под названием «прибыль» и присвоения ей начального значения 0. Цель состоит в том, чтобы перебрать все позиции определенного типа (покупка или продажа) и рассчитать общую прибыль. Спикер предоставляет код для этой итерации и процесса суммирования. Наконец, они вводят последнюю функцию, «close_o», которая отвечает за закрытие позиций на основе определенных условий. Код этой функции изменен по сравнению с предыдущими функциями, удалены ненужные строки и добавлен параметр для типа позиции, которую нужно закрыть. После того, как все эти функции реализованы, советник будет готов.

  • 01:00:00 Спикер объясняет, как написать советник "мартингейл" для МТ5. Они обсуждают написание кода для заказа на покупку и включают обработку ошибок для неправильных размеров объема. Они также упоминают об открытии позиций на продажу и вносят некоторые коррективы в код. На протяжении всего раздела они дают пояснения и подчеркивают возможные ошибки.

  • 01:05:00 Спикер демонстрирует работу советника по мартингейлу на МТ5. Они компилируют скрипт и тестируют его в тестере стратегий, задавая параметры и временной диапазон. Спикер отмечает, что сетка открывает и закрывает сделки, как и ожидалось, показывая эффективность стратегии мартингейла в получении прибыли. Они также отмечают, что в журнале нет видимых ошибок, и рекомендуют использовать этот скрипт в качестве шаблона для будущей разработки советника. В общем, спикер завершает урок и благодарит зрителей за внимание.
 

MQL5 - Как написать индикатор для MetaTrader 5


MQL5 - Как написать индикатор для MetaTrader 5

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

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

Затем ведущий рассказывает аудитории о различиях между языками MQL4 и MQL5, особенно в плане доступа к индикаторам. В MQL4 доступ к индикатору и получение его значений — простой процесс. Однако в MQL5 для доступа к данным индикатора необходимо сначала создать обработчик. После этого рассказчик переходит к объявлению переменных и их инициализации, подготавливая почву для последующих операций. Для предотвращения конфликтов в процессе оптимизации параметров выполняется проверка, чтобы глобальные переменные не пересекались. Код тщательно написан для сравнения различных типов переменных с использованием встроенных операторов, а диктор объясняет правильную интерпретацию и порядок операторов. Кроме того, они демонстрируют, как можно присваивать значения переменным в зависимости от конкретных условий, повышая гибкость и адаптируемость кода.

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

В дальнейшем спикер объясняет, как написать индикатор специально для МТ5. Они подчеркивают важность правильной инициализации путем настройки параметров индикатора для обеспечения его надежной и эффективной работы. Докладчик демонстрирует, как посчитать количество баров, которое необходимо обработать индикатору, и проверяет, не падает ли это количество ниже заданного порога. При выполнении условия, указывающего на недостаточное количество баров, индикатор воздерживается от выполнения каких-либо расчетов во избежание получения неточных результатов. Раздел завершается обсуждением расчета переменной «предел» и последующей проверкой того, превышает ли она минимальное значение, чтобы обеспечить правильность процесса расчета.

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

В продолжение урока спикер подробно рассказывает о написании индикатора для МТ5. Они углубляются в процесс заполнения буфера массива, специально предназначенного для отображения гистограммы. Кроме того, они объясняют, как назначать разные цвета столбцам гистограммы в зависимости от конкретных условий, подчеркивая важность эстетики и визуальной привлекательности для создания эффективного и привлекательного индикатора. Спикер предоставляет код процесса и подробно объясняет каждый шаг, обеспечивая четкое понимание основных концепций. Они подчеркивают важность постоянного движения вперед и активной проверки различных условий для поддержания точности и актуальности индикатора. Наконец, спикер компилирует код и демонстрирует, как индикатор можно легко применить к графику, демонстрируя его функциональность и возможности анализа в реальном времени.

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

  • 00:00:00 Докладчик знакомит с процессом разработки индикатора на языке MQL5. Они предлагают создать индикатор гистограммы, отражающий разницу между двумя скользящими средними. Докладчик проводит зрителя по этапам создания индикатора с помощью Мастера пользовательских индикаторов, указывая свойства индикатора, такие как количество буферов, тип графического ряда и используемые цвета.

  • 00:05:00 Спикер обсуждает построение свойства гистограммы на MQL5 для МТ5. Они предлагают использовать разные цвета для гистограммы и приводят пример использования голубого и желтого. Они объясняют, что гистограмма будет переходить от синего к желтому, и упоминают о важности выбора привлекательных цветов. Далее спикер упоминает стиль и толщину линий индикатора, а также необходимость указания периода, метода и цены для работы со скользящими средними. Также упоминается объявление переменных и необходимость глобальных переменных для работы с этими индикаторами.

  • 00:10:00 Ведущий объясняет различия между языками MQL4 и MQL5 с точки зрения доступа к индикаторам. В MQL4 вы можете напрямую обращаться к индикатору и получать его значения, тогда как в MQL5 вам нужно сначала создать обработчик индикатора. Затем рассказчик переходит к объявлению переменных и их инициализации. Существует проверка глобальных переменных, чтобы убедиться, что они не пересекаются в процессе оптимизации параметров. Код написан для сравнения разных типов переменных с использованием встроенных операторов, и есть объяснение порядка операторов и их правильной интерпретации. Рассказчик также демонстрирует, как присваивать значения переменным на основе определенных условий.

  • 00:15:00 Спикер обсуждает процесс установки и настройки буферов для индикатора. Они объявляют четыре буфера, каждый из которых предназначен для хранения данных о ценах, данных гистограмм, цветов и значений индикаторов. Затем спикер приступает к присвоению индексов каждому буферу и проверяет правильность установки флагов серии буферов. Наконец, они инициализируют и описывают буферы для индикатора.

  • 00:20:00 Спикер объясняет, как написать индикатор для МТ5. В них упоминается необходимость правильной инициализации индикатора путем настройки его параметров. Также спикер демонстрирует, как рассчитать количество баров, которые необходимо обработать, и проверяет, не меньше ли это число заданного значения. Если да, то индикатор не будет производить никаких расчетов. Раздел завершается обсуждением вычисления переменной limit и проверкой того, больше ли она единицы.

  • 00:25:00 Спикер обсуждает инициализацию различных буферов и переменных для индикатора. Докладчик объясняет, как заполнить буферы определенными значениями, такими как нули и определенные цвета. Они также упоминают о необходимости подготовить некоторые данные и объявить переменные для подсчета количества баров. Затем докладчик объясняет процесс копирования значений в буферы и сравнивает скопированные значения с ожидаемыми значениями. Наконец, они обсуждают процесс вычислений и то, как заполнить буферы для отображения гистограммы и соответствующих ей цветов.

  • 00:30:00 Спикер объясняет, как написать индикатор для МТ5. В них обсуждается процесс заполнения буфера массива для отображения гистограммы, а также способы назначения разных цветов столбцам гистограммы в зависимости от определенных условий. Спикер предоставляет код и подробно объясняет каждый шаг, подчеркивая важность эстетики и визуальной привлекательности при создании индикатора. Они также упоминают о необходимости постоянно двигаться вперед и проверять различные условия. Наконец, они компилируют код и демонстрируют, как индикатор можно применить к графику.

  • 00:35:00 Спикер рассказывает о различных настройках и возможностях настройки индикатора в 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 с минимальными затратами времени и сил. В заключение спикер поблагодарил зрителей за внимание.

  • 00:00:00 Спикер вводит тему переноса советника с MQL4 на MQL5 и упоминает, что в качестве примера будет использоваться советник по мартингейлу. Они начинают с создания шаблона советника на MQL5, а затем переходят к копированию и вставке кода из MQL4 в MQL5. Однако они упоминают, что при попытке скомпилировать код на MQL5 будут ошибки, и поясняют, что будут постепенно исправлять эти ошибки, внося изменения в параметры и переменные. Они демонстрируют это, заменяя «extern» на «input» и внося другие необходимые корректировки.

  • 00:05:00 Докладчик представляет переменные, которые они будут использовать в коде, и объясняет их назначение. Затем они копируют значения этих переменных в другую переменную с именем «d». Далее объясняется основная логика работы советника, заключающаяся в открытии двух отложенных ордеров на определенном расстоянии от текущей цены, закрытии их при достижении определенной прибыли и пересчете количества отложенных ордеров. Спикер предлагает использовать готовые классы из библиотеки MQL5, чтобы упростить код и минимизировать трудоемкость написания. Также упоминается, что этих классов будет достаточно для работы советника.

  • 00:10:00 Спикер объясняет процесс конвертации советника MQL4 в советника MQL5. Они подробно описывают используемые методы и функции, включая объявление переменных и использование указателей. В них упоминается использование класса cPositionInfo для управления открытыми позициями и класса c3 для работы с символами и ордерами. Они также обсуждают инициализацию переменных и использование функции "SetExpertMagic" для установки магического числа. Спикер также рассказывает о различных режимах открытия ордеров в зависимости от типа счета и настроек брокера, а также объясняет, как проверить и установить подходящий тип заполнения.

  • 00:15:00 Спикер объясняет, как настроить режим заполнения ордеров, чтобы сделка поддерживалась. Они показывают, как установить режим «заполнение», используя класс «торговый центр» и переменную. Затем они обсуждают настройку проскальзывания и определяют количество цифр для платформы. Они также упоминают о создании копий определенных переменных для последующей работы с ними. Спикер подчеркивает важность поддержания чистого, понятного кода и приводит пример того, как код должен выглядеть. Наконец, они обсуждают необходимость переписать блок кода для пересчета открытых позиций, объясняя синтаксис и внося необходимые коррективы.

  • 00:20:00 Спикер рассказывает о переписывании торгового советника с MQL4 на MQL5. Они проходят код построчно, обновляя его для использования новой терминологии и синтаксиса MQL5. Они объясняют условия и переменные, используемые для проверки позиций, символов и ордеров, чтобы убедиться, что все выровнено правильно. Спикер также упоминает о необходимости удалить ненужный код и скомпилировать скрипт для проверки на наличие ошибок. В целом, этот раздел посвящен процессу конвертации кода и обеспечению его корректной работы в MQL5.

  • 00:25:00 Спикер обсуждает использование стоп-ордеров на покупку и продажу в MQL4 и MQL5. Они поясняют, что в MQL4 позиции рассчитываются отдельно от ордеров, а в MQL5 и позиции, и ордера рассчитываются вместе. Они также обсуждают расчет уровней стоп-лосса и тейк-профита. Затем спикер объясняет, как переписать код, чтобы правильно рассчитать прибыль по позиции и внести необходимые коррективы. Также обсуждаются использование констант и открытие ордеров на продажу. В целом, в разделе основное внимание уделяется различиям между MQL4 и MQL5 с точки зрения расчета ордеров и тому, как правильно переписать код.

  • 00:30:00 Спикер объясняет процесс конвертации торгового советника с MQL4 на MQL5. Они демонстрируют, как переписать некоторые строки кода на MQL5, такие как команда отправки ордера, команды остановки покупки и продажи и команда выбора позиции. Они также упоминают, что некоторые функции, такие как проверка ордеров и позиций, больше не нужны в MQL5 из-за наличия предварительно созданных классов. В целом спикер подчеркивает, что преобразовать код MQL4 в MQL5 относительно легко и предоставленного кода более чем достаточно для этой цели.

  • 00:35:00 Спикер обсуждает переписывание функции стоп-ордера на MQL5. Они упоминают, что им не нужно больше ничего проверять, и переписывают функцию. Они объясняют условия ордера и указывают, что если ордер является ордером на покупку и индекс равен определенному значению, то условия выполняются. Они обсуждают параметры заказа и упоминают, что остальной код будет закомментирован и удален позже. Однако при компиляции они сталкиваются с ошибкой и понимают, что скобка закрыта неправильно. Они устраняют проблему и продолжают компиляцию. Объясняют, что обещали написать еще одну функцию и сделают это, объявив переменные и написав код.

  • 00:40:00 Спикер рассказывает о процессе конвертации советника с MQL4 на MQL5. В них упоминаются различные ошибки, которые могут возникнуть при конвертации, и предлагаются способы их исправления. Они также говорят о важности проверки возвращаемого типа функций и упоминают о необходимости внесения некоторых изменений для предотвращения ошибок. После компиляции кода предлагают протестировать его, чтобы убедиться, что результаты аналогичны исходной версии. Они демонстрируют это, тестируя советник на графике и анализируя результаты. Однако, когда они пытаются скомпилировать тот же советник в MetaTrader 5, он не работает, и им нужно исследовать причину проблемы.

  • 00:45:00 Спикер рассуждает о необходимости регулярного обновления котировок в маркете Метатрейдер 5. Они продолжают писать новую функцию под названием «частота обновления», которая обновляет котировки, если они не обновляются. Код включает условия, при которых обновление завершается сбоем и возвращает значение false. Спикер также упоминает проверку, установлен ли символ для валютной пары, так как это может быть еще одной причиной сбоя. В целом, цель состоит в том, чтобы обеспечить точное обновление котировок для желаемых валютных пар.

  • 00:50:00 Спикер рассказывает о малом количестве сделок и различиях между платформами MQL4 и MQL5. Они упоминают, что между двумя платформами есть некоторое сходство, но важно помнить о различиях в котировках и торговле. Они объясняют, что успешно перенесли старый торговый советник, написанный на MQL4, на платформу MQL5 с минимальными затратами времени и сил. В заключение спикер поблагодарил зрителей за внимание.