Нефтяные фьючерсы WTI и Brent сочетают высокую ликвидность с волатильностью, управляемой регулярными фундаментальными отчётами. Это делает сырьевой рынок естественной средой для автоматических стратегий — но только при условии, что советник учитывает особенности каждого сорта и специфические риски фьючерсной торговли. В статье разберём, какие стратегии и индикаторы работают для WTI и Brent и на что обратить внимание при настройке робота.
Почему нефть привлекает алготрейдеров
Нефтяные фьючерсы WTI и Brent торгуются на крупнейших биржевых площадках — CME (NYMEX) и ICE. Эти контракты отличаются высокой ликвидностью и регулярной волатильностью: ликвидность позволяет входить и выходить из позиций без экстремального проскальзывания, а ценовое движение даёт материал для анализа по заданным правилам. Для торгового советника это означает достаточный объём для исполнения заявок и широкие ценовые колебания, на которых можно строить стратегию.
Вторая особенность нефтяного рынка — фундаментальные якоря: еженедельные отчёты Управления энергетической информации США (EIA) по запасам, заседания ОПЕК+, данные по спреду между сортами Brent и WTI. Каждое из этих событий происходит по расписанию и способно вызвать направленное движение цены, что даёт предсказуемые ориентиры для настройки советника.
Чем WTI и Brent отличаются для советника
Для советника разница между WTI и Brent — не просто биржевой тикер, а разная рыночная среда. WTI, торгуемый на NYMEX (CME), в большей степени связан с данными по запасам в Кушинге и отчётами EIA. Brent на ICE, напротив, чувствителен к глобальным потокам и геополитическим решениям. Эти различия означают, что новостные фильтры и календари событий для каждого сорта должны учитывать свою специфику.
Новостной календарь для WTI может включать даты публикаций EIA и отчёты по трубопроводам Cushing, а для Brent — отслеживать решения ОПЕК+ и данные по морским отгрузкам.
Спред Brent–WTI — разница цен двух сортов. Его отклонение от исторического среднего можно измерить Z-score. Возврат к среднему — гипотеза стратегии, а не гарантированный исход:
// MQL4: сигнал по отклонению спреда
// Цены и статистику спреда нужно рассчитать для синхронных контрактов.
int SpreadSignal(double brentPrice, double wtiPrice, double spreadAvg, double spreadStd)
{
if (spreadStd <= 0.0) return -1; // Нет корректной оценки разброса.
double spread = brentPrice - wtiPrice;
double zScore = (spread - spreadAvg) / spreadStd;
if (MathAbs(zScore) <= 2.0) return -1; // Сигнала нет.
// Возврат к среднему: при положительном отклонении продаём спред,
// при отрицательном — покупаем. Это не гарантирует схождение цен.
return (zScore > 0.0) ? OP_SELL : OP_BUY;
}
Функция принимает синхронные цены Brent и WTI, среднее и стандартное отклонение спреда. Она возвращает OP_BUY или OP_SELL для условного сигнала, а -1 — если сигнал отсутствует или статистика некорректна. Это только расчёт сигнала: проверку корреляции контрактов, комиссий, маржи и исполнения нужно выполнять отдельно.

