Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 82
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Это индикатор SuperTrend нового поколения, в котором поверх классической концепции следования за трендом используется полноценный механизм машинного обучения. Вместо того чтобы использовать фиксированные множители ATR и статичные правила, индикатор постоянно учится на собственной истории сигналов, адаптирует свои основные параметры бар за баром и фильтрует входы через многоступенчатый конвейер подтверждения, прежде чем нанести стрелку на график. Индикатор полностью работает в рамках MetaTrader 5, не требует внешних библиотек и открывает скрытый буфер доверия, который любой советник может напрямую читать для автоматической торговли.
Индикатор состоит из 13 групп входных параметров, охватывающих все аспекты его поведения: сигнальный режим, огибающая волатильности, фильтр импульсов, анализ потоков, качество сигнала, главный регулятор реактивности, механизм автоподстройки, оптимизатор, защита от рисков, контекстная память (сетка режимов), следы распада, алерты и отображение. Значения по умолчанию подобраны таким образом, чтобы индикатор работал "из коробки" на любом ликвидном инструменте и любом таймфрейме, но каждый параметр может быть настроен самостоятельно под конкретный инструмент или стиль торговли.
Принцип работы индикатора
По своей сути индикатор рассчитывает две полосы SuperTrend - бычью (синюю) и медвежью (красную) - с помощью сглаженного по RMA конверта ATR, применяемого к выбранной пользователем ценовой основе. Ширина полосы и период ATR не фиксированы: они начинаются с введенных вами значений и затем постоянно корректируются оптимизатором каждый раз, когда оцениваются новые результаты торговли. Это означает, что конверт естественным образом расширяется в режимах высокой волатильности и сужается во время спокойных рынков без какого-либо ручного вмешательства.
Сигналы генерируются в одном из двух режимов. В режиме Reversal индикатор следит за подтверждением разворота тренда: должен сформироваться бычий разворот при медвежьем тренде (зеленая стрелка на покупку) или должен сформироваться медвежий разворот при бычьем тренде (красная стрелка на продажу). В режиме Breakout логика обратная: новый разворотный максимум в восходящем тренде вызывает сигнал на продажу в ожидании неудачного прорыва, а новый разворотный минимум в нисходящем тренде вызывает сигнал на покупку. Оба режима требуют, чтобы все активные фильтры подтверждения были согласованы до того, как будет нарисована стрелка.
Фильтры подтверждения
Каждый сигнал-кандидат проходит через три независимых фильтра, прежде чем он будет принят.
Фильтр моментума использует стандартный RSI. Чтобы сигнал на покупку сработал, RSI должен коснуться или пересечься ниже уровня Cold Level (по умолчанию 30) в пределах последнего окна просмотра. Для подачи сигнала на продажу RSI должен коснуться или пересечься выше Hot Level (по умолчанию 70). Это не позволяет индикатору генерировать контртрендовые входы во время одностороннего импульсного движения.
Фильтр Flow Analysis исследует тиковый объем. Если включена опция Require Surge, сигнал принимается только в том случае, если объем текущего бара превышает среднее значение предыдущих выборочных баров как минимум на коэффициент Surge Threshold. Это позволяет исключить сигналы, возникающие на барах с низкой активностью, где прорывы с большей вероятностью будут ложными.
Фильтр Signal Quality (Качество сигнала ) при активном режиме Key Levels Only (Только ключевые уровни) требует, чтобы точка разворота, стоящая за сигналом, была крупным структурным уровнем: расстояние от максимума свинга до ближайшего минимума свинга (или наоборот) должно превышать Key Level Depth, умноженное на текущий ATR. Таким образом, сигналы привязываются к значительной структуре цены, а не к незначительным колебаниям.
Механизм машинного обучения
Механизм машинного обучения работает через четыре взаимодействующие подсистемы.
Контекстная память (сетка режимов) представляет собой сетку 8x8 (настраиваемую), которая отображает режим рынка по одной оси и волатильность по другой. В каждой ячейке накапливается экспоненциально взвешенная статистика по прошлым сделкам, которые происходили в аналогичных условиях. Когда оценивается новый сигнал, индикатор считывает ячейку, соответствующую текущему режиму и волатильности, смешивает свои рекомендации по соседним ячейкам с помощью гауссова ядра (контролируется параметром Neighbor Blend Radius) и соответствующим образом корректирует оценку доверия. Ячейки распадаются со временем с помощью параметра периода полураспада, так что устаревшая рыночная память постепенно забывается.
Оптимизатор запускается каждые несколько баров (задается параметром Update Cooldown). Он оценивает скользящее окно последних торговых результатов и вычисляет градиентные обновления для пяти параметров: множителя ширины полосы, длины сглаживания ATR, расстояния до стопа, расстояния до тейк-профита и буфера прорыва. Обновления квантуются, чтобы избежать шумов, а мертвая зона предотвращает микрокорректировки, которые не меняют поведение. Периодический шаг возврата возвращает параметры к их опорным значениям, чтобы предотвратить дрейф во время необычных рыночных условий.
Буфер трассировки распада хранит кратковременную память о последних результатах сигнала в виде записей энергии распада. Каждая запись содержит нормированную по ATR доходность, максимальное неблагоприятное отклонение, состояние режима и уровень волатильности на момент сигнала. Эти записи дают оптимизатору более богатый контекст, чем простые подсчеты выигрышей/проигрышей, помогая ему отличать сигналы, которые были направлены правильно, но были остановлены шумом, от тех, которые были действительно неправильными.
Микропакетный процессор, если он включен, группирует последние результаты в небольшие партии и вычисляет рекомендации по параметрам на уровне партии. Эти пакетные сигналы смешиваются со скользящими рекомендациями оптимизатора, чтобы сгладить чрезмерную реакцию на отдельные сделки.
Система защиты от рисков
Система Risk Guard находится между механизмом обработки сигналов и устройством записи буферов. Даже если все фильтры подтверждения пройдены и механизм ML одобряет сигнал, система Risk Guard может заблокировать его при следующих условиях.
- Лимит торговых сессий. Как только количество сигналов в текущем торговом дне достигает Max Entries Per Session, дальнейшие сигналы не подаются до конца этого дня.
- Лимит убытков сессии. Если PnL смоделированной сессии (вычисленный из Sim Position USD и расстояния стопа на основе ATR) опускается ниже Session Loss Limit, все дальнейшие сигналы блокируются до следующей сессии.
- Охлаждение после убытка. После убыточной сделки индикатор устанавливает паузу не менее Base Pause After Loss баров. Если включена функция Dynamic Cooldown, то пауза зависит от размера убытка по отношению к ATR, поэтому при больших убытках пауза увеличивается.
- Полоса последовательных убытков. Если количество последовательных убытков достигает предела Streak Limit, торговля приостанавливается до конца сессии независимо от таймера Cooldown.
Все счетчики Risk Guard автоматически обнуляются в начале каждого нового торгового дня.
Балл доверия и интеграция с советниками
Каждый сигнальный бар получает оценку Confidence Score от 0 до 100, которая записывается в скрытый пятый буфер (метка: Confidence). Оценка строится из четырех компонентов: уверенности ячеек сетки режимов, прибавки, когда RSI подтверждает направление сигнала, прибавки, когда присутствует всплеск объема, и прибавки, когда текущий режим совпадает с направлением сигнала. Советник может читать этот буфер с помощью CopyBuffer и использовать оценку для масштабирования размера позиции, фильтрации сигналов с низким уровнем доверия или ранжирования конкурирующих сигналов по нескольким символам.
Приборная панель
Когда включена опция Show Info Dashboard, многоколоночная таблица рисуется непосредственно на графике в виде объекта текстовой метки. На панели отображается текущее направление тренда, реальные коэффициенты выигрыша для длинных и коротких сигналов отдельно (рассчитываются на основе фактического сравнения цен на 5 баров вперед, а не моделирования), коэффициенты Шарпа и Сортино из скользящей истории ATR-доходности, общее количество сигналов, текущий балл доверия и статус Risk Guard (оставшиеся активные бары охлаждения, сделки, использованные в сессии, PnL сессии). Приборная панель обновляется при каждом новом баре и при каждом тике реального времени.
Оповещения
Индикатор может отправлять всплывающее уведомление MetaTrader и/или мобильное push-уведомление каждый раз, когда на текущем (живом) баре рисуется новая стрелка на покупку или продажу. Опция Alert Once per Bar предотвращает дублирование оповещений, когда индикатор пересчитывает показания на одном и том же баре из-за новых тиков.
Входные параметры
| Параметр | По умолчанию | Описание |
|---|---|---|
| ГРУППА 1 - РЕЖИМ СИГНАЛА | ||
| Тип сигнала | Реверсивный | Разворот: сигнал срабатывает при перевороте тренда. Прорыв: сигнал подается при неудачном прорыве на новый экстремум. |
| Требуется свежий разворот | ложный | Если значение равно true, для сигнала разворота требуется, чтобы новый экстремум свинга сформировался до того, как тренд перевернулся. Снижает частоту сигналов и повышает селективность. |
| Интервал между сигналами | 10 | Минимальное количество баров, которое должно пройти между двумя последовательными сигналами. Предотвращает кластеризацию сигналов на быстрых рынках. |
| ГРУППА 2 - ОГИБАЮЩАЯ ВОЛАТИЛЬНОСТИ | ||
| Окно обратной связи | 30 | Количество последних баров, используемых для определения максимумов и минимумов колебаний для логики сигналов. Также задает начальное значение чувствительности, передаваемое оптимизатору. |
| Период сглаживания | 24 | Период ATR для огибающей SuperTrend. Адаптируется оптимизатором с течением времени. Более длительный период создает более плавные полосы, которые медленнее реагируют на изменения волатильности. |
| Ширина полосы | 1.4 | Множитель ATR для полосы SuperTrend. Адаптируется оптимизатором. Более высокие значения создают более широкие полосы с меньшим количеством, но более надежными переворотами тренда. |
| Ценовой базис | hlcc4 | Серия цен, используемая в качестве средней точки для полос SuperTrend. Варианты: open, high, low, close, hl2, hlc3, ohlc4, hlcc4. |
| Режим истинного диапазона | истинный | Если значение true, ATR сглаживается с помощью RMA (сглаживание Уайлдера). Если false, используется сглаживание EMA. RMA - это классическое соглашение SuperTrend. |
| ГРУППА 3 - ФИЛЬТР ИМПУЛЬСОВ | ||
| RSI Active | true | Включает фильтр подтверждения импульса RSI. Отключить, чтобы разрешить сигналы независимо от положения RSI. |
| Длина RSI | 14 | Период для расчета RSI. |
| Память горячей зоны | 50 | Количество баров, на которые нужно оглянуться, чтобы проверить, был ли RSI выше Hot Level. Для сигнала на продажу необходимо, чтобы хотя бы один бар в этом окне был выше уровня RSI. |
| Память холодной зоны | 50 | Количество баров для просмотра назад при проверке того, был ли RSI ниже Cold Level. Для сигнала на покупку необходимо, чтобы хотя бы один бар в этом окне был ниже холодного уровня RSI. |
| Горячий уровень RSI | 70 | Порог RSI, выше которого импульс считается перекупленным. Используется как фильтром, так и оценщиком уверенности. |
| Холодный уровень RSI | 30 | Порог RSI, ниже которого импульс считается перепроданным. |
| ГРУППА 4 - АНАЛИЗ ПОТОКОВ | ||
| Глубина выборки | 3 | Количество последних баров, объем которых усредняется для формирования базовой линии для проверки на всплеск. |
| Порог всплеска | 1.2 | Текущий объем бара должен превышать это кратное значение среднего объема, чтобы фильтр всплесков прошел. |
| Требовать всплеска | false | Если значение равно true, то всплеск объема обязателен для любого сигнала. Если false, проверка на всплеск носит только рекомендательный характер и не блокирует сигналы. |
| ГРУППА 5 - КАЧЕСТВО СИГНАЛА | ||
| Только ключевые уровни | false | Если значение true, сигналы ограничиваются разворотными точками, которые квалифицируются как основные структурные уровни на основе порога Key Level Depth. |
| Глубина ключевого уровня (xATR) | 4.5 | Минимальный диапазон колебаний в единицах ATR, необходимый для классификации разворота как основного уровня. |
| ГРУППА 6 - ГЛАВНЫЙ ЦИФЕРБЛАТ | ||
| Реактивность (1-20) | 10 | Глобальный регулятор чувствительности. Более низкие значения делают сигнальный механизм менее реактивным на ценовые колебания, уменьшая шум, но и снижая чувствительность. Более высокие значения повышают чувствительность. |
| Микропакетная обработка | true | Включает подсистему микропартийного обучения, которая группирует последние сигнальные результаты и смешивает рекомендации по параметрам на уровне партии с результатами работы оптимизатора. |
| Датчик давления в реальном времени | true | Включает отслеживание давления на тиках в реальном времени. Датчик накапливает давление на покупку и продажу в пределах каждого бара и передает его в классификатор режимов. |
| ГРУППА 7 - МЕХАНИЗМ АВТОНАСТРОЙКИ | ||
| Включить автонастройку | true | Главный переключатель для системы автоподстройки. При отключении ширина полосы и период сглаживания остаются фиксированными на своих входных значениях. |
| Использовать матрицу фонового тестирования | true | Включает систему фоновых тестов, которая молча отслеживает гипотетические результаты торговли при различных комбинациях параметров для информирования оптимизатора. |
| Привязать огибающую к базе | true | При значении true полосы графика (то, что вы видите на графике) привязываются к входному значению Band Width. При этом движок сигнала по-прежнему использует адаптивные параметры. |
| ГРУППА 8 - ОПТИМИЗАТОР | ||
| Optimizer Enable | true | Главный переключатель для оптимизатора параметров. При отключении пять адаптивных параметров остаются на своих начальных значениях. |
| Размер шага | 0.25 | Скорость обучения для обновления параметров. Меньшие значения дают более стабильную, но медленную адаптацию. Большие значения реагируют быстрее, но могут осциллировать. |
| Глубина истории | 30 | Количество последних торговых результатов, используемых в окне скользящей статистики для расчета коэффициентов Шарпа, Сортино и выигрыша. |
| Потолок выигрыша | 0.62 | Если скользящий коэффициент выигрыша поднимается выше этого значения, оптимизатор увеличивает множитель ATR, чтобы снизить частоту сигналов и ловить только высококачественные сетапы. |
| Потолок выигрыша | 0.38 | Если скользящий коэффициент выигрыша падает ниже этого значения, оптимизатор уменьшает множитель ATR, чтобы стать более отзывчивым и восстановить импульс. |
| Нормализовать доходность по ATR | true | Делит PnL сделки на ATR в момент сигнала перед сохранением в массиве скользящих доходностей. Это делает коэффициенты Шарпа и Сортино сопоставимыми в разных режимах волатильности. |
| Сглаживание моментов | 0.35 | Альфа EMA применяется к градиенту оптимизатора перед добавлением к каждому параметру. Сглаживает чрезмерную реакцию на одну сделку. |
| Охлаждение обновления (бары) | 3 | Минимальное количество баров между циклами обновления параметров. Предотвращает срабатывание оптимизатора на каждом баре. |
| Ширина мертвой зоны | 0.01 | Изменения параметров, меньшие, чем эта доля от текущего значения, подавляются. Предотвращает микрорегулировки, вызванные шумом. |
| Период мертвой зоны | 0.25 | Дробный период, используемый при расчете затухания мертвой зоны наряду с шириной мертвой зоны. |
| Ширина шага квантования | 0.05 | Шаг квантования для обновления множителя Band Width. Округляет предлагаемые значения до ближайшего кратного этого шага. |
| Quant Step Guard | 0.02 | Шаг квантования для адаптивного множителя расстояния до остановки. |
| Quant Step Target | 0.02 | Шаг квантования для адаптивного множителя take-profit. |
| Quant Step Edge | 0.01 | Шаг квантования для адаптивного буфера отбоя. |
| Интервал возврата якоря | 200 | Через столько баров все адаптивные параметры возвращаются к своим входным значениям якоря на величину доли Anchor Revert Strength. Предотвращает долгосрочный дрейф. |
| Anchor Revert Strength | 0.01 | Фракция разрыва между текущим адаптивным значением и значением якоря, которая закрывается при каждом событии возврата. |
| PnL Cap per Trade | 750.0 | Симулированные значения PnL, превышающие эту абсолютную сумму в USD, ограничиваются перед сохранением в массиве скользящего возврата. Предотвращает искажение статистики оптимизатора экстремальными значениями. |
| ГРУППА 9 - ЗАЩИТА ОТ РИСКА | ||
| Максимальное количество входов за сессию | 20 | Максимальное количество сигнальных стрелок, которые могут быть построены за один торговый день. Сбрасывается в начале каждого нового дня. |
| Session Loss Limit USD | -1000.0 | Если PnL симулируемой сессии опускается ниже этого значения, дальнейшие сигналы не строятся до конца дня. |
| Базовая пауза после убытка | 5 | Минимальное количество баров, которое необходимо выждать после убыточного сигнала, прежде чем разрешить новый сигнал. Расширяется за счет Dynamic Cooldown, когда включено. |
| Предел полосы | 3 | Максимальное количество последовательных убыточных сигналов, после которых торговля будет остановлена до конца сессии. |
| Масштабировать паузу по размеру убытка | true | При значении true пауза после убытка увеличивается пропорционально размеру убытка относительно ATR. При больших убытках пауза увеличивается. |
| ГРУППА 10 - КОНТЕКСТНАЯ ПАМЯТЬ (СЕТКА РЕЖИМОВ) | ||
| Включить режимную сетку | true | Включает двухмерную сетку контекстной памяти, которая хранит статистику производительности для каждой ячейки режима/волатильности и объединяет их рекомендации в показатель уверенности. |
| Бинсы режимов | 8 | Количество бакетов вдоль оси режимов сетки. Большее количество бакетов обеспечивает более тонкое разрешение контекста ценой более медленного заполнения ячеек. |
| Ячейки волатильности | 8 | Количество бакетов вдоль оси волатильности сетки. |
| Радиус смешивания соседей | 0.8 | Сигма гауссова ядра, используемого для сглаживания рекомендаций соседних ячеек сетки. Большие значения сглаживают больше ячеек, меньшие значения делают каждую ячейку более независимой. |
| Период полураспада (сделок) | 50 | Количество сделок, после которых накопленная статистика ячейки сетки уменьшается до половины своего влияния. Контролирует, как быстро забывается старая рыночная память. |
| Confidence Ramp (трейды) | 20 | Минимальное количество сделок, которое должна накопить ячейка сетки, прежде чем ее рекомендация уверенности достигнет полного веса. |
| Максимальное влияние сетки | 0.65 | Максимальная доля, на которую сетка режима может регулировать выход оптимизатора. Ограничивает полномочия сетки, чтобы она не могла полностью переопределить оптимизатор. |
| Vol Ratio Ceiling | 2.5 | Максимальный коэффициент волатильности, используемый при нормализации оси волатильности для разбиения сетки. Значения, превышающие это значение, зажимаются в верхнем бине. |
| ГРУППА 11 - ТРАССИРОВКА РАСПАДА | ||
| Включить буфер трассировки | true | Включает буфер трассировки кратковременной памяти, который сохраняет последние результаты сигнала в виде записей энергии распада для оптимизатора. |
| Глубина буфера | 30 | Максимальное количество записей трассировки распада, хранящихся в памяти одновременно. |
| Скорость затухания на бар | 0.02 | Доля, на которую уменьшается энергия каждой записи трассы на каждом новом баре. Запись с энергией ниже минимального порога удаляется из буфера. |
| Интервал слияния (бары) | 200 | Через каждые столько баров записи трасс с похожими профилями режима и волатильности объединяются, чтобы уменьшить фрагментацию буфера. |
| Порог неблагоприятного движения | 0.8 | Максимальное неблагоприятное движение в единицах ATR, при превышении которого запись трассировки помечается как хвостовое событие. Записи с хвостовыми флагами оказывают повышенное влияние на параметр расстояния остановки оптимизатора. |
| Guard Tighten Cap | 0.02 | Максимальное дробное значение, на которое может быть ужесточен множитель адаптивной остановки за один цикл работы оптимизатора в ответ на записи трассы с хвостовыми флагами. |
| ГРУППА 12 - ПРЕДУПРЕЖДЕНИЯ | ||
| Всплывающее оповещение о сигнале | true | Отправляет всплывающее диалоговое окно оповещения MetaTrader при появлении новой сигнальной стрелки на живом баре. |
| Push-уведомление по сигналу | false | Отправляет push-уведомление в мобильное приложение MetaTrader при появлении нового сигнала. Требуется, чтобы push-уведомления были настроены в настройках MetaTrader. |
| Оповещать один раз за бар | true | Предотвращает повторные оповещения, когда индикатор пересчитывается на одном и том же баре из-за новых входящих тиков. |
| ГРУППА 13 - ОТОБРАЖЕНИЕ | ||
| Guard xATR | 1.00 | Множитель ATR, используемый для расчета симулированного расстояния стоп-лосса для отслеживания PnL на приборной панели и расчетов Risk Guard. |
| Target xATR | 2.00 | Множитель ATR, используемый для расчета моделируемого расстояния тейк-профита при отслеживании PnL на приборной панели. |
| Edge Buffer xATR | 0.20 | Дополнительный буфер ATR, добавляемый за пределы стопа или целевого уровня в режиме прорыва для учета спреда и проскальзывания при моделировании PnL. |
| Sim Position USD | 1000.0 | Размер условной позиции в долларах США, используемый для всех расчетов симуляции PnL на приборной панели и в Risk Guard. Не влияет на реальную торговлю. |
| Показать информационную панель | true | Включает многоколоночную информационную таблицу, отображающую состояние тренда, коэффициенты выигрыша, коэффициенты Шарпа/Сортино, доверительный балл и статус Risk Guard. |
Примечание: Данный индикатор предоставляется в образовательных и аналитических целях. Подсистемы машинного обучения адаптируются к историческим ценовым данным и не гарантируют будущих результатов. Перед использованием в реальной торговле всегда проверяйте индикатор на демо-счете. Моделируемые показатели PnL, отображаемые на приборной панели, основаны на предположениях с масштабированием ATR и не отражают реальных условий исполнения брокером.
| Имя файла | Описание |
|---|---|
| ML_SuperTrend.mq5 | Полный исходный код индикатора ML SuperTrend (v10.02) |
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/72110
XANDER Adaptive Cross
Две адаптивные скользящие средние, которые по-разному читают рынок. Пересечения сигнализируют о смене тренда.
Gold FVG Finder
Индикатор находит зоны имбаланса (Fair Value Gap) на графике и сигнализирует стрелкой, когда цена возвращается к ним. Подходит для Gold, Forex и любых ликвидных инструментов на таймфреймах от M5 до H4.
YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя
Скрипт рисует уровни Рудолфа Акселя
YURAZ_MCCH
Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.
