Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Any Indicator Alert - alerts, push notifications and multi-timeframe for any custom indicator, no source code needed - индикатор для MetaTrader 5
- Просмотров:
- 35
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Две самые популярные темы на этом форуме — «Индикаторы с оповещениями/сигналами» и «Многотаймфреймовые индикаторы». Они остаются открытыми даже спустя годы, потому что ответ всегда один и тот же: найдите исходный код, отредактируйте его, перекомпилируйте. Это не поможет, если у вас есть файл .ex5, но нет исходного кода, и этот подход не подходит, если вы используете несколько индикаторов.
Этот инструмент решает проблему извне. iCustom может загружать любой индикатор по имени и считывать его буферы без исходного кода, поэтому один инструмент может обслуживать все индикаторы.
Начните в режиме EXPLORE
Причина, по которой люди избегают iCustom, заключается в том, что ему требуется номер буфера, а нигде не указано, какой именно номер соответствует тому, что вы видите на графике. Поэтому режим по умолчанию сначала решает эту проблему. Он просматривает буферы, подсчитывает, что находится в каждом из них, и выводит эту информацию рядом с последними несколькими свечами.
Буфер, в котором почти на каждом баре есть значение, представляет собой линию, поэтому используйте пересечение уровня или пересечение со вторым буфером. Буфер, который пуст, за исключением тех мест, где индикатор что-то нарисовал, является сигналом, поэтому используйте формулировку «появляется значение». Считайте номер из таблицы, переключитесь в режим WATCH и выберите триггер.
Пример того, что выводит EXPLORE
Это реальный запуск на реальном графике XAUUSDm H1 с наблюдением за стандартным RSI. Каждый буфер индикатора перечисляется с указанием, в скольких из проанализированных баров есть реальное значение, в скольких значение равно нулю, а в скольких буфер пуст, после чего следуют сами значения по каждому бару.
Buffers found: 3 (checked up to 16, on XAUUSDm PERIOD_H1)
------------------------------------------------------------------
buffer values zeros blank what it looks like range of the values
0 12 0 0 a line - a value on almost every bar 31.47608 .. 55.28984
1 12 0 0 a line - a value on almost every bar 4.11585 .. 6.11288
2 12 0 0 a line - a value on almost every bar 3.86003 .. 8.96028
------------------------------------------------------------------
bar time buf0 buf1 buf2
0 2026.09.04 20:00 45.61107 5.40493 6.44511
1 2026.09.04 19:00 46.88624 5.82069 6.59381
2 2026.09.04 18:00 43.33095 5.42967 7.10102
3 2026.09.04 17:00 40.80179 5.27080 7.64725
------------------------------------------------------------------
Read it like this: the buffer that is empty on most bars and carries a value
only where the indicator drew its signal is the one to watch. Put its number
in 'Buffer to watch', set Mode to WATCH, and pick a trigger.
A buffer that has a value on every bar is a line - use a level or buffer cross.
Здесь все три буфера представлены линиями — именно таким и является RSI. На индикаторе со стрелками или сигналами таблица выглядит иначе, и в этом различии и заключается весь смысл:
buffer values zeros blank what it looks like range of the values
0 0 0 8 nothing here on these bars -
11 8 0 0 a line - a value on almost every bar 16.08798 .. 16.25192
14 7 1 0 sparse - looks like a signal 4166.06000 .. 4166.06000Здесь следует обратить внимание на буфер 14. На большинстве баров он пуст и содержит цену только там, где индикатор что-то отметил, поэтому «появление значения» является триггером для него. Буфер 11 — это внутренняя линия, а буфер 0 на этих барах вообще ничего не содержит.
Задержки значений и перерисовки — это не одно и то же, поэтому они учитываются отдельно
Значение каждого закрытого бара сохраняется и считывается заново на каждом новом баре. Когда значение закрытого бара изменилось, это может быть вызвано двумя совершенно разными причинами.
Задержка значения. Бар был пустым, а теперь содержит значение. Индикатору потребовались более поздние бары, прежде чем он смог отметить этот. Фракталы по своему замыслу работают именно так, как и большинство маркеров свинг-торговли и структурных маркеров. Это не обман, но означает, что сигнал никогда не был виден на том баре, на который он указывает, и это имеет значение, если вы оцениваете стратегию на глаз.
Перерисовка. Значение, которое там было, сместилось или исчезло. То, на основании чего вы могли бы действовать, больше нет.
Оба явления фиксируются с указанием времени бара, старого и нового значений, а в комментарии к графику ведётся текущий подсчёт каждого из них. Никаких выводов из формирующегося бара не делается, поскольку его изменение — это нормальное явление.
Это различие было проверено на практике, а не просто заявлено. На графике XAUUSD H1, 299 баров, с 1 по 20 августа 2026 года, при наблюдении за буфером 0 каждого индикатора:
| Наблюдаемый индикатор | Задержка значений | Перерисовки |
|---|---|---|
| Примеры\Фракталы: отмечают бар через два бара после его закрытия | 40 | 0 |
| Примеры\ZigZag, по замыслу перерисовывает последний отрезок | 0 | 83, каждое значение исчезло |
| Примеры\RSI, значение рассчитывается после закрытия бара | 0 | 0 |
Таким образом, термин «late» (запаздывающий) применяется к индикатору, который отстает, «repaint» (перерисовывающийся) — к индикатору, который перерисовывается, а к индикатору, который не делает ни того, ни другого, ничего не говорится. В том же прогоне триггер уровня сработал дважды при пересечении RSI ниже 30 — на отметках 28,38 и 29,21; основная линия MACD пересекла сигнальную линию сверху девять раз и снизу — девять раз; а показания RSI с H4 на графике H1 генерировали по одному сигналу на каждый бар H4 (всего 77 сигналов), каждый из которых был помечен как PERIOD_H4. Также был проведён тест в сочетании со сторонним индикатором Smart Money Concepts объёмом 157 КБ, в ходе которого было обнаружено 16 буферов и выделены три внутренние линии из двух разреженных сигнальных буферов.
Триггеры
Значение появляется на свече — будь то на только что закрывшейся свече или, в случае запаздывающего индикатора, на более ранней свече, которую он только что отметил; пересечение уровня сверху или снизу; пересечение одного буфера другим в любом направлении; или просто изменение значения. Оповещения выводятся в виде всплывающего окна, звукового сигнала, push-уведомления или электронного письма — по одному на каждый бар. По умолчанию анализируются только закрытые бары. Если отключить эту функцию, формирующийся бар будет анализироваться при каждом тике, что позволяет получать оповещения раньше и учитывать возможные развороты, при этом в любом случае выдается одно оповещение на каждый бар.
Более высокий таймфрейм
Установите параметр «Читать на этом таймфрейме», и отслеживаемый индикатор будет загружаться на этом таймфрейме вместо таймфрейма графика. Бар, триггеры и проверка перерисовки будут следовать за ним.
Два практических примера
Пример 1 — сообщите, когда RSI пересечёт отметку 70 вверх. Вы знакомы с этим индикатором, поэтому функция EXPLORE служит лишь для проверки.
| Входные данные | Значение |
|---|---|
| Файл индикатора | Примеры\RSI |
| Его входные данные | 14 |
| Читать на этом таймфрейме | Текущий таймфрейм |
| Режим | СЛЕДИТЬ |
| Буфер для просмотра | 0 |
| Триггер | буфер пересекает уровень сверху |
| Уровень | 70 |
| Всплывающее предупреждение | true |
На тестовых данных, которые сгенерировали четыре оповещения, при значениях 75,04, 76,31, 70,38 и 74,83. Чтобы получить те же результаты на четырехчасовом графике, работая с часовым, установите для параметра «Прочитать на этом таймфрейме» значение H4 и ничего больше не меняйте.
Пример 2 — индикатор со стрелками, который вы скачали и у которого нет источника. Здесь основную работу выполняет EXPLORE.
- Прикрепите индикатор, установив режим «EXPLORE» и указав в поле «Файл индикатора» его название. Оставьте поле «Его входные данные» пустым, чтобы использовать собственные значения по умолчанию.
- Откройте «Панель инструментов», вкладку «Эксперты» и найдите буфер, который является разреженным — пустым на большинстве баров, но содержит значение, при котором на графике появляется стрелка. Допустим, это буфер 2.
- Подключите его снова, установив режим WATCH, указав буфер для наблюдения 2, триггер «появляется значение» и включив push-уведомления.
- Если EXPLORE вывел сообщение о том, что буфер в основном состоит из точных нулей, включите параметр «Этот индикатор записывает 0 там, где это ничего не означает» и ещё раз ознакомьтесь с таблицей, прежде чем делать выбор.
Что делает каждый входной параметр
| Параметр | Функция |
|---|---|
| Файл индикатора | Путь в папке MQL5\Indicators без расширения. Один обратный слэш, например, Examples\RSI или MyFolder\MyArrows. Поле намеренно пустое — нет такого индикатора, который обязательно был бы в каждом терминале, — и ничего не произойдет, пока вы его не заполните. |
| Его входные данные | Собственные входные данные наблюдаемого индикатора, разделенные запятыми, в том порядке, в котором они объявлены. Пустое поле означает использование значений по умолчанию. Целые числа передаются как int, числа с точкой — как double, true и false — как bool, всё остальное — как текст. В журнале выводится информация о том, какие значения были выбраны, чтобы вы могли это проверить. |
| Прочитать на этом таймфрейме | Загрузить наблюдаемый индикатор на этот таймфрейм вместо таймфрейма графика. Под «текущим таймфреймом» подразумевается таймфрейм самого графика. |
| Этот индикатор записывает 0 там, где это означает «ничего» | Рассматривать точное значение 0 как пустое. Необходимо для таких индикаторов, как ZigZag. Функция EXPLORE подскажет, когда стоит включить этот параметр. |
| Режим | EXPLORE отображает список буферов и не выдает сигналов. WATCH выдает сигналы по выбранному вами буферу. |
| Сколько буферов проверять | Режим EXPLORE останавливается на этом месте. Увеличьте это значение, если в примечании указано, что достигнут предел. |
| Количество последних тактов для отображения | Количество тактов, которые EXPLORE отображает и подсчитывает. |
| Буфер для наблюдения | Номер буфера, который вы прочитали в таблице EXPLORE. |
| Второй буфер | Используется только двумя триггерами пересечения буферов. |
| Триггер | Появляется значение, пересечение выше или ниже уровня, пересечение буфера A буфером B в любом направлении или просто изменение значения. |
| Уровень | Используется только двумя триггерами пересечения уровня. |
| Оценивать только закрытые бары | Включено по умолчанию: одно определение при закрытии бара, и оно не может быть отменено. Выключено означает, что формирующийся бар оценивается при каждом тике, что позволяет получить сигнал раньше, но может привести к отмене сигнала. |
| Всплывающее окно, звук, push-уведомление, электронная почта | Способы уведомления. Любая комбинация. Для push-уведомлений необходимо указать ваш MetaQuotes ID в меню «Инструменты», «Настройки», «Уведомления». |
| Повторное считывание закрытых баров и сообщение об изменениях | Включает отчеты о запоздалых значениях и перерисовке. |
| Количество закрытых баров, которые следует отслеживать | На какой период назад проверяется история. Изменения, произошедшие ранее этого периода, не учитываются. |
| Игнорировать изменения, меньшие, чем это значение | Оставьте значение 0, чтобы фиксировать каждое изменение. Увеличьте его, если индикатор «дрожит» на последнем знаке после запятой. |
Три момента, которые зачастую сбивают с толку, и как с ними справиться
Некоторые индикаторы записывают просто «0» там, где они имеют в виду «здесь ничего нет», вместо EMPTY_VALUE. ZigZag — один из них. При поверхностном прочтении такой буфер выглядит как сплошная строка нулей. Для этого предусмотрен соответствующий параметр, и EXPLORE выводит предупреждение, когда буфер состоит преимущественно из нулей с несколькими реальными значениями, чтобы вы могли принять решение. Умышленно не делается никаких предположений: осциллятор, который действительно находится на нуле, снаружи выглядит точно так же.
Бар, который индикатор ещё не записал, интерпретируется как ровно 0,0. Именно это терминал помещает в только что сформированный буфер, а запаздывающий индикатор специально оставляет свои самые новые бары в таком виде, пока не получит необходимые более поздние бары. Фракталы никогда не затрагивают свои последние трибара. При поверхностном прочтении каждый из этих баров впоследствии «меняется», и первая версия этого инструмента фиксировала триста перерисовок для индикатора, у которого их нет. Бар, переходящий от значения 0,0 к пустому значению, теперь рассматривается как инициализация, а от 0,0 к какому-либо значению — как запоздалое поступление данных.
Группа входов занимает слот позиционного параметра. Если вы вызываете этот индикатор из собственного кода с помощью iCustom или IndicatorCreate, шесть меток групп необходимо учитывать наряду с реальными входными данными в виде строк, иначе обработка дескриптора завершится с ошибкой 4002. Это было измерено, а не предположено. Буфер 0 содержит значение наблюдаемого буфера, поэтому ваш советник может считывать его вместо повторения наладочных операций; это было проверено на наблюдаемом RSI на 299 из 299 баров.
Если указанный вами индикатор не может быть загружен — из-за опечатки или того, что файл ещё не скомпилирован — он не отсоединяется. Об этом появляется сообщение на графике и в журнале экспертов, и попытки загрузки повторяются каждые несколько секунд, поэтому достаточно просто исправить название.
Чего он не делает
Он считывает буферы индикаторов. Индикатор, который рисует только с помощью объектов графика, не предоставляет доступа к буферам, и этому инструменту нечего здесь считывать. Ничто вне индикатора не может это изменить.
«Перерисовки не наблюдались на протяжении 200 баров» — это наблюдение, касающееся именно этих баров, а не гарантия в отношении каждого бара, который когда-либо сформируется. Это свидетельство, и оно лучше, чем заявления, которые обычно сопровождают большинство индикаторов, но это не доказательство. Проверка охватывает количество закрытых баров, которое вы указали в параметре «Сколько закрытых баров отслеживать»; изменения, произошедшие раньше этого момента, не учитываются.
Он не может объяснить вам, что означает буфер. Он покажет вам, что буфер 3 содержит значение 1,0 на четырнадцати барах; решать, является ли это сигналом на покупку, вам.
Индикатор, который подает сигнал со значением ровно 0,0, не вызовет срабатывания сообщения «появилось значение», поскольку это показание еще не сформировавшегося бара. Буферы сигналов содержат цену или флаг, но никогда не принимают значение 0,0, поэтому на практике это ничего не стоит, но это правило, и вам следует его знать.
Буфер 0 отражает наблюдаемый буфер только в том случае, если наблюдаемый таймфрейм совпадает с таймфреймом самого графика. Наложение более высокого таймфрейма на каждый бар графика — это отдельная задача, и она не реализуется.
Сами каналы оповещений — всплывающие окна, звук, push-уведомления и электронная почта — представляют собой по одному вызову каждый и не проверялись в Тестере стратегий, который их не доставляет. Все, что инструмент решает до этого вызова, было проверено.
Как установить
- Скопируйте файл AnyIndicatorAlert.mq5 в папку MQL5\Indicators в папке данных вашего терминала. В MetaTrader перейдите в меню «Файл», затем выберите «Открыть папку данных», чтобы перейти туда.
- Откройте файл в MetaEditor и нажмите F7. Должно быть указано 0 ошибок и 0 предупреждений.
- Вернувшись в терминал, нажмите Ctrl+N, чтобы открыть «Навигатор», откройте раздел «Индикаторы» и перетащите AnyIndicatorAlert на график. Если его нет в списке, щелкните правой кнопкой мыши в «Навигаторе» и выберите «Обновить».
- Заполните поле «Файл индикатора» — изначально оно пустое — оставьте режим «EXPLORE» и нажмите «ОК». Для начала попробуйте файл Examples\RSI.
- Нажмите Ctrl+T, чтобы открыть панель инструментов, и перейдите на вкладку «Эксперты». Там находится таблица буферов.
Написано и проверено в MetaTrader 5, сборка 6140. Он не размещает ордеров и ничего не изменяет.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/77003
SuperTrend TV EA
Советник, торгующий по индикатору SuperTrend TV через iCustom исключительно по закрытым свечам; в комплект входит отчет, подтверждающий, что каждая сделка соответствует сигналу и ни один сигнал не был пропущен
GridCapitalCalculator
Каждый, кто использует сетку, задается вопросом: достаточно ли велик мой счет? Обычный ответ — убыток на последнем уровне сетки — является неверным показателем. Причиной закрытия счета становится достижение уровня маржи, при котором брокер активирует стоп-аут, в то время как цепочка позиций по-прежнему открыта и, на первый взгляд, ситуацию ещё можно исправить. Этот советник вычисляет реальную цифру, а затем подсчитывает, как часто движение такой величины уже происходило в истории данного инструмента на таймере M1. Он исправляет три ошибки, все из которых связаны с излишним оптимизмом: цепочка из N участков находится в открытом состоянии на шаге x N(N-1)/2, а не на шаге x N (например, при 10 участках — на 45 шагах убытка, а не на 10); открытые позиции также блокируют маржу, пока они находятся в открытом состоянии; и стоп-аут выражается в процентах, а не равен нулю — при 50 % достаточно потерять половину собственного капитала. «Вам нужно 86 долларов свободного капитала» — это абстракция. ««Движение такого размера происходило 71 раз за 100 дней, то есть раз в 1,4» — это решение. Установите InpEquity на величину, которой у вас ещё нет, чтобы увидеть, что действительно потребуется для данной конфигурации. Строго только для чтения: он никогда не открывает, не закрывает и не изменяет позицию.
YURAZ_RSAXEL Скрипт рисует уровни Рудолфа Акселя
Скрипт рисует уровни Рудолфа Акселя
YURAZ_MCCH
Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.