Вы когда-нибудь мечтали автоматизировать свою торговлю? Представьте: пока вы спите, отдыхаете или работаете, ваш торговый робот анализирует рынок и открывает сделки по вашим правилам. Звучит как магия, но на самом деле это доступно даже новичкам! В этой статье я покажу вам, как создать свой первый советник на MQL5 всего за 30 минут – даже если вы никогда раньше не программировали.
Содержание
Почему автоматизация торговли так важна?
Ручная торговля требует постоянного внимания, эмоциональной устойчивости и дисциплины. Торговые роботы же работают 24/7, лишены эмоций и точно следуют вашим правилам. Согласно исследованиям, более 70% успешных трейдеров используют автоматизацию хотя бы частично.
Создание своего первого советника – это не просто технический навык, это первый шаг к финансовой свободе через алгоритмический трейдинг. И да, это проще, чем вы думаете!
Шаг 1. Подготовка среды разработки
Прежде чем писать код, давайте настроим рабочее пространство. Для создания советников в MetaTrader 5 используется встроенная среда разработки MetaEditor.
Что вам понадобится:
- Установленный терминал MetaTrader 5 (скачайте с официального сайта брокера)
- Базовые знания английского языка (интерфейс MetaEditor на английском)
- 30 минут свободного времени
Пошаговая инструкция:
- Откройте MetaTrader 5
- В верхнем меню выберите Tools → MetaQuotes Language Editor (или нажмите F4)
- В открывшемся MetaEditor выберите File → New → Expert Advisor (template) → Next
- Введите имя советника, например, MyFirstEA → Next → Finish
Вы увидите базовый шаблон советника с тремя основными функциями:
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Инициализация при запуске советника
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Действия при остановке советника
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// Основная логика, выполняется при каждом новом тике
} Важно: После завершения кода всегда компилируйте его (клавиша F7 или кнопка Compile). Если компиляция успешна, внизу появится зеленое сообщение «0 error(s), 0 warning(s)».
Шаг 2. Пишем логику: создаем советник на основе Moving Average
Теперь самое интересное – напишем логику нашего первого торгового робота. Для простоты возьмем популярную стратегию на основе скользящей средней (Moving Average).
Стратегия «МА-Пересечение»:
- Открываем BUY, когда цена закрывается выше скользящей средней (20 периодов)
- Открываем SELL, когда цена закрывается ниже скользящей средней
- Торгуем только одной позицией в один момент времени
- Фиксированный объем сделки (0.01 лота)
Полный код советника:
//+------------------------------------------------------------------+
//| MyFirstEA.mq5|
//| Copyright 2023, MetaQuotes Software Corp.|
//| https://www.mql5.com|
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Software Corp."
#property link "https://www.mql5.com"
#property version "1.00"
// Подключаем библиотеку для торговых операций
#include <Trade\Trade.mqh>
// Создаем объект для торговли
CTrade trade;
// Внешние параметры (можно менять в настройках советника)
input int MA_Period = 20; // Период скользящей средней
input double LotSize = 0.01; // Размер лота
input int MagicNumber = 12345; // Уникальный номер для ордеров
// Глобальные переменные
double ma[];
int ma_handle;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
// Индексируем массив от текущего бара к старым
ArraySetAsSeries(ma, true);
// Создаем хендл скользящей средней
ma_handle = iMA(_Symbol, _Period, MA_Period, 0, MODE_SMA, PRICE_CLOSE);
// Проверяем, успешно ли создан хендл
if(ma_handle == INVALID_HANDLE)
{
Print("Ошибка создания хендла скользящей средней");
return(INIT_FAILED);
}
// Устанавливаем точность для объемов
double min_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double max_lot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double lot_step = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
// Проверяем корректность размера лота
if(LotSize < min_lot || LotSize > max_lot)
{
Print("Некорректный размер лота. Минимум: ", min_lot, ", Максимум: ", max_lot);
return(INIT_FAILED);
}
// Устанавливаем магический номер для ордеров
trade.SetExpertMagicNumber(MagicNumber);
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
// Удаляем индикатор при выгрузке советника
if(ma_handle != INVALID_HANDLE)
IndicatorRelease(ma_handle);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
// Проверяем, достаточно ли баров для расчета
if(Bars(_Symbol, _Period) < MA_Period + 1)
return;
// Получаем значение скользящей средней
if(CopyBuffer(ma_handle, 0, 0, 1, ma) < 0)
{
Print("Ошибка получения данных индикатора: ", GetLastError());
return;
}
double current_price = SymbolInfoDouble(_Symbol, SYMBOL_BID);
double ma_value = ma[0];
// Проверяем наличие открытых позиций
bool has_position = false;
ulong ticket = 0;
for(int i = PositionsTotal()-1; i >= 0; i--)
{
ulong pos_ticket = PositionGetTicket(i);
if(pos_ticket > 0 && PositionGetInteger(POSITION_MAGIC) == MagicNumber)
{
has_position = true;
ticket = pos_ticket;
break;
}
}
// Условия для открытия позиций
if(!has_position)
{
// Условие для покупки
if(current_price > ma_value)
{
trade.Buy(LotSize, _Symbol);
Print("Открыта позиция BUY по цене: ", current_price);
return;
}
// Условие для продажи
if(current_price < ma_value)
{
trade.Sell(LotSize, _Symbol);
Print("Открыта позиция SELL по цене: ", current_price);
return;
}
}
// Дополнительная логика для закрытия позиций можно добавить здесь
}
//+------------------------------------------------------------------+ Разбор ключевых частей кода:
#include <Trade\Trade.mqh>– подключаем библиотеку для упрощения торговых операций- Внешние параметры (
input) – позволяют изменять настройки без перекомпиляции кода OnInit()– функция инициализации, где создается индикатор и проверяются параметрыOnTick()– основная функция, вызываемая при каждом новом тике ценыCTrade trade– объект, упрощающий открытие сделок (не нужно вручную заполнять структуры)
Совет: Не забудьте указать свой магический номер (MagicNumber), чтобы отличать ордера вашего советника от других.
Шаг 3. Компиляция и тестирование в стратегия-тестере
Отлично! Код написан. Теперь давайте проверим, как он работает.
Как скомпилировать советник:
- В MetaEditor нажмите F7 или кнопку Compile
- Если все успешно, в папке
MQL5/Expertsпоявится файлMyFirstEA.ex5 - Перезагрузите MetaTrader 5, чтобы советник появился в навигаторе
Тестирование в стратегия-тестере:
- В MetaTrader 5 откройте View → Strategy Tester (или нажмите Ctrl+R)
- Выберите:
- Expert: MyFirstEA
- Symbol: EURUSD (рекомендуется для тестирования)
- Period: H1
- Date: выберите период за последний год
- Model: «Every tick» (самый точный)
- Нажмите Start для запуска теста

