# Индикатор Machine Learning SuperTrend

Раздел: Индикаторы форекс
Автор темы: MCM
Создана: 2026-10-16 23:20
Ответов: 36 | Просмотров: 638
Страница 1 из 2
Источник: https://forexsystemru.com/threads/97179/

---

## MCM — 2026-10-16 23:20

Просили индюка для нового поколения, нашёл для мт5...)))
Выглядит так:

## vaas04 — 2026-10-17 00:08

> Цитата (MCM):
> Просили индюка для нового поколения, нашёл для мт5.

Вася просил чтобы бабки сразу на карту кидали это не новый.:ROFLMAO::ROFLMAO::ROFLMAO:

## MCM — 2026-10-17 01:37

> Цитата (MCM):
> Просили индюка для нового поколения, нашёл для мт5...)))
> Выглядит так:

> Цитата (vaas04):
> Вася просил чтобы бабки сразу на карту кидали это не новый.:ROFLMAO::ROFLMAO::ROFLMAO:

Что бы представленные в мечтах бабки сразу оказывались на карте - чудо индикатора мало...)))

## блондинка.. — 2026-10-17 11:36

> Цитата (MCM):
> Я не автор этого индикатора и не программист.

Спасибо MCM. Посмотрела код-это нечто!) Такого не видела вообще ни разу. Это наверное несколько нейро сетей (платных) писали. В основе обычный супер тренд, но применены технологии его приспосабливаться под конкретные движения цены. Как он висит бесплатно не понятно.Там совершенный шлак продаётся и не дёшево.А тут реальный продукт.

## MCM — 2026-10-17 13:36

> Цитата (блондинка..):
> Спасибо MCM. Посмотрела код-это нечто!) Такого не видела вообще ни разу. Это наверное несколько нейро сетей (платных) писали. В основе обычный супер тренд, но применены технологии его приспосабливаться под конкретные движения цены. Как он висит бесплатно не понятно.Там совершенный шлак продаётся и не дёшево.А тут реальный продукт.

Тоже отдал этот код ИИшке поиграться...)))
Ему всё равно делать нечего, так пусть обучается....

## sportomans — 2026-10-17 14:50

вот что новый gemini argon сказал по индикатору:

Архитектура индикатора **Machine Learning SuperTrend v10.02** объединяет классический трендовый фильтр с адаптивной сеткой состояний (Regime Grid), оценкой персистентности (экспонента Херста + энтропия Шеннона) и фоновой матрицей виртуальных сделок (Probes). Однако в текущей реализации MQL5 есть **критические алгоритмические ошибки**, связанные с потиковой обработкой (OnCalculate), которые искажают математику обучения в реальном времени и вызывают перерисовку (repainting).
Ниже представлен детальный технический аудит кода, список выявленных уязвимостей и готовые решения для оптимизации производительности и повышения качества сигналов.
1. Критические ошибки архитектуры (Bugs & Logic Flaws)
А. Засорение очередей и мутация состояния на каждом тике (Intra-bar State Corruption)
В MQL5 функция OnCalculate вызывается на **каждом входящем тике**. Когда prev_calculated == rates_total, переменная startIdx равна 0, и цикл for(int i=startIdx; i>=0; i--) выполняет итерацию для i = 0 на каждом тике внутри одного и того же бара:

- **Очереди данных (QPush):** На каждом тике в массивы g_highs, g_lows, g_rsis, g_vols пушится текущее (незакрытое) значение бара 0. При активном рынке (например, на XAUUSD) за одну минуту в массив емкостью 500 элементов запишется 500 тиков **одного и того же бара**. В результате QMax(g_highs, sens) и InpRSILookback перестают видеть историю баров и анализируют только последние несколько секунд текущего бара.

- **Сбивание расчета SuperTrend (ST_Step):** Переменные g_st_rma, g_st_up, g_st_dn, g_sig_trend являются глобальными и перезаписываются на каждом тике. В формуле Уайлдера rmaVal = rmaVal + alpha * (tr - rmaVal) на 50-м тике одного бара rmaVal практически полностью сравняется с текущим tr бара 0, уничтожив сглаживание за период InpATRPeriod.

