Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Просмотров:
59
Рейтинг:
(1)
Опубликован:
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Цикл GBPUSD1HRC4 — true неоптимизированный бэктест


Данный советник представляет собой мультистратегическую систему, разбитую на четыре независимые торговые подсистемы (от Цикла 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), советник фиксирует точный базовый капитал торгового счёта на данный момент:

$$\text{Базовый капитал} = \text{AccountInfoDouble}(\text{ACCOUNT\_EQUITY})$$

Используя эту базовую величину, он определяет статические глобальные целевые значения для данного конкретного направления торговли:

  • Цель «Тейк-профит»: если указана величина 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{Текущая стоимость портфеля} = \text{Базовый капитал} + \text{Нефиксированная прибыль/убыток}$$

Выполнение выхода

Если $\text{Текущая стоимость портфеля} \ge \text{Целевая цена}$ (достижение целевой прибыли) ИЛИ $\text{Текущая стоимость портфеля} \le \text{Цена риска}$ (превышение максимального порога риска):

  1. Советник вызывает функцию ClosePositions().

  2. Он проходит по всем рыночным позициям в обратном порядке, фильтруя их по совпадающему «магическому номеру» и типу позиции.

  3. Каждая коррелирующая сделка мгновенно ликвидируется с помощью рыночного ордера.

  4. Счетчик цикла направления сбрасывается на 0, что позволяет советнику создать совершенно новый эталонный снимок при следующем сигнале структурного индикатора.

6. Логика определения размера позиции (управление капиталом)

Расчеты объема выполняются динамически с помощью процедуры getLots(int cycle):

  • Фиксированный размер лота: если параметр AutoLots имеет значение false, возвращается базовый жестко заданный размер лота (например, LotSize = 0,01).

  • Динамическое масштабирование риска: если AutoLots = true, система автоматически корректирует объем сделки с учетом свободной маржи:

    1. С помощью функции OrderCalcMargin запрашивается точная маржа, необходимая для совершения стандартной сделки объемом 1,0 лота по текущему активу.

    2. Она прогнозирует допустимый инвестиционный потенциал по формуле:

      $$\text{Прогнозируемый объём} = \frac{\text{AccountFreeMargin} \times \left(\frac{\text{Lots\_Risk}}{100}\right)}{\text{Маржа на 1,0 лот}}$$
    3. Окончательный результат ограничивается установленными брокером ограничениями с помощью 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

Показатель «KCI Volatility Distance» представляет собой передовой адаптивный алгоритм, тщательно разработанный для максимально точного отражения рыночного импульса и направления тренда. Используя запатентованный метод расчёта на основе матриц, этот инструмент динамически отфильтровывает рыночный шум и предоставляет строго количественную оценку силы тренда. Основанный на высокооптимизированном ядре объектно-ориентированного программирования (ООП), он разработан как для наглядного отображения торговых сигналов, так и для беспроблемной интеграции в советники или модули машинного обучения, обеспечивая минимальную нагрузку на процессор при работе с множеством активов.

Double Enevlopes (Historical Gauged) Double Enevlopes (Historical Gauged)

Инструмент и система для управления бизнесом по уходу за детьми :D

MA + Envelope Breakouts MA + Envelope Breakouts

Прорывы на основе канала или полосы огибающей, логика нескольких советников в одном советнике

YURAZ_MCCH YURAZ_MCCH

Индикатор рассчитывает % роста или падения относительно CLOSE, написан с применением ООП, и легко интегрируется в любой советник или иной индикатор.