Обзор работы советника SimpleMA для автоматической торговли на Forex

В этой статье мы постараемся разобрать код советника (торгового робота) на языке программирования MQL4 под названием SimpleMA.mq4. Этот советник основывается на простых скользящих средних (SMA) и предназначен для автоматической торговли на финансовых рынках.

Общая структура и параметры

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

// Параметры индикаторов
input int fastMAPeriod = 10;  // Период быстрой SMA
input int slowMAPeriod = 20;   // Период медленной SMA
input double lotSize = 0.1;    // Объем лота
input double takeProfitPips = 200; // Тейк-профит в пунктах
input double stopLossPips = 400;   // Стоп-лосс в пунктах

В начале файла определяются метаданные и параметры, которые можно настроить через интерфейс MetaTrader. Здесь мы видим:

  • fastMAPeriod: период для быстрой скользящей средней (SMA), установленный по умолчанию на 10.
  • slowMAPeriod: период для медленной скользящей средней, установленный на 20.
  • lotSize: объем сделки, установленный на 0.1.
  • takeProfitPips и stopLossPips: значения тейк-профита и стоп-лосса в пунктах.

Обзор работы советника SimpleMA

Инициализация советника

//+------------------------------------------------------------------+
//| Создание эксперта                                                 |
//+------------------------------------------------------------------+
int OnInit()
{
    return INIT_SUCCEEDED;
}

Функция OnInit() вызывается при запуске советника. В данном случае она просто возвращает статус успешной инициализации. Здесь можно добавить дополнительные настройки, если это потребуется.

Основная логика торговли

//+------------------------------------------------------------------+
//| Основная функция покупки и продажи                                 |
//+------------------------------------------------------------------+
void OnTick()
{
    // Получение значений скользящих средних
    double fastMA = iMA(NULL, 0, fastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
    double slowMA = iMA(NULL, 0, slowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 0);
    double previousFastMA = iMA(NULL, 0, fastMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);
    double previousSlowMA = iMA(NULL, 0, slowMAPeriod, 0, MODE_SMA, PRICE_CLOSE, 1);

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

Условия открытия позиций

Условия для покупки

    // Условия для покупки
    if (previousFastMA < previousSlowMA && fastMA > slowMA)
    {
        // Проверка на открытые позиции
        if (OrdersTotal() == 0) 
        {
            double takeProfitPrice = NormalizeDouble(Ask + takeProfitPips * Point, Digits);
            double stopLossPrice = NormalizeDouble(Ask - stopLossPips * Point, Digits);

            // Открытие позиции на покупку с TP и SL
            int buyTicket = OrderSend(Symbol(), OP_BUY, lotSize, Ask, 2, stopLossPrice, takeProfitPrice, "Buy Order", 0, 0, clrGreen);
            if (buyTicket < 0)
            {
                Print("Ошибка открытия ордера: ", GetLastError());
            }
        }
    }

Если быстрая SMA пересекает медленную SMA снизу вверх (т.е. текущее значение быстрой SMA больше, чем медленная SMA), и если на данный момент нет открытых позиций, то робот открывает позицию на покупку (BUY) с заданным лотом. При этом рассчитываются уровни тейк-профита и стоп-лосса.

Условия для продажи

    // Условия для продажи
    if (previousFastMA > previousSlowMA && fastMA < slowMA)
    {
        // Проверка на открытые позиции
        if (OrdersTotal() == 0) 
        {
            double takeProfitPrice = NormalizeDouble(Bid - takeProfitPips * Point, Digits);
            double stopLossPrice = NormalizeDouble(Bid + stopLossPips * Point, Digits);

            // Открытие позиции на продажу с TP и SL
            int sellTicket = OrderSend(Symbol(), OP_SELL, lotSize, Bid, 2, stopLossPrice, takeProfitPrice, "Sell Order", 0, 0, clrRed);
            if (sellTicket < 0)
            {
                Print("Ошибка открытия ордера: ", GetLastError());
            }
        }
    }
}

Аналогично, если быстрая SMA пересекает медленную SMA сверху вниз, и на текущий момент также нет открытых позиций, то советник открывает позицию на продажу (SELL) с соответствующими уровнями тейк-профита и стоп-лосса.

Заключение

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

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

Обзор работы советника SimpleMA


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