Подходящие стратегии и индикаторы
Для нефтяных инструментов можно тестировать трендовые стратегии на основе momentum. Скользящие средние помогают задать правило фильтрации, но сами по себе не подтверждают устойчивость тренда и не гарантируют результат.
Фильтр направления строится на двух скользящих средних: быстрая 50-периодная EMA отслеживает текущую динамику, медленная 200-периодная EMA задаёт базовый тренд. Пока быстрая линия выше медленной — тренд восходящий, и наоборот. Стоп-лосс привязывается к ATR (Average True Range), чтобы размер стопа автоматически расширялся в периоды высокой волатильности и сужался в спокойные окна. Период удержания позиции — от нескольких дней до недель, чтобы не реагировать на случайные колебания.
Для спредовых стратегий Brent–WTI набор индикаторов другой: вместо EMA используется Z-score расхождения между сортами. Когда текущий спред отклоняется от исторического среднего более чем на две сигмы, советник получает сигнал на схождение.
// MQL4: трендовый фильтр и оценка стоп-дистанции
double fastEMA = iMA(Symbol(), Period(), 50, 0, MODE_EMA, PRICE_CLOSE, 0);
double slowEMA = iMA(Symbol(), Period(), 200, 0, MODE_EMA, PRICE_CLOSE, 0);
double atr = iATR(Symbol(), Period(), 14, 0);
bool trendUp = (fastEMA > slowEMA);
double stopDistance = atr * 1.5; // Цена, не пункты; коэффициент условный.
Это синтаксис MQL4: iMA и iATR принимают таймфрейм, период индикатора и shift последним параметром. ATR возвращается в единицах цены; перевод в пункты и проверку допустимого стоп-уровня брокера нужно делать отдельно. Периоды и коэффициент приведены только как пример.
Главные риски автоматизации сырьевой торговли
Один из ключевых рисков при автоматизации торговли сырьевыми фьючерсами — roll-перенос между контрактами. Фьючерсы имеют ограниченный срок жизни: при экспирации текущей серии позиция должна быть перенесена на следующий контракт. Стоимость этого переноса и gap-разрывы между сериями — причина, по которой backtest на истории может показывать прибыль, а реальная торговля — убыток. Советник, не учитывающий roll, рискует завысить результаты тестов.
Вторая группа рисков — новостные всплески вокруг макроэкономических публикаций и решений профильных организаций. В такие окна рыночные условия могут резко меняться, а проскальзывание при исполнении сделок способно перечеркнуть накопленную прибыль. Робот, который продолжает торговать в эти моменты, рискует получить исполнение по худшим ценам.

Один из вариантов защиты — пропускать новые входы в заданном окне вокруг события из проверенного календаря. MQL4 сам не предоставляет календарь EIA или ОПЕК+:
// MQL4: проверка временного окна вокруг известного события
// eventTime передаётся из проверенного календаря в серверном времени.
bool IsEventWindow(datetime eventTime, int minutesBefore, int minutesAfter)
{
if (minutesBefore < 0 || minutesAfter < 0) return false;
datetime now = TimeCurrent();
return now >= eventTime - minutesBefore * 60
&& now <= eventTime + minutesAfter * 60;
}
// В OnTick советник может пропустить новые входы, например так:
// if (IsEventWindow(nextEiaEvent, 30, 30)) return;
Функция использует серверное время MetaTrader. Значение nextEiaEvent должен предоставить внешний проверенный календарь с корректным часовым поясом. Пример только блокирует новые входы в OnTick; он не закрывает открытые позиции.
С чего начать автоматизацию
Перед покупкой или заказом советника проверьте три критических требования, описанных в предыдущем разделе:
- Корректный roll-перенос между серийными контрактами.
- Отключение торговли по календарю новостей в периоды макроэкономических публикаций.
- Расширенные стоп-лоссы под волатильность сырьевых рынков.
Инфраструктура: арендуйте VPS с минимальной задержкой до сервера брокера, тестируйте стратегию на тиковых данных (M1-свечи скрывают внутрибаровые скачки) и обязательно проведите форвард-тест на демо-счёте в реальном времени.
Упрощённый MQL4-фрагмент для временного окна около экспирации:
// MQL4: защитное окно вокруг экспирации контракта
// contractExpiry и параметры окна должны поступать из спецификации брокера.
bool IsRollBlackout(datetime contractExpiry, int minutesBefore, int minutesAfter)
{
if (minutesBefore < 0 || minutesAfter < 0) return false;
datetime now = TimeCurrent();
return now >= contractExpiry - minutesBefore * 60
&& now <= contractExpiry + minutesAfter * 60;
}
// В OnTick блокируйте новые входы в такое окно:
// if (IsRollBlackout(expiry, 60, 30)) return;
// Проверка не выполняет перенос позиции и не рассчитывает стоимость roll.
Этот фрагмент лишь определяет временное окно. Он не переносит позицию между сериями и не рассчитывает roll-cost: эти данные зависят от спецификации инструмента и брокера. Проверяйте их в тестере и на демо-счёте; риск убытка сохраняется.








Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.