Индикатор MACD: Как он может изменить вашу торговлю на MetaTrader

Разбор исходного кода советника MACD для MetaTrader 4

В данной статье мы подробно рассмотрим исходный код советника, который реализует стратегию торговли на основе индикатора MACD в платформе MetaTrader 4 (MT4). Это поможет вам понять, как работает код, и даст возможность модифицировать его под ваши собственные нужды.

MetaTrader 4 — это популярная платформа для онлайн-трейдинга, которая позволяет пользователям разрабатывать, тестировать и запускать автоматические торговые системы (советники) с использованием языка программирования MQL4. Язык MQL4 позволяет трейдерам автоматизировать свою торговлю, используя различные индикаторы и торговые стратегии.

Структура кода

1. Заголовок и первичные настройки

//+------------------------------------------------------------------+
//|                                         MACD Expert Advisor.mq4  |
//|                               Copyright 2025, forex-robot.store. |
//|                                       https://forex-robot.store/ |
//+------------------------------------------------------------------+
#property strict

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

2. Параметры индикатора и ордеров

// Параметры индикатора MACD
input int MACD_Fast_EMA = 12;     // Период быстрой EMA
input int MACD_Slow_EMA = 26;     // Период медленной EMA
input int MACD_Signal_SMA = 9;    // Период сигнальной линии
// Параметры ордера
input double TakeProfit = 50;      // Тейк-профит в пунктах
input double StopLoss = 50;        // Стоп-лосс в пунктах
input double LotSize = 0.1;        // Размер лота

Здесь определяются первичные параметры для индикатора MACD и ордеров. Эти параметры можно настраивать в интерфейсе советника, что делает его более гибким.

3. Основная функция OnTick()

void OnTick()
{
    // Проверяем, есть ли уже открытые ордера
    if (CheckOpenOrders() > 0) {
        return; // Если есть открытые ордера, выходим из функции
    }
    // Получаем значения MACD
    double macdCurrent, macdSignal, macdPrevious, macdSignalPrevious;
    // Получаем текущие значения MACD
    macdCurrent = iMACD(Symbol(), 0, MACD_Fast_EMA, MACD_Slow_EMA, MACD_Signal_SMA, PRICE_CLOSE, MODE_MAIN, 0);
    macdSignal = iMACD(Symbol(), 0, MACD_Fast_EMA, MACD_Slow_EMA, MACD_Signal_SMA, PRICE_CLOSE, MODE_MAIN, 1);
    macdPrevious = iMACD(Symbol(), 0, MACD_Fast_EMA, MACD_Slow_EMA, MACD_Signal_SMA, PRICE_CLOSE, MODE_MAIN, 1);
    macdSignalPrevious = iMACD(Symbol(), 0, MACD_Fast_EMA, MACD_Slow_EMA, MACD_Signal_SMA, PRICE_CLOSE, MODE_MAIN, 2);
    // Условия для открытия ордеров
    if (macdCurrent > macdSignal && macdPrevious <= macdSignalPrevious) {
        OpenBuy();
    }
    else if (macdCurrent < macdSignal && macdPrevious >= macdSignalPrevious) {
        OpenSell();
    }
}

Функция OnTick() вызывается при каждом изменении цены. В ней происходит:

  • Проверка на наличие открытых ордеров с помощью функции CheckOpenOrders(). Если ордера уже открыты, функция завершает выполнение.
  • Получение текущих и предыдущих значений MACD с использованием функции iMACD().
  • Проверка условий для открытия ордеров: если текущая линия MACD пересекает сигнальную линию снизу вверх, то открывается покупка; если сверху вниз — продажа.

4. Функции открытия ордеров

Открытие ордера на покупку

void OpenBuy()
{
    double price = Ask;
    double sl = price - StopLoss * Point;
    double tp = price + TakeProfit * Point;
    int ticket = OrderSend(Symbol(), OP_BUY, LotSize, price, 3, sl, tp, "Buy Order", 0, 0, clrGreen);
    if (ticket < 0) {
        Print("Ошибка открытия ордера на покупку: ", GetLastError());
    }
}

Функция OpenBuy() выполняет следующие действия:

  • Определяет рыночную цену (Ask) для открытия ордера на покупку.
  • Рассчитывает уровни стоп-лосса и тейк-профита.
  • Отправляет запрос на открытие ордера с помощью функции OrderSend(). Если открытие ордера не удалось, выводится сообщение об ошибке.

Открытие ордера на продажу

void OpenSell()
{
    double price = Bid;
    double sl = price + StopLoss * Point;
    double tp = price - TakeProfit * Point;
    int ticket = OrderSend(Symbol(), OP_SELL, LotSize, price, 3, sl, tp, "Sell Order", 0, 0, clrRed);
    if (ticket < 0) {
        Print("Ошибка открытия ордера на продажу: ", GetLastError());
    }
}

OpenSell() аналогично открывает ордер на продажу, но используется цена Bid. Рассчитываются уровни стоп-лосса и тейк-профита для короткой позиции.

5. Проверка открытых ордеров

int CheckOpenOrders()
{
    int totalOrders = OrdersTotal();
    int count = 0;
    for (int i = 0; i < totalOrders; i++) {
        if (OrderSelect(i, SELECT_BY_POS)) {
            if (OrderType() == OP_BUY || OrderType() == OP_SELL) {
                count++;
            }
        }
    }
    return count;
}

Функция CheckOpenOrders() подсчитывает общее количество открытых ордеров. Она перебирает все ордера и считает только те, которые являются длинными (покупка) и короткими (продажа). Эта информация необходима для контроля над открытыми позициями.

Заключение

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

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


156 10.02.2025
Последние Новости
Что такое виртуальный сервер VPS в трейдинге
Что такое виртуальный сервер VPS в трейдинге

В последние годы виртуальные частные серверы (VPS) стали популярным инструментом среди трейдеров, использующих автоматизированные ..

Общее про форекс
12.02.2025 185
Общий Разбор кода индикатора Trade Assistant
Общий Разбор кода индикатора Trade Assistant

Общий Разбор Этот индикатор, созданный на языке MQL4, предназначен для платформы MetaTrader 4. Он предоставляет торговые рекоменд..

Исходный код
11.02.2025 153
Обзор работы советника MACD Expert Advisor
Обзор работы советника MACD Expert Advisor

Разбор исходного кода советника MACD для MetaTrader 4 В данной статье мы подробно рассмотрим исходный код советника, который реал..

Исходный код
10.02.2025 156
Наш сайт использует cookie. Продолжая им пользоваться, вы соглашаетесь на обработку персональных данных в соответствии с политикой конфиденциальности.