После завершения теста вы увидите:
- График с открытыми сделками
- Отчет о прибыли/убытках
- График просадки
- Статистику по сделкам
Важно: Наш простой советник не идеален. Вы увидите как прибыльные, так и убыточные сделки. Это нормально для первого робота! Главное – вы создали рабочий алгоритм самостоятельно.
Шаг 4. Что можно улучшить? Готовые решения для профессиональной торговли
Теперь, когда у вас есть базовый советник, давайте подумаем, как его улучшить. Реальные торговые системы гораздо сложнее нашего примера. Вот что можно добавить и как это реализовать профессионально:
1. Управление рисками: Stop-Loss и Take-Profit
Наш советник не имеет стоп-лосса и тейк-профита. Это опасно! В реальной торговле необходимо контролировать риски.
Готовое решение: Trade Panel для MT5 – торговая панель, которая автоматически выставляет правильные уровни стоп-лосс и тейк-профит в процентах от депозита. Подходит для новичков и профессионалов.
2. Фильтр по тренду и флету
Торговля на скользящих средних часто приводит к убыткам во флете. Нужен фильтр для определения состояния рынка.
Готовое решение: Индикатор TradeZones для MT5 – профессиональный инструмент для точного определения тренда и флета. Стоимость: 9 999 руб., но экономит время и деньги на убыточных сделках.
3. Мультитаймфреймовый анализ
Наш советник анализирует только текущий таймфрейм. Профессиональные системы используют данные со старших ТФ для подтверждения сигналов.
Готовое решение: MTF Parabolic SAR – бесплатный индикатор, показывающий параболик с других таймфреймов. Идеально дополняет нашу стратегию.
4. Самообучение и адаптация к рынку
Рынок постоянно меняется. Статические параметры (как наш период MA=20) становятся неэффективными.
Готовое решение: NeuroPrice Navigator – самообучающийся торговый советник, который адаптирует параметры под текущую рыночную ситуацию. Стоимость: 9 000 руб. Это инвестиция в стабильную прибыль.
5. Копирование сделок между счетами
Хотите тестировать стратегию на демо, а затем автоматически переносить сделки на реальный счет?
Готовое решение: Orders Copier – надежный копировщик сделок для MT4 и MT5. Стоимость: 600 руб. Работает без задержек и пропусков сделок.
💡 Важное преимущество Trading Shop: Все продукты проходят предварительную проверку на исторических данных. Перед покупкой можно протестировать любой робот или индикатор бесплатно!
Заключение: Ваш путь в алготрейдинг только начинается!
Поздравляю! Вы только что создали свой первый торговый советник на MQL5. Это значительное достижение, которое открывает двери в мир алгоритмического трейдинга. Ваши следующие шаги:
- Поэкспериментируйте с параметрами нашего советника (измените период MA, добавьте стоп-лосс)
- Изучите базовые индикаторы MQL5: RSI, MACD, Stochastic
- Оптимизируйте стратегию в тестере для поиска лучших параметров
- Попробуйте готовые решения из Trading Shop для ускорения результатов
Полезные ресурсы для продолжения обучения:
- Бесплатный индикатор InsideBar MT5 – для фильтрации ложных сигналов
- Курс «Нейросети для профессионалов будущего» – 1 650 руб. для перехода на следующий уровень
- Orders Control – бесплатный советник для сопровождения сделок
Помните: Создание прибыльного торгового робота – это марафон, а не спринт. Начните с простого, как мы сегодня, постепенно добавляя сложные элементы или используя проверенные решения от профессионалов.
Вопросы по установке или настройке? Наша поддержка работает 24/7. Напишите в чат на сайте – мы поможем вам с любыми трудностями!
P.P.S. Хотите получать больше прибыли без программирования? Посмотрите лидеры продаж в нашем магазине – там вы найдете готовые решения для любого стиля торговли!