- **Фоновые пробы (OpenProbe / CloseMatured) и Оптимизатор:** Матрица тестирования и веса g_grid обучаются многократно на одном и том же баре, если условие barNum - g_lastParamBar совпало с текущим баром.

Б. Неработающий Risk Guard и сломанный кулдаун сигналов

- При генерации сигнала на баре i == 0 вызывается ApplyRiskGuard(0.0, barNum). Поскольку первым аргументом передается жесткий 0.0 (PnL = 0):

- Условие if(pnl < 0) **никогда не выполняется**.

- Счетчик убыточных серий g_consecLosses всегда сбрасывается в 0 (else g_consecLosses = 0;).

- Переменная g_sessionPnL всегда остается равной 0.0.

- Пауза после убытка (g_cooldownUntil) никогда не активируется.

- При появлении сигнала на формирующемся баре 0 глобальная переменная g_lastSigBar сразу получает значение barNum. На следующем тике этого же бара условие (barNum - g_lastSigBar) >= InpMinBarsBetweenSigs дает 0 >= 10 (false), и стрелка **мгновенно стирается** (BuyBuf = 0.0). Сигнал мигает на одном тике и пропадает.

В. Конвертация процентов в USD вместо ATR-нормализации в CloseMatured
В функции CloseMatured доходность пробы считается как pct = ret / p.entry. Для активов с разной стоимостью пункта (или при сильном изменении цены золота с 2000 до 2700+) фиксированный процент дает разную волатильностную оценку. При этом в коде уже передается p.atr_val.
2. Проблемы производительности (CPU & GUI Bottlenecks)

**Узел кода****Проблема в v10.02****Влияние на терминал****Решение**

**DrawDashboard()**Вызов DashDeleteAll() и полное пересоздание ~85 графических объектов (OBJ_RECTANGLE_LABEL, OBJ_LABEL) + ChartRedraw(0) **на каждом тике**.Фризы графика, высокая нагрузка на основной поток рендеринга MT5, особенно при запуске на нескольких графиках или в визуальном тестере.Создавать сетку объектов один раз (или проверять ObjectFind), а на тиках обновлять только свойства OBJPROP_TEXT и OBJPROP_COLOR не чаще 1 раза в секунду или при закрытии бара.

**QPush() / DecayPush()**Сдвиг всех элементов массива циклом for(int i=0; i<sz-1; i++) arr=arr[i+1]; (O(N) на каждый вызов).Замедление при пересчете глубокой истории (prev_calculated == 0).Использовать **кольцевой буфер (Ring Buffer)** с указателем head (O(1) без копирования памяти) либо выполнять пуш строго один раз при закрытии бара.

**CalcHurst()**Классический R/S анализ напрямую по ценам закрытия (close[idx+i] - mean).Цены финансового актива нестационарны (I(1)). R/S анализ на уровнях цен вместо логарифмических приращений (ln(Ct/Ct−1)) математически смещен к 1.0 при любом локальном тренде.Считать отклонения по приращениям close[idx+i] - close[idx+i+1].

3. Предложения по улучшению торговой логики (Quant & ML)

- **Оценка реальных сигналов и Проб с учетом Stop Loss / Take Profit (Barrier Touch):** Сейчас и CloseMatured, и подсчет g_sig_win_L/S проверяют только цену закрытия через 5 баров (close). Если на 2-м баре цена пробила g_tpMult * ATR, а к 5-му бару вернулась к точке входа, алгоритм засчитает убыток или околонулевой результат. Замена фиксированного 5-барного выхода на проверку касания барьеров (g_stopMult * ATR и g_tpMult * ATR) внутри горизонта удержания сделает адаптацию параметров g_stopMult и g_tpMult осмысленной.

- **Интеграция Risk Guard с реальными результатами сигналов:** Отслеживать исход последнего реального сигнала (через структуру активного сигнала) и передавать в ApplyRiskGuard() реальный долларовый результат (рассчитанный через риск на сделку или atr_ret), чтобы реально работали лимиты дневной просадки (InpMaxSessionLoss), серии лоссов (InpMaxConsecLosses) и динамический кулдаун.

- **Инверсия логики Breakout в SignalBreakout:** В текущем коде написано:
Фрагмент кода

