Форекс Обучение

MQL5: Как написать советник на основе индикатора МОФТ

Нажмите кнопку Шаг с заходом или клавишу F11, и посмотрим, что происходит. Нажимая эту кнопку или клавишу F11, пройдите последовательно по точкам останова и понаблюдайте за значениями выражений в окне мониторинга выражений. Если одновременно выполняются все эти условия, подготавливаем запрос на продажу тем же способом, как и в случае покупки. Поэтому, наша стратегия на покупку может быть представлена как одновременное выполнение четырех условий. Если условие выполнено, то соответствующая переменная примет значение TRUE, иначе FALSE. В качестве основного аргумента функции передается наименование символа, наличие позиции по которому следует проверить.

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

Любой советник начинается с того, что программист создаёт пустой шаблон, например, с помощью мастера создания файлов (рисунок 1). Самая сложная часть при создании чего-либо — это придумать, как все должно работать. Для этого создадим минимальный код  — ведь чем сложнее код, тем больше вероятность ошибок и сбоев во время выполнения (RUN TIME). Именно поэтому я постарался сделать код максимально простым, но в то же время старался максимально использовать возможности MetaTrader 5.

написать советник

Как написать индикатор или советник для Forex Tester

Для исполнения данной команды нужно нажать эту кнопку или клавишу F10. Главное отличие в способе вычисления цен Stop Loss и Take Profit. Поскольку производится продажа, используется Bid цена, которая была получена ранее в структуру latest_price. Здесь мы проверяем значение скользящей средней MA-8 на барах 0, 1 и 2. Если значение MA-8 на текущем баре больше, чем на предыдущем (бар 1), и при этом значение MA-8 на баре 1 больше, чем на баре 2, это означает, что скользящая средняя MA-8 возрастает. Для того, чтобы узнать наличие открытой позиции, мы использовали функцию PositionSelect, которая возвращает TRUE в случае наличия открытой позиции по указанному символу и FALSE при отсутствии открытой позиции.

Просьба написать советник на одном индикаторе

Мы закончили установку точек останова, теперь время начать отладку нашего кода. В нашем коде мы собираемся установить точки останова на 5 различных строк кода. Теперь пришло время поместить цену закрытия бара в переменную, которую мы будем использовать для проверки условий торговли. Важно отметить, что функции CopyBuffer() and the CopyRates() возвращают общее количество скопированных данных или -1 в случае ошибки. Вот почему мы проверяем возвращаемые значения, они будут меньше 0 в случае ошибки. Цены (Open, Close, High, Low), время, объем каждого бара, и спред символа хранятся в этой структуре.

Работа с частичными ордерами

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

Мы начнем с объявления статической переменной Old_Time, в которой будем хранить время бара. Мы определили ее статической, поскольку нам нужно, чтобы ее значение сохранялось при новом вызове функции. Также мы объявляем переменную IsNewBar типа boolean, и устанавливаем ее значение в false. Ее значение будет установлено в true только в  случае определения факта появления нового бара. В следующей статье я хочу рассмотреть советник, технически готовый к публикации на Маркете.

MQL4: Пишем советник для торговли Бинарными Опционами

Вместо этого нужно использовать какой-то носитель данных, а способ, которым данные будут отформатированы внутри файла, будет зависеть от того, что мы собираемся делать. Некоторые системы используют ордера на закрытие позиций, то есть после открытия позиции высылается встречный ордер того же объема на закрытие позиции в заданной точке. Без этой функции было бы трудно узнать, какие правильные значения использовать для совершения OCO-ордера (One Cancels the Other, взаимозаменяемы ордер). Далее показана функция, которая является сердцем советника — функция CreateOrderPendent, давайте посмотрим ее. Команда Step Into (Шаг с заходом) переходит к следующему шагу, при этом производится заход внутрь любой вызываемой функции в коде. Для исполнения данной команды, нажмите эту кнопку или клавишу F11.

Конструкция нашего советника

  • Эта структура используется в запросах на проведение торговых операций.
  • Для этого создадим минимальный код  — ведь чем сложнее код, тем больше вероятность ошибок и сбоев во время выполнения (RUN TIME).
  • Обязательной для советника функцией является только OnTick, а OnInit и OnDeinit можно не использовать, если ваш советник простой.
  • Поэтому лучше всего купить не самый высокоприбыльный советник, но зато очень стабильно работающий.
  • Где брать котировки и как их устанавливать вы также, думаю, разберетесь самостоятельно.
  • Доступ к коду ошибки и номеру ордера можно получить, используя поляmresult.retcode и mresult,order соответственно.

Функции инициализации индикаторов (в том числе iMA) возвращают либо хэндл индикатора, либо специальное значение INVALID_HANDLE (неверный хэндл). Благодаря этому мы можем заметить, если что-то пошло не так и обработать ошибку (в нашем случае — вывести сообщение). Если OnInit возвращает INIT_FAILED, советник (или индикатор) не запустится.

Актуальные торговые идеи на 9.09.2025

Вы найдете файл InterfaceUnit – это, собственно, сам интерфейс API, библиотеку технических функций TechnicalFunctions и пример написания советника или индикатора. Как видите, для советников, индикаторов и скриптов используются разные файлы справки, так как интерфейсы для каждого из этих объектов различны. В зависимости от того, что вы собрались писать, вам нужно открыть тот или иной файл. Первым делом я советую вам ознакомиться с разделом «Как создавать индикаторы/скрипты/советники». В нем вы сможете найти общую структуру файла, которая очень похожа на аналогичную для терминала МТ4. Итак, я советую вам выбрать именно C++ за его сходство с mql.

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

  • Ее значение будет установлено в true только в  случае определения факта появления нового бара.
  • Вы найдете файл InterfaceUnit – это, собственно, сам интерфейс API, библиотеку технических функций TechnicalFunctions и пример написания советника или индикатора.
  • Без знания основ и базовых техник не стоит приступать к изучению стратегий, советников и forex индикаторов.
  • И, во-вторых, мы пытаемся проконтролировать, удалось ли отправить данные (и принял ли их сервер) или нет.

Асинхронный режим передачи данных

Массив buffer в параметре функции CopyBuffer, это массив, куда будут помещены данные. В нашем случае это динамические массивы adxVal, plsDI, minDI и maVal. Этот тип переменной является локальной переменной, в отличие от переменных, декларированных в разделе входных параметров нашего кода. В примере 12 я привожу минимальный код советника, использующего класс CiMA. Этот советник просто выводит в комментарии значение скользящей средней на первой свече. Все без исключения изменения в торговле — будь то немедленная покупка или изменение цены Stop Loss — происходят с помощью торговых приказов.

Также можно найти и немало различных плагинов, упрощающих работу с ней. Это очень мощная среда разработки со множеством функций и возможностей под различные языки программирования. Но намного легче было бы установить что-то попроще, особенно если вам не нужно много функционала, а ваша цель – просто написать индикатор для Forex Tester. Поэтому предлагаю вам установить Dev-C++ – простую, легкую в использовании IDE. Курс «Форекс на Автопилоте» научит вас как зарабатывать на валютном рынке с помощью роботов, не тратя собственное время на ручной трейдинг. Нюанс, на который хочу обратить ваше внимание — дуэт функций  ResetLastError и GetLastError в функции инициализации.

Yorum yapın