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


1006 10.02.2025
Последние Новости
Топ советников с функцией разруливания просадки
Топ советников с функцией разруливания просадки

Просадка — естественная часть торговли на Форекс, но именно она часто становится причиной слива депозита. Ручной трейдинг тр..

Новости по роботам
18.03.2026 286
На какие пари ставить робота? Гайд для трейдера
На какие пари ставить робота? Гайд для трейдера

Вы купили мощного робота, но прибыли нет? 🤔 Часто проблема не в советнике, а в том, на какие валютные пары вы его поставили. У каж..

Общее про форекс
11.03.2026 610
Исполнение ордеров на Форекс: тонкости которые нужно знать
Исполнение ордеров на Форекс: тонкости которые нужно знать

Исполнение ордеров на Форекс - тема которая только кажется простой. Многие думают: "Поставил стоп - он сработает как только цена е..

Общее про форекс
07.03.2026 535
Ручная торговля или роботы: кто выигрывает? Сравнение
Ручная торговля или роботы: кто выигрывает? Сравнение

Спор между "старой школой" и "автоматизаторами" не утихает годами. 🤔 Что лучше: сидеть перед монитором, чувствуя каждый пипс, или ..

Общее про форекс
06.03.2026 569
Топ-5 ошибок при использовании советников
Топ-5 ошибок при использовании советников

Купить форекс робота - это только полдела. 🚗💨 Самое интересное начинается, когда вы ставите его на реальный счет. Многие новички, ..

Общее про форекс
03.03.2026 590
Новичкам: простая инструкция по выбору форекс-робота
Новичкам: простая инструкция по выбору форекс-робота

Ищете своего первого торгового робота, но глаза разбегаются от обилия советников? 🧐 Это нормально. Чтобы автоматизация приносила п..

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