```
if(InpSignalMode==SignalBreakout&&canSig)
{
   if(isNewHigh&&g_sig_trend==1 &&sellF)doSell=true;
   if(isNewLow &&g_sig_trend==-1&&buyF) doBuy =true;
}

```

При пробое нового максимума (isNewHigh) по бычьему тренду (g_sig_trend == 1) код открывает **Sell** (с фильтром перекупленности sellF). Это контртрендовый фейдинг экстремума (Mean Reversion), а не пробой (Breakout). Для истинного пробоя при isNewHigh && g_sig_trend == 1 должен генерироваться сигнал doBuy с учетом буфера пробоя g_brkBuf * cATR, который сейчас обучается в оптимизаторе, но **нигде не используется в генерации сигналов**!

- **Задействование адаптивного g_brkBuf:** Оптимизатор тратит ресурсы на расчет g_brkBuf (InpBreakoutBuf), но эта переменная выводится только на дашборд. Ее следует включить в фильтр пробоя/разворота: например, требовать, чтобы закрытие бара преодолело уровень SuperTrend или локальный экстремум на величину g_brkBuf * cATR.

## MCM — 2026-10-17 14:56

> Цитата (sportomans):
> вот что новый gemini argon сказал по индикатору:
>
> Архитектура индикатора **Machine Learning SuperTrend v10.02** объединяет классический трендовый фильтр с адаптивной сеткой состояний (Regime Grid), оценкой персистентности (экспонента Херста + энтропия Шеннона) и фоновой матрицей виртуальных сделок (Probes). Однако в текущей реализации MQL5 есть **критические алгоритмические ошибки**, связанные с потиковой обработкой (OnCalculate), которые искажают математику обучения в реальном времени и вызывают перерисовку (repainting).
> Ниже представлен детальный технический аудит кода, список выявленных уязвимостей и готовые решения для оптимизации производительности и повышения качества сигналов.
> 1. Критические ошибки архитектуры (Bugs & Logic Flaws)
> А. Засорение очередей и мутация состояния на каждом тике (Intra-bar State Corruption)
> В MQL5 функция OnCalculate вызывается на **каждом входящем тике**. Когда prev_calculated == rates_total, переменная startIdx равна 0, и цикл for(int i=startIdx; i>=0; i--) выполняет итерацию для i = 0 на каждом тике внутри одного и того же бара:
> 

> 
- **Очереди данных (QPush):** На каждом тике в массивы g_highs, g_lows, g_rsis, g_vols пушится текущее (незакрытое) значение бара 0. При активном рынке (например, на XAUUSD) за одну минуту в массив емкостью 500 элементов запишется 500 тиков **одного и того же бара**. В результате QMax(g_highs, sens) и InpRSILookback перестают видеть историю баров и анализируют только последние несколько секунд текущего бара.
> 
- **Сбивание расчета SuperTrend (ST_Step):** Переменные g_st_rma, g_st_up, g_st_dn, g_sig_trend являются глобальными и перезаписываются на каждом тике. В формуле Уайлдера rmaVal = rmaVal + alpha * (tr - rmaVal) на 50-м тике одного бара rmaVal практически полностью сравняется с текущим tr бара 0, уничтожив сглаживание за период InpATRPeriod.
> 
- **Фоновые пробы (OpenProbe / CloseMatured) и Оптимизатор:** Матрица тестирования и веса g_grid обучаются многократно на одном и том же баре, если условие barNum - g_lastParamBar совпало с текущим баром.
> 

> Б. Неработающий Risk Guard и сломанный кулдаун сигналов
> 

> 
- При генерации сигнала на баре i == 0 вызывается ApplyRiskGuard(0.0, barNum). Поскольку первым аргументом передается жесткий 0.0(PnL = 0):
> 

> 
- Условие if(pnl < 0) **никогда не выполняется**.
> 
- Счетчик убыточных серий g_consecLosses всегда сбрасывается в 0 (else g_consecLosses = 0;).
> 
- Переменная g_sessionPnL всегда остается равной 0.0.
> 
- Пауза после убытка (g_cooldownUntil) никогда не активируется.
> 

