Обзор работы советника 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: значения тейк-профита и стоп-лосса в пунктах.
Инициализация советника
//+------------------------------------------------------------------+
//| Создание эксперта |
//+------------------------------------------------------------------+
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
представляет собой простой, но эффективный инструмент для торговли на основе пересечения скользящих средних. Он способен автоматически открывать позиции на основе заданных условий и эффективно управляет рисками, используя тейк-профит и стоп-лосс.
Этот советник может быть хорошей отправной точкой для начинающих трейдеров, изучающих автоматическую торговлю, и для более опытных, которые хотят модифицировать и расширить его функционал для своих нужд. Однако, как и любое другое решение, он требует тщательного тестирования на исторических данных и в реальном времени перед использованием в торговле.

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

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

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