Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 59
- Рейтинг:
- Опубликован:
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Данный советник представляет собой мультистратегическую систему, разбитую на четыре независимые торговые подсистемы (от Цикла 1 до Цикла 4). Каждый цикл работает со своим собственным «магическим номером», индикаторами, триггерами входа и уникальными параметрами управления капиталом.
1. Логика цикла 1: совокупность нескольких индикаторов
Цикл 1 основан на комбинированном фильтре, объединяющем до трёх скользящих средних (MA), индекс относительной силы (RSI) и процентный диапазон Уильямса (WPR).
Сигналы входа
Основная переменная c1_signal действует как двоичный регистр, обеспечивающий отсутствие конфликтов между индикаторами. Если индикатор A подает сигнал на покупку, c1_signal принимает значение 1. Если затем индикатор B подает сигнал на продажу, c1_signal сбрасывается в 0, чтобы аннулировать сделку.
-
Скользящие средние 1, 2 и 3:
-
Условие покупки: предыдущий бар закрывается выше скользящей средней, а текущий бар открывается выше скользящей средней ($Close[1] > MA$ и $Open[0] > MA$).
-
Условие для продажи: предыдущий бар закрывается ниже скользящей средней, а текущий бар открывается ниже скользящей средней ($Close[1] < MA$ и $Open[0] < MA$).
-
-
Фильтр RSI:
-
Условие покупки: RSI опускается ниже порога перепроданности ( RSI_Buy_Level , например, 30).
-
Условие продажи: RSI поднимается выше уровня перекупленности (RSI_Sell_Level, например, 70).
-
-
Фильтр WPR:
-
Условие покупки: WPR опускается ниже уровня WPR_Buy_Level (например, -80).
-
Условие продажи: WPR поднимается выше уровня WPR_Sell_Level (например, -20).
-
Обработка сигналов
-
Правило обратных сигналов: если Reverse_Signals = true, то окончательный сигнал на покупку (1) меняется на сигнал на продажу (2) и наоборот.
-
Ограничение «Одна сделка на бар»: советник проверяет, совпадает ли текущая цена открытия с c1_open_price. Если да, значит, на этом баре позиция уже была открыта, и дальнейшие исполнения блокируются до открытия нового бара.
2. Логика цикла 2: следование за трендом с использованием огибающих
В цикле 2 используется классический двухполосный индикатор «Огибающие» для выявления структурных прорывов рынка.
-
Триггер на покупку: предыдущий бар закрывается выше верхней полосы «Envelopes», а текущий бар открывается выше неё ($Close[1] > UpperBand$ и $Open[0] > UpperBand$). Это предполагает прорыв с сильным бычьим импульсом.
-
Триггер на продажу: предыдущий бар закрывается ниже нижней полосы огибающей, а текущий бар открывается ниже нее ($Close[1] < LowerBand$ и $Open[0] < LowerBand$), что указывает на медвежий прорыв вниз.
-
Переключение сигналов: если Reverse_Signals2 = true, прорывы преобразуются в ложные сигналы (прорыв вниз/вверх игнорируется).
3. Логика цикла 3: возврат к среднему значению по огибающим
Цикл 3 отслеживает те же параметры, что и Цикл 2, но меняет по умолчанию исходную логику исполнения на ориентацию на возврат к среднему значению (сглаживание экстремумов).
-
Триггер на покупку: предыдущий бар закрывается выше верхней полосы огибающей, а текущий бар открывается выше неё. Логика: код выдает здесь сигнал на продажу, поскольку предполагает, что актив перекуплен и откатится внутрь полос.
-
Триггер на продажу: предыдущий бар закрывается ниже нижней полосы огибающей, а текущий бар открывается ниже нее. Логика: код выдает здесь сигнал на покупку, делая ставку на немедленный отскок из зоны перепроданности.
4. Логика цикла 4: прорыв по расстоянию от точки к ленте
Цикл 4 вводит в индикатор «Огибающие» жесткое ограничение по волатильности/расстоянию в пунктах, действуя как агрессивная система прорыва.
-
Триггер на покупку: расстояние между нижней полосой огибающей и предыдущим закрытием превышает значение Distance в пунктах, И расстояние между нижней полосой огибающей и текущей ценой Bid также превышает значение Distance ($LowerBand - Close[1] > Distance$ и $LowerBand - Bid > Distance$).
-
Триггер на продажу: расстояние между предыдущим ценовым закрытием и верхней полосой, а также расстояние между текущей ценой Bid и верхней полосой превышают значение «Расстояние» ($Close[1] - UpperBand > Distance$ и $Bid - UpperBand > Distance$).
5. Выход, закрытие корзины и логика управления рисками
Архитектура управления выходом из позиции не использует стандартные ордера стоп-лосс (SL) или тейк-профит (TP) для каждой позиции. Вместо этого она опирается на глобальную систему отслеживания корзины собственного капитала счета, сопоставленную по циклам.
Фиксация контрольных точек
Когда количество позиций в цикле изменяется с 0 на 1 (отслеживается по c1_Buycount == 0 или c1_Sellcount == 0), советник фиксирует точный базовый капитал торгового счёта на данный момент:
Используя эту базовую величину, он определяет статические глобальные целевые значения для данного конкретного направления торговли:
-
Цель «Тейк-профит»: если указана величина target_amount, назначается значение $\text{Базовый капитал} + \text{target\_amount}$. В противном случае используется формула с процентами:
$$\text{Целевая цена} = \text{Базовый капитал} + \left(\frac{\text{Базовый капитал} \times \text{target\_percent}}{100}\right)$$ -
Цель стоп-лосса: использует ограничение в виде процентной просадки относительно собственного капитала на момент создания моментального снимка:
$$\text{Цена риска} = \text{Базовая} - \left(\frac{\text{Базовая} \times \text{Account\_Risk\_percent}}{100}\right)$$
Проверка динамической корзины
При каждом тике советник рассчитывает текущую сумму плавающей прибыли/убытка в режиме реального времени, свопов и комиссий для всех активных позиций, соответствующих «магическому номеру» данного цикла и типу сделки ( MyAccountProfit_Buy или MyAccountProfit_Sell ).
Выполнение выхода
Если $\text{Текущая стоимость портфеля} \ge \text{Целевая цена}$ (достижение целевой прибыли) ИЛИ $\text{Текущая стоимость портфеля} \le \text{Цена риска}$ (превышение максимального порога риска):
-
Советник вызывает функцию ClosePositions().
-
Он проходит по всем рыночным позициям в обратном порядке, фильтруя их по совпадающему «магическому номеру» и типу позиции.
-
Каждая коррелирующая сделка мгновенно ликвидируется с помощью рыночного ордера.
-
Счетчик цикла направления сбрасывается на 0, что позволяет советнику создать совершенно новый эталонный снимок при следующем сигнале структурного индикатора.
6. Логика определения размера позиции (управление капиталом)
Расчеты объема выполняются динамически с помощью процедуры getLots(int cycle):
-
Фиксированный размер лота: если параметр AutoLots имеет значение false, возвращается базовый жестко заданный размер лота (например, LotSize = 0,01).
-
Динамическое масштабирование риска: если AutoLots = true, система автоматически корректирует объем сделки с учетом свободной маржи:
-
С помощью функции OrderCalcMargin запрашивается точная маржа, необходимая для совершения стандартной сделки объемом 1,0 лота по текущему активу.
-
Она прогнозирует допустимый инвестиционный потенциал по формуле:
$$\text{Прогнозируемый объём} = \frac{\text{AccountFreeMargin} \times \left(\frac{\text{Lots\_Risk}}{100}\right)}{\text{Маржа на 1,0 лот}}$$ -
Окончательный результат ограничивается установленными брокером ограничениями с помощью MathMin и MathMax, чтобы гарантировать, что он точно попадает в допустимый диапазон между SYMBOL_VOLUME_MIN и SYMBOL_VOLUME_MAX, аккуратно округляясь до ближайшего шага актива биржи (SYMBOL_VOLUME_STEP).
-
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/74818
KCI Volatility Distance
Показатель «KCI Volatility Distance» представляет собой передовой адаптивный алгоритм, тщательно разработанный для максимально точного отражения рыночного импульса и направления тренда. Используя запатентованный метод расчёта на основе матриц, этот инструмент динамически отфильтровывает рыночный шум и предоставляет строго количественную оценку силы тренда. Основанный на высокооптимизированном ядре объектно-ориентированного программирования (ООП), он разработан как для наглядного отображения торговых сигналов, так и для беспроблемной интеграции в советники или модули машинного обучения, обеспечивая минимальную нагрузку на процессор при работе с множеством активов.
Double Enevlopes (Historical Gauged)
Инструмент и система для управления бизнесом по уходу за детьми :D
MA + Envelope Breakouts
Прорывы на основе канала или полосы огибающей, логика нескольких советников в одном советнике
YURAZ_MCCH
Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.