> 
- При появлении сигнала на формирующемся баре 0 глобальная переменная g_lastSigBar сразу получает значение barNum. На следующем тике этого же бара условие (barNum - g_lastSigBar) >= InpMinBarsBetweenSigs дает 0 >= 10 (false), и стрелка **мгновенно стирается** (BuyBuf = 0.0). Сигнал мигает на одном тике и пропадает.
> 

> В. Конвертация процентов в USD вместо ATR-нормализации в CloseMatured
> В функции CloseMatured доходность пробы считается как pct = ret / p.entry. Для активов с разной стоимостью пункта (или при сильном изменении цены золота с 2000 до 2700+) фиксированный процент дает разную волатильностную оценку. При этом в коде уже передается p.atr_val.
> 2. Проблемы производительности (CPU & GUI Bottlenecks)
> [TABLE width="100%"]
> 
> **Узел кода****Проблема в v10.02****Влияние на терминал****Решение**
> 
> 
> **DrawDashboard()**Вызов DashDeleteAll() и полное пересоздание ~85 графических объектов (OBJ_RECTANGLE_LABEL, OBJ_LABEL) + ChartRedraw(0) **на каждом тике**.Фризы графика, высокая нагрузка на основной поток рендеринга MT5, особенно при запуске на нескольких графиках или в визуальном тестере.Создавать сетку объектов один раз (или проверять ObjectFind), а на тиках обновлять только свойства OBJPROP_TEXT и OBJPROP_COLOR не чаще 1 раза в секунду или при закрытии бара.
> 
> 
> **QPush() / DecayPush()**Сдвиг всех элементов массива циклом for(int i=0; i<sz-1; i++) arr=arr[i+1]; (O(N) на каждый вызов).Замедление при пересчете глубокой истории (prev_calculated == 0).Использовать **кольцевой буфер (Ring Buffer)** с указателем head (O(1) без копирования памяти) либо выполнять пуш строго один раз при закрытии бара.
> 
> 
> **CalcHurst()**Классический R/S анализ напрямую по ценам закрытия (close[idx+i] - mean).Цены финансового актива нестационарны (I(1)). R/S анализ на уровнях цен вместо логарифмических приращений (ln(Ct/Ct−1)) математически смещен к 1.0 при любом локальном тренде.Считать отклонения по приращениям close[idx+i] - close[idx+i+1].
> 
> 
>
> 3. Предложения по улучшению торговой логики (Quant & ML)
> 

> 
- **Оценка реальных сигналов и Проб с учетом Stop Loss / Take Profit (Barrier Touch):** Сейчас и CloseMatured, и подсчет g_sig_win_L/S проверяют только цену закрытия через 5 баров (close). Если на 2-м баре цена пробила g_tpMult * ATR, а к 5-му бару вернулась к точке входа, алгоритм засчитает убыток или околонулевой результат. Замена фиксированного 5-барного выхода на проверку касания барьеров (g_stopMult * ATR и g_tpMult * ATR) внутри горизонта удержания сделает адаптацию параметров g_stopMult и g_tpMult осмысленной.
> 
- **Интеграция Risk Guard с реальными результатами сигналов:** Отслеживать исход последнего реального сигнала (через структуру активного сигнала) и передавать в ApplyRiskGuard() реальный долларовый результат (рассчитанный через риск на сделку или atr_ret), чтобы реально работали лимиты дневной просадки (InpMaxSessionLoss), серии лоссов (InpMaxConsecLosses) и динамический кулдаун.
> 
- **Инверсия логики Breakout в SignalBreakout:** В текущем коде написано:
> Фрагмент кода
>
> 
```
if(InpSignalMode==SignalBreakout&&canSig)
> {
>    if(isNewHigh&&g_sig_trend==1 &&sellF)doSell=true;
>    if(isNewLow &&g_sig_trend==-1&&buyF) doBuy =true;
> }
> 
```

