TrendEngine
- Эксперты
- Версия: 2.33
- Активации: 5
Систематическая среднесрочная стратегия следования за трендом на мировых фондовых индексах и металлах. Без сетки, без мартингейла, без долива в убыток. Риск ограничен математически — размером позиции и жёстким потолком плеча.
Для кого эта стратегия
Целевая группа. Инвесторы и трейдеры, которым нужен системный, контролируемый по риску подход «настроил и не трогаешь», а не ручной трейдинг у монитора. Особенно — те, кто устал от советников на сетке и мартингейле, дающих красивую кривую до одного катастрофического обвала. Подходит как самостоятельный инструмент и как диверсифицирующий рукав в портфеле к другим стратегиям.
Что она даёт. Доступ к хорошо задокументированной академически премии за тренд (time-series momentum, «managed futures») сразу по корзине из ~10 активов — 8 мировых фондовых индексов плюс золото и серебро — с автоматической ежемесячной ребалансировкой и контролем риска. Вы не следите за рынком: раз в месяц робот сам пересчитывает, что держать и в каком объёме.
Какая прибыль (по результатам бэктестов 2010–2026, НЕ гарантия). Доходность регулируется одним параметром риска (целевая волатильность), и доход с просадкой растут вместе — бесплатного дохода не бывает:
| Режим (целевая вола / потолок плеча) | Доход в год | Макс. просадка | Коэф. Шарпа |
|---|---|---|---|
| Консервативный (10% / 1.0×) | ~8–10% | ~16% | ~0.85 |
| Сбалансированный (15% / 1.5×) | ~11–13% | ~24–27% | ~0.85 |
| Агрессивный (20% / 2.0×) | ~14–17% | ~30–32% | ~0.85 |
Это усреднённые цифры. Доход у трендовых стратегий неравномерный: бывают сильные годы и плоские/убыточные периоды. В месяц это НЕ ровный 1% — могут быть месяцы в минус и месяцы в большом плюс. На независимой (out-of-sample) форвард-проверке стратегия подтвердилась, но в благоприятном трендовом окне; в долгую честно ожидать Шарп ~0.7–0.9.
Сколько сделок. Это низкочастотная стратегия: ребаланс раз в месяц по ~7–10 символам. В среднем ~20–40 сделок в год, позиции удерживаются неделями и месяцами (средняя — около 5–6 месяцев, отдельные тренды — больше года).
Преимущество над сеткой и мартингейлом — принципиальное.
| Сетка / мартингейл | TrendEngine | |
|---|---|---|
| Действие при убытке | доливает в убыток (усредняет) | режет — выходит, когда тренд гаснет |
| Распределение результата | много мелких плюсов → редкий полный слив | редкие крупные плюсы оплачивают мелкие минусы |
| Экспозиция | растёт без предела при просадке | жёстко ограничена потолком плеча |
| Природа «эджа» | его нет — обмен ruin-риска на гладкость | реальная, задокументированная премия за тренд |
Сетка и мартингейл выживают, пока рынок «пилит», и гибнут на первом сильном движении против. TrendEngine делает обратное: маленькие убытки приняты заранее, а крупные движения по тренду — это и есть заработок. Просадки ограничены и восстановимы, а не смертельны для счёта.
Быстрый старт: установка, тестирование и оповещения
Установка на MetaTrader 5
- Файл → Открыть каталог данных.
- Скопируй TrendEngine.ex5 (или .mq5 ) в папку MQL5/Experts/ . Если это .mq5 — открой в MetaEditor и нажми Компиляцию (F7).
- В терминале: Навигатор → Советники → правый клик → Обновить.
- Перетащи советник на любой график (символ графика не важен — робот сам читает месячные бары своих торговых символов) и разреши автоторговлю.
Символы: «из коробки» и где искать замену у брокера
По умолчанию задана проверенная корзина из 10 активов: US500, USTEC, JPN225, DE40, UK100, HK50, STOX50, US2000, XAUUSD, XAGUSD . У разных брокеров имена отличаются — это нормально.
Где посмотреть свои: Обзор рынка (Ctrl+M) → правый клик → Символы → раздел индексов/CFD. Сопоставляй по описанию, а не по тикеру:
- «US SPX 500 / S&P 500» → US500 / SP500m / US500M — выбери ОДИН (обычно без приставок m/M).
- «US Tech 100 / Nasdaq» → USTEC / USTECH100 / ND100m .
- «Germany 40 / DAX» → DE40 / GER30 ; «FTSE 100» → UK100 ; «Nikkei 225» → JPN225 .
- «EURO STOXX 50» → STOX50 ; «Hong Kong» → HK50 ; «US Small Cap 2000» → US2000 .
- Золото / серебро → XAUUSD / XAGUSD .
Каждый символ — отдельной строкой в параметрах ( Symbol 1 … Symbol 12 ). Впиши точные имена своего брокера; пустые слоты пропускаются.
Самопроверка. На запуске советник печатает в журнал блок Symbol self-check (MN1) — по каждому символу OK (N мес) / NOT at broker / too little history . NOT at broker → поправь имя. too little history → открой график символа на MN1 и прокрути до старых баров (догрузить историю).
«Система работает из коробки»
После подстановки имён брокера больше менять ничего не нужно: дефолты — это валидированная корзина из 10 активов, целевая вола 10%, потолок плеча 1.0× (консервативный профиль ~8–10%/год). Хочешь агрессивнее — подними Target annual portfolio volatility до 15–20 и HARD CAP (total notional / equity) до 1.5–2.0; доход и просадка вырастут пропорционально.
Тестирование в Стратегическом тестере
- Символ графика: любой ликвидный, напр. US500 или EURUSD — на результат не влияет.
- Таймфрейм: H1 или D1 (D1 считается быстрее).
- Моделирование: «OHLC на M1». НЕ ставь «Цены открытия» — на мультивалютном тесте это даёт неверные чтения по неосновным символам.
- Период: с запасом истории. Индексным CFD у большинства брокеров данные доступны с ~2012–2016, отдельным (UK100/STOX50/китайские) — позже. Чтобы торговали ВСЕ символы с начала теста, бери старт 2016+ (полезно прогнать и длинное окно, и последние годы). Движку нужно ~15 месяцев истории до первого сигнала.
- Начальный депозит: $100 000. Это важно: у индексных/металлических CFD крупный минимальный лот — на $1 000–10 000 многие позиции округлятся в ноль и торговать не будут. Корзина из 10 активов рассчитана на солидный счёт.
- Перед тестом добавь все символы в Обзор рынка (мультивалютный режим).
Добавить 2 символа и проверить улучшение
В слоты Symbol 11 и Symbol 12 можно вписать любые символы брокера и прогнать — тестер покажет, стало ли лучше по Шарпу и просадке. (Замечание из исследования: добавление ещё индексов того же брокера обычно НЕ улучшает результат — мировые акции сильно скоррелированы между собой; реально диверсифицируют активы других классов. Но проверить никто не мешает — слоты для этого и сделаны.)
Оповещения: Telegram и электронная почта
Email. Сервис → Настройки → вкладка «Почта» (SMTP-сервер, логин, пароль, отправитель/получатель). Затем в параметрах советника Email on rebalance = true .
Telegram.
- Создай бота: напиши @BotFather → /newbot → получишь токен.
- Узнай свой chat_id: напиши боту любое сообщение, затем открой @userinfobot (покажет твой id).
- Разреши URL: Сервис → Настройки → Советники → ✓ «Разрешить WebRequest для URL» → добавь https://api.telegram.org .
- В параметрах: Telegram alerts = true , Telegram bot token = <токен> , Telegram chat id = <твой id> , Bot label = <метка> .
Важно: оповещения работают только на живом/демо счёте в реальном времени. В Стратегическом тестере они молчат (так и задумано). Если в журнале [TG] send failed err=4060 — не добавлен URL в разрешённые (шаг 3).
Какие бывают алерты и что приходит
Каждое сообщение подписано меткой [имя бота] (удобно при нескольких копиях). Приходит:
- Запуск — при старте: число символов, сколько готово, режим риска, потолок плеча, эквити. Если символ не готов — предупреждение прямо в сообщении.
- Здоровье — если ни один символ не готов или сделка не исполнилась (с кодом ошибки).
- Месячный ребаланс — сводка: сколько лонгов, текущий гросс (плечо), список позиций с объёмами.
- Дневной P&L — на старте нового дня: прибыль/убыток за прошедший день, эквити, баланс, число открытых позиций.
Каждый канал (алерт в терминале, пуш в приложение MT5, email, Telegram) включается своим флагом независимо.
Как определены все взаимосвязи и почему именно эти
Идея. В основе — time-series momentum: актив, выросший за последние месяцы, статистически склонен расти дальше; упавший — падать. Эффект десятилетиями описан в литературе по managed futures. Но он не везде одинаков.
Платформа. MetaTrader 5 / MQL5, мультивалютный режим (один советник управляет всеми символами одновременно), сигналы берутся со закрытых месячных баров (MN1) — без заглядывания в будущее и без перерисовки.
Что использовалось при разработке. Перед написанием советника эджи проверялись на ~25 годах истории по 40+ инструментам (индексы, металлы, энергоносители, агрокультуры, валюты, крипта, облигации). Результат: трендовая премия устойчива на фондовых индексах и драгметаллах, но в 2010-х деградировала на сырьё и облигациях. Поэтому в корзину вошли именно 8 индексов + золото/серебро: там, где тренд жив, плюс металлы дают диверсификацию (слабее скоррелированы с акциями). Добавление сырья/облигаций/лишних европейских индексов в тестах ухудшало результат — поэтому их нет.
Дальше — как это превращается в MQL-логику.
(1) Сигнал — мульти-горизонтный моментум (long/flat). Для каждого символа берём доходность за 3, 6 и 12 месяцев и считаем долю положительных. Получаем число 0…1 — насколько уверенно актив в тренде вверх. Шорта нет: либо лонг, либо кэш.
int LB[3] = {3,6,12}; // горизонты в месяцах bool ComputeSignal(string sym, double &sigOut) { double c1 = iClose(sym, PERIOD_MN1, 1); // последний ЗАКРЫТЫЙ месяц double s = 0.0; for(int j=0; j<3; j++){ double cp = iClose(sym, PERIOD_MN1, 1+LB[j]); s += ((c1/cp - 1.0) > 0.0 ? 1.0 : 0.0); // +1, если рос за этот горизонт } sigOut = s/3.0; // 0.00 / 0.33 / 0.67 / 1.00 return(true); }
(2) Веса — risk parity (обратная к волатильности). Чтобы спокойный индекс и буйный металл вносили в риск поровну, вес каждого актива обратно пропорционален его волатильности. Сначала считаем месячную волу:
bool ComputeMonthlyVol(string sym, double &volOut)
{
int W = InpVolWindow; // 12 месяцев
double r[]; ArrayResize(r,W); double mean=0;
for(int k=0;k<W;k++){
double a=iClose(sym,PERIOD_MN1,1+k), b=iClose(sym,PERIOD_MN1,2+k);
r[k]=a/b-1.0; mean+=r[k];
}
mean/=W; double var=0;
for(int k=0;k<W;k++) var+=(r[k]-mean)*(r[k]-mean);
volOut=MathSqrt(var/W);
return(true);
}
Затем вес ∝ сигнал / вола, и всё нормируется:
// raw_i = sig_i / vola_i ; затем нормировка, чтобы сумма весов = 1 // актив с большей волой получает МЕНЬШЕ капитала -> равный вклад в риск
(3) Вола-таргет через корреляции. Веса определяют структуру, а общий масштаб задаётся целевой волатильностью портфеля. Считаем матрицу корреляций месячных доходностей и подбираем множитель k , чтобы прогнозная вола портфеля совпала с целью ( InpTargetVolPct ):
// портфельная дисперсия с учётом корреляций double pv=0.0; for(int a=0;a<M;a++) for(int b=0;b<M;b++) pv += v[a]*v[b]*corr[a][b]; // v = денежная сигма позиции double pSig = MathSqrt(pv); double tgt = eq*(InpTargetVolPct/100.0)/MathSqrt(12.0); double k = tgt/pSig; // множитель к лотам
(4) Жёсткий потолок плеча — главный предохранитель. После вола-таргета считаем реальный суммарный ноционал и, если он превышает InpMaxGrossExposure × эквити , пропорционально ужимаем ВСЕ позиции. Это не зависит от шума в оценке волы и физически не даёт счёту перелевериджиться:
double cap = InpMaxGrossExposure*eq; // напр. 1.0–2.0 × эквити if(gross > cap){ double sc = cap/gross; for(...) aLots[i] *= sc; // ужимаем всё пропорционально }
(5) Надёжный расчёт стоимости позиции. У CFD поля TICK_VALUE бывают недостоверны, поэтому риск на лот считается через OrderCalcProfit (авторитетный расчёт P&L платформы), с запасным путём через размер контракта:
double MoneyPerSigmaLot(string sym, double volFrac)
{
double price=SymbolInfoDouble(sym,SYMBOL_BID);
double sp=volFrac*price, profit=0.0;
if(OrderCalcProfit(ORDER_TYPE_BUY,sym,1.0,price,price+sp,profit) && profit!=0.0)
return(MathAbs(profit)); // убыток на 1 лот при движении 1σ
double cs=SymbolInfoDouble(sym,SYMBOL_TRADE_CONTRACT_SIZE);
return(cs*price*volFrac); // фолбэк
}
Так связаны все блоки: сигнал решает входить ли, risk parity — в какой пропорции, вола-таргет — в каком общем масштабе, гросс-потолок — не больше скольки, а OrderCalcProfit обеспечивает корректность в деньгах.
За счёт чего профит, как защищён капитал, почему нет TP/SL/трейлинга
За счёт чего профит. Стратегия зарабатывает на устойчивых трендах: пока актив растёт, позиция удерживается и прибыль накапливается; когда моментум гаснет — выход в кэш. Распределение результата положительно-скошенное: редкие крупные победители оплачивают много мелких убытков. Дополнительно «long/flat» уводит в кэш на медвежьих фазах, обходя медленные спады.
Как защищён капитал — четыре уровня:
- Размер позиции под вола-бюджет — каждая позиция масштабируется под целевую волатильность, а не «на всё плечо».
- Жёсткий потолок валовой экспозиции ( InpMaxGrossExposure ) — суммарный ноционал не превышает заданное кратное эквити; долива в убыток нет в принципе.
- Long/flat — при угасании тренда актив уходит в кэш (обходит медленные медвежьи рынки).
- Диверсификация по ~10 слабо связанным активам.
Почему нет TP / SL / трейлинга. Это трендовая стратегия, и её выход — это угасание месячного сигнала, а не ценовой уровень.
- Фиксированный TP обрезает победителей — а именно они и создают весь профит (положительная скошенность). Срезав крупные движения, вы оставляете мелкие убытки и переворачиваете эдж в минус.
- Фиксированный SL пилит: обычная внутримесячная волатильность выбивает вас из позиции, которую сигнал ещё держит → вы фиксируете временную просадку как реальный убыток, а затем заходите снова выше → холостой оборот, который снижает и доход, и Шарп.
- Риск уже под контролем — размером позиции и потолком плеча. Стопы были бы третьим, конфликтующим слоем.
(Это не мнение — это проверено расчётами, см. раздел 3.)
Как читать график тестера.
- Синяя линия (Баланс) — реализованный капитал. Меняется только при закрытии позиций, поэтому между ребалансами она ровная, а на ребалансе делает «ступеньку».
- Зелёная линия (Средства/эквити) — баланс плюс плавающий P&L открытых позиций. Она «дышит» вместе с рынком.
- Расхождение зелёной и синей — это нормально: позиции держатся неделями, прибыль/убыток по ним плавающие, пока сделка не закрыта.
- Вертикальный скачок в самом конце теста — артефакт тестера: он принудительно закрывает все открытые позиции на последнем баре. К логике стратегии отношения не имеет.
- «Загрузка депозита» — использование маржи (косвенно — плечо). Должна быть умеренной; резкие всплески = перегрузка.
Что такое нереализованный (плавающий) P&L. Это текущая прибыль/убыток ещё не закрытых позиций. Он входит в эквити (зелёная линия), но не в баланс (синяя), пока сделка открыта. Для стратегии, удерживающей позиции месяцами, большой плавающий P&L — норма, а не сбой.
Как закрываются сделки. На очередном месячном ребалансе советник заново считает сигналы: символы, у которых моментум развернулся (сигнал → 0), закрываются; те, что ещё в тренде, — удерживаются или их объём пересчитывается под новый риск. То есть сделка закрывается, когда заканчивается тренд, а не по достижении ценовой цели.
Почему ввод TP / SL ухудшит прибыль
Это проверено на исторических данных, нормировано к одной волатильности и с учётом издержек. Базовый Шарп без вмешательств — 0.86–0.89.
Трейлинг-стоп (любой ширины) — вредит по всем метрикам:
| Вариант | CAGR | Шарп | Просадка |
|---|---|---|---|
| База (без стопов) | 8.5% | 0.86 | −16.4% |
| Трейлинг-SL 2.5σ | 4.9% | 0.57 | −25.1% |
| Трейлинг-SL 4.0σ (широкий) | 5.3% | 0.58 | −21.4% |
Доход падает вдвое, Шарп с 0.86 до ~0.57, а просадка становится ХУЖЕ (−16% → −25%): стоп фиксирует временные откаты как реальные убытки, после чего следует повторный вход выше — холостой churn. Сладкой точки нет ни на какой ширине.
Take-profit — в лучшем случае нейтрален, обычно вредит: обрезает победителей, которые и создают эдж; никогда не улучшает результат.
Тейк «+1% от баланса» (закрыть и ждать месяц): доход режется вдвое–втрое (8.6%→4.6% при 10% воле; 16.7%→4.9% при 20%), Шарп с 0.87 до 0.42–0.65. Причём чем выше плечо, тем хуже — и тейк вовсе обнуляет смысл плеча (вы банкуете +1% раньше, чем плечо разгонит тренд).
Тейк «+1% → немедленный ребаланс»: поскольку сигналы внутри месяца не меняются, вы закрываете и тут же открываете те же самые позиции — чистый холостой оборот. Вола та же (риск не снижается), а доход падает на величину комиссий (десятки лишних круговых сделок), Шарп 0.83 → 0.69–0.76.
Вывод. Тренд живёт на положительной скошенности — немногих крупных выигрышах. TP усекает правый хвост (большие движения) и переворачивает эдж; SL превращает временные просадки в реализованные убытки плюс churn. Риском управляет размер позиции, а не стопы.
Перспективы стратегии
Что в плюс. Трендовая премия (managed futures) — структурное, десятилетиями наблюдаемое явление, а не артефакт одного рынка. Версия на фондовых индексах + металлах в тестах оказалась устойчивее «широкого» тренда и пережила медвежий 2022-й неглубокой просадкой. На независимой форвард-проверке эдж подтвердился.
Что честно держать в голове (риски и ограничения):
- Тренд деградирует и затухает. В 2010-х широкая трендовая премия слабела (особенно на сырье — поэтому его нет в корзине). Возможны многолетние плоские/слабые периоды (например, 2010–2014 были слабыми). Это нормальная плата за трендовый подход.
- Не спасает от быстрых обвалов. Месячный сигнал не успевает за резкими крахами (типа февраля–марта 2020) — на таких событиях стратегия получает убыток наравне с рынком, тем больший, чем выше плечо.
- Будущая доходность, скорее всего, ниже бэктеста. Реальные спреды, проскальзывание, своп по CFD и затухание эджа работают против. Разумный ориентир в долгую — Шарп ~0.7–0.9, доход ~8–17% (по выбранному риску) с периодическими просадками 15–35%.
- Это диверсификатор, а не «грааль». Лучшее применение — как один из рукавов портфеля рядом с другими, слабо коррелированными стратегиями; тогда общий риск-скорректированный результат выше, чем у любого рукава по отдельности.
Итог. TrendEngine — это снижающий просадку трендовый инструмент на реальной премии, с математически ограниченным риском и без уловок сетки/мартингейла. Он не обещает быстрого богатства и будет иметь слабые годы — но именно отсутствие скрытого ruin-риска и прозрачность механики отличают его от «гладких до слива» советников.
Дисклеймер. Все приведённые цифры — результаты исторического тестирования и не являются обещанием или гарантией будущей доходности. Торговля сопряжена с риском убытков, включая существенные просадки. Материал не является индивидуальной инвестиционной рекомендацией. Тестируйте на демо и используйте только тот риск, который готовы потерять.
