ISTORE2021
Телеграм E-mail

Обзор работы советника 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


553 10.02.2025
Последние Новости
Встречаем розыгрыш от команды Quattro!
Встречаем розыгрыш от команды Quattro!

🥳 Встречаем розыгрыш от команды Quattro! 🥳 😱 Призовой фонд ~250 000 руб. 😱 Сразу 3 крутейших главных приза 🔥🤯: • 1) ..

Новости по роботам
05.02.2026 48
Как работать с тестером стратегий в MT4
Как работать с тестером стратегий в MT4

📢 Тестер стратегий в MetaTrader 4 — это мощный инструмент, который позволяет проверить любую торговую идею на исторических..

Общее про MetaTrader
13.11.2025 596
ИнвайтБот ПРО: Автоматизация во ВКонтакте и Telegram
ИнвайтБот ПРО: Автоматизация во ВКонтакте и Telegram

Превратите рутину в результат с умным роботом-помощником INVITEBOT PRO! В условиях высокой конкуренции в социальн..

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