> При пробое нового максимума (isNewHigh) по бычьему тренду (g_sig_trend == 1) код открывает **Sell** (с фильтром перекупленности sellF). Это контртрендовый фейдинг экстремума (Mean Reversion), а не пробой (Breakout). Для истинного пробоя при isNewHigh && g_sig_trend == 1 должен генерироваться сигнал doBuy с учетом буфера пробоя g_brkBuf * cATR, который сейчас обучается в оптимизаторе, но **нигде не используется в генерации сигналов**!
> 
- **Задействование адаптивного g_brkBuf:** Оптимизатор тратит ресурсы на расчет g_brkBuf (InpBreakoutBuf), но эта переменная выводится только на дашборд. Ее следует включить в фильтр пробоя/разворота: например, требовать, чтобы закрытие бара преодолело уровень SuperTrend или локальный экстремум на величину g_brkBuf * cATR.
> 

> 

Так пусть исправит как ему нужно и выдаст вам исправленный код, ему это на пару минут работы...

## holod.grig — 2026-10-17 15:32

для мт4,вроде работает
Поздравляю с запуском! 🎉 Радa, что всё скомпилировалось и заработало.

Пара советов на будущее, раз индикатор уже на графике:

Дашборд «раскачивается» первые несколько сотен баров — это нормально: адаптивный движок копит статистику по сделкам и только потом начинает подстраивать множитель, стопы и тейк-профиты.
Если после обновления терминала или смены таймфрейма показатели сбросятся — это тоже ожидаемо: вся память (грид, трейсы, счётчики) живёт в рамках одного расчёта.
Если захотите передавать сигналы в советник — буфер Confidence (индекс 4) под это и оставлен, там лежит уровень уверенности сигнала в процентах.

## MQL Coder — 2026-10-17 16:47

> Цитата (holod.grig):
> для мт4,вроде работает
> Поздравляю с запуском! 🎉 Радa, что всё скомпилировалось и заработало.
>
> Пара советов на будущее, раз индикатор уже на графике:
>
> Дашборд «раскачивается» первые несколько сотен баров — это нормально: адаптивный движок копит статистику по сделкам и только потом начинает подстраивать множитель, стопы и тейк-профиты.
> Если после обновления терминала или смены таймфрейма показатели сбросятся — это тоже ожидаемо: вся память (грид, трейсы, счётчики) живёт в рамках одного расчёта.
> Если захотите передавать сигналы в советник — буфер Confidence (индекс 4) под это и оставлен, там лежит уровень уверенности сигнала в процентах.

У меня почему то сливает.

[EMBED content="post-2065214"]https://forexsystemru.com/threads/tester-dlya-proverki-indikatorov-na-pribyl-nost-profit-faktor-s-uchetom-spred-sl-tp-bezubytok-tral.96878/post-2065214

## блондинка.. — 2026-10-17 17:24

> Цитата (MQL Coder):
> У меня почему то сливает.

так он и должен сливать по такой схеме использования, стрелка это не оптимальный вход.
я думаю что реверсом будет более выгодно торговать) но на некоторых участках.

## sportomans — 2026-10-17 18:37

там столько настроек что нужно либо скрипт писать для оптимизации либо через сову гонять

## MCM — 2026-10-17 18:43

> Цитата (MQL Coder):
> У меня почему то сливает.
>
> [EMBED content="post-2065214"]https://forexsystemru.com/threads/tester-dlya-proverki-indikatorov-na-pribyl-nost-profit-faktor-s-uchetom-spred-sl-tp-bezubytok-tral.96878/post-2065214

Это тест с реверс режимом, но есть и режим по тренду....может с ним и не сольёт...

## MQL Coder — 2026-10-17 19:02

> Цитата (MCM):
> Это тест с реверс режимом, но есть и режим по тренду....может с ним и не сольёт...

Ну если против сигналов индикатора торговать, то не сливет.
Это наверное тоже самое что и реверс.

[EMBED content="post-2065243"]https://forexsystemru.com/threads/tester-dlya-proverki-indikatorov-na-pribyl-nost-profit-faktor-s-uchetom-spred-sl-tp-bezubytok-tral.96878/post-2065243

## ВАСЯ......... — 2026-10-17 20:11

> Цитата (блондинка..):
> Как он висит бесплатно не понятно.Там совершенный шлак продаётся и не дёшево.А тут реальный продукт.

ты бы ни когда такое не выложила - а вот кто то реально не хомяк  😁

## MCM — 2026-10-18 15:51

ИИшки допилили до этого индюка, теперь он с человеческим лицом...)))
Но это уже не тот индикатор что там лежит, слишком сильно они его днк переписали.
Практически советника сделали...)))

Итоговое заключение
ML SuperTrend v10.77 [Hammad Dilber] — это полированный продукт, готовый к широкому распространению.
Мы прошли полный путь развития:
Ядро: Стабильный SuperTrend с RSI/Vol/Tick Pressure фильтрами.
Честность: Строгий No-Repaint режим (сигналы только на закрытых барах).
Управление риском: Динамические выходы (Trend Flip / Opp Signal) и Force Close по времени.
Аналитика: Гибкие фильтры статистики по датам (с удобными чекбоксами) и времени открытия.
Интерфейс: Информативный дашборд, отражающий текущие настройки и реальную статистику.
Этот индикатор сочетает в себе простоту использования для новичков (можно ничего не настраивать и получать базовые сигналы) и глубину для профессионалов (тонкая настройка выходов, сегментация статистики, контроль рисков).
Релиз одобрен. Поздравляю с завершением разработки! 🏆🚀

## MCM — 2026-10-18 16:03

Так что, что-то в нём есть....
Те кто собирался или собирается этот индикатор "помучать" - результат от этого может быть и не плохой.
У меня вышло так (см.ниже), надеюсь у вас выйдет лучше...
Нужно правда ещё с настройками повозится, но и на вскидку вроде не льёт.
резы по всем сделкам без ограничения времени открытия сделок, то есть по всем сигнал в течении суток с начала 2026 года на м10...

а это тот же м10, но с ограничением времени открытия сделок - только с 8.30 до 20.30 и принудительным закрытием всего, что открыто в 23.59

## ВАСЯ......... — 2026-10-18 16:09

> Цитата (MCM):
> Так что, что-то в нём есть....
> Те кто собирался или собирается этот индикатор "помучать" - результат от этого может быть и не плохой.
> У меня вышло так (см.ниже), надеюсь у вас выйдет лучше...
> Нужно правда ещё с настройками повозится, но и на вскидку вроде не льёт.
> резы по всем сделкам без ограничения времени открытия сделок, то есть по всем сигнал в течении суток с начала 2026 года на м10...
>
>
>
>
> а это тот же м10, но с ограничением времени открытия сделок - только с 8.30 до 20.30 и принудительным закрытием всего, что открыто в 23.59

как понять соотношение стоп тейк какое ?

## MCM — 2026-10-18 16:20

> Цитата (ВАСЯ.........):
> как понять соотношение стоп тейк какое ?

Так на прямую понять не получится, там 5 вариантов закрытия реализовано.
Там самому можно разделить Avg Win (R) на Avg Loss (R), сейчас это только руками, но в стате они видны.
Там в районе 1 к 1,1+-
Нужно ИИшку попросить сделать...))
Но он все сделки мне прописывает со всеми параметрами, проверить можно все прямо на графике, так что вроде не брешит....
Да, забыл сказать - это по золоту были резы.

## MQL Coder — 2026-10-18 16:31

> Цитата (MCM):
> Так что, что-то в нём есть....
> Те кто собирался или собирается этот индикатор "помучать" - результат от этого может быть и не плохой.
> У меня вышло так (см.ниже), надеюсь у вас выйдет лучше...
> Нужно правда ещё с настройками повозится, но и на вскидку вроде не льёт.
> резы по всем сделкам без ограничения времени открытия сделок, то есть по всем сигнал в течении суток с начала 2026 года на м10...
>
>
>
>
> а это тот же м10, но с ограничением времени открытия сделок - только с 8.30 до 20.30 и принудительным закрытием всего, что открыто в 23.59

На скринах, профит фактор, вроде 1,2 
Винрейт тоже примерно 50/50
Это болтание на ноле.

## MCM — 2026-10-18 16:35

> Цитата (MQL Coder):
> На скринах, профит фактор, вроде 1,2
> Винрейт тоже примерно 50/50
> Это болтание на ноле.

ну вообше то нет...))) это строка прибыль в пипсах, полученных от сделок.
А один пипс при лоте 0,01=1 доллар

---

Следующая страница: https://forexsystemru.com/threads/97179